ZFSサーバーを仮想ゲストとしてホストする


23

私はまだZFSが初めてです。私はNexentaを使用していますが、OpenIndianaまたはSolaris 11 Expressに切り替えることを考えています。現在、ZFSサーバーをESXi、Hyper-V、XenServerのいずれかのゲストとして仮想化することを検討しています(VMDirectPathとFreeBSDのサポートについてはESXiにまだ傾いています)。

主な理由は、1〜3個の他のVMを同時に実行できるようにするために、十分なリソースがあるように見えることです。主にWindows Server。Linux / BSD VMでもあるかもしれません。仮想化されたZFSサーバーが他のVMのすべてのデータをホストし、それらのデータがZFSディスク(iscsiまたはnfsとしてマウント)とは物理的に別のディスクに保持されるようにしたいと思います。

サーバーには現在、合計6コア(2ロック解除)、16 GB RAM(最大)のAMD Phenom IIと、1 TB SATA IIディスク(7)が接続されたLSI SAS 1068E HBAがあります(ホットスペアを備えたRAIDZ2で計画)。また、マザーボードに(4)32GB SATA II SSDを接続しています。2つのSSDをブートミラー(仮想ホスト用)にミラーリングし、他の2つのSSDをZILおよびL2ARC(ZFS VMゲスト用)のままにしておきたいと考えています。VMゲストを格納するためにさらに2つのディスクを追加し、現在の7つのディスクすべてをZFSストレージとして割り当てます。注:マザーボードはないではない 880Gがそれをサポートしていないとして、IOMMUをサポートしているが、私はそれが大きな違いを行う場合IOMMUを持ってい890FXボードを持っています。

私の質問は:

1)これを行うのは賢明ですか?明らかにマイナス面はありません(だから他の誰もそれについて言及していないのではないかと思います)。私は巨大な監視をすることができると感じているので、私はこれにコミットすることを嫌います。

2)ZFS仮想ゲストのパフォーマンス?小さなパフォーマンスヒットを望んでいますが、VMゲストがディスクへのフルディスクアクセスを持っている場合、少なくともディスクI / Oパフォーマンスは無視できると思います(仮想化されていないZFSを実行する場合と比較して) 。VMゲストとしてZFSサーバーをホストしている経験から、これについて話すことができますか?


他のすべてのVMのデータをホストするとします。ある時点で重複排除が必要になると思いますか?その場合、重複排除は非常に多くのメモリを消費するため、これは実際に独自のマシン上にある必要があります。ZFSのニーズに合ったSmartOSのようなものを見てみませんか?そうすれば、ハイパーバイザーも入手できます。
devicenull

私は重複排除について考えましたが、当面の間は、いや、むしろそれを使いたくありません。SmartOSを調査します。聞いたことがないので、チェックしてみます。
osij2is

回答:


38

これらの「オールインワン」ZFSストレージ設定を多数作成しました。最初はUbiquitous Talkの優れた投稿に触発され、私のソリューションはハードウェア設計に対して少し異なるアプローチをとりますが、カプセル化された仮想化ZFSストレージの結果をもたらします。

質問に答えるには:

  • これが賢明なアプローチであるかどうかの判断は、本当にあなたの目標に依存します。何を達成しようとしていますか?テクノロジー(ZFS)があり、そのためのアプリケーションを検索している場合、これは悪い考えです。適切なハードウェアRAIDコントローラーを使用し、ローカルVMFSパーティションでVMを実行する方が良いでしょう。それが最も抵抗の少ない道です。ただし、ZFSを使用する特定の理由(レプリケーション、圧縮、データセキュリティ、移植性など)がある場合は、努力を払うつもりであれば、これは間違いなく可能です。

  • ベアメタルまたは仮想のどちらで実行しているかに関係なく、パフォーマンスは設計に大きく依存します。使用するPCI-パススルーあなたはSASストレージコントローラとディスクへのごZFS VMの直接アクセスを提供していることになるよう(あなたの場合またはAMD IOMMU)は、必要不可欠です。VMに適切な量のRAMおよびCPUリソースが割り当てられている限り、パフォーマンスはほぼネイティブです。もちろん、プールの設計は重要です。ミラーとRAID Z2を検討してください。ZFS は、ディスクの数ではなく、vdev全体に拡張されます


私のプラットフォームはVMWare ESXi 5で、ZFS対応のオペレーティングシステムはNexentaStor Community Editionです。

これは私のホームサーバーです。これは、内部SDカードからESXiを実行するHP ProLiant DL370 G6です。中央のミラー化された2つの72GBディスクは、内部SmartアレイP410 RAIDコントローラーにリンクされ、VMFSボリュームを形成します。そのボリュームはNexentaStor VMを保持しています。ZFS仮想マシンは安定したストレージのどこかに存在する必要があることに注意してください。

右側に6つの1TB SATAディスクを収容するドライブケージに接続されたLSI 9211-8i SASコントローラがあります。NexentaStor仮想マシンにパススルーされるため、NexentaはディスクをRAID 1 + 0セットアップとして認識できます。ディスクは、修正されたバイナリで適切に調整されたel-cheapo Western Digital Green WD10EARSドライブです。zpool

このインストールでは、ZILデバイスまたはL2ARCキャッシュを使用していません。

ここに画像の説明を入力してください

VMには6GBのRAMと2つのvCPUが割り当てられています。ESXiでは、PCIパススルーを使用すると、VMに割り当てられたRAMの全量のメモリ予約が作成されます。

NexentaStor VMに2つのネットワークインターフェイスを提供します。1つは管理トラフィック用です。もう1つは別のvSwitchの一部であり、vmkernelインターフェイスを備えています(外部アップリンクなし)。これにより、VMはプライベートネットワークを介してESXiでマウント可能なNFSストレージを提供できます。アップリンクインターフェイスを簡単に追加して、外部ホストへのアクセスを提供できます。

ZFSでエクスポートされたデータストアに新しいVMをインストールします。必ずESXiで「仮想マシンの起動/シャットダウン」パラメーターを設定してください。ストレージVMをゲストシステムの前に起動し、最後にシャットダウンする必要があります。


ここに画像の説明を入力してください

NexentaStor VMで直接実行したbonnie ++およびiozoneの結果は次のとおりです。より関連性のある数値を表示するため、ZFS圧縮はオフになっていますが、実際には、ZFSのデフォルトの圧縮(gzipではない)を常に有効にする必要があります。

# bonnie++ -u root -n 64:100000:16:64

Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
saint           12G   156  98 206597  26 135609  24   410  97 367498  21  1478  17
Latency               280ms    3177ms    1019ms     163ms     180ms     225ms
Version  1.96       ------Sequential Create------ --------Random Create--------
saint               -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files:max:min        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
    64:100000:16/64  6585  60 58754 100 32272  79  9827  58 38709 100 27189  80
Latency              1032ms     469us    1080us     101ms     375us   16108us

# iozone -t1 -i0 -i1 -i2 -r1m -s12g

    Iozone: Performance Test of File I/O

    Run began: Wed Jun 13 22:36:14 2012

    Record Size 1024 KB
    File size set to 12582912 KB
    Command line used: iozone -t1 -i0 -i1 -i2 -r1m -s12g
    Output is in Kbytes/sec
    Time Resolution = 0.000001 seconds.
    Throughput test with 1 process
    Each process writes a 12582912 Kbyte file in 1024 Kbyte records

    Children see throughput for  1 initial writers  =  234459.41 KB/sec
    Children see throughput for  1 rewriters        =  235029.34 KB/sec
    Children see throughput for  1 readers          =  359297.38 KB/sec
    Children see throughput for 1 re-readers        =  359821.19 KB/sec
    Children see throughput for 1 random readers    =   57756.71 KB/sec
    Children see throughput for 1 random writers    =  232716.19 KB/sec

これは、テスト実行中のストレージVMのIOPSと転送速度を示すNexentaStor DTraceグラフです。このようなローエンドディスクでは、4000 IOPSおよび400+メガバイト/秒はかなり妥当です。(ただし、大きなブロックサイズ) ここに画像の説明を入力してください

その他の注意。

  • SSDをテストして、VMに直接提示できるかどうか、またはDirectPathがマザーボードコントローラー全体を選択するかどうかを確認する必要があります。
  • CPU能力があまりないため、ストレージユニットを2つのvCPUに制限します。
  • 本当にディスク領域が必要でない限り、RAIDZ1 / Z2 / Z3を使用しないでください。
  • 重複排除を使用しないでください。圧縮は無料であり、VMにとって非常に便利です。重複排除を有効にするには、さらに多くのRAM + L2ARCが必要です。
  • SSDなしで起動し、必要に応じて追加します。特定のワークロードはZILまたはL2ARCにヒットしません
  • NexentaStorは完全なパッケージです。堅実な管理GUIを使用することには利点がありますが、Napp-Itでも成功したと聞いいます。

+1。すべての情報をありがとう!あなたの質問に答えるために、私はいくつかの理由でこれをしています。主にこれを行って、他のCPUコアを活用して1つまたは2つの他のVM(ZFSを行わない)を作成し、Opteron仮想サーバーにiSCSIターゲットを提供します。ZFSの私の理由は、(順不同で)圧縮とデータセキュリティとレプリケーションです。重複排除は非常にクールに見えますが、リソースとデータの観点から、それが必要かどうかはわかりません。現在、Nexentaを使用していますが、18TBの制限を超えるためにディスク上に山積みを続ける場合は、Solaris ExpressまたはOpenIndianaへの移行を検討していました。
osij2is

だから、L2ARCまたはZILにSSDを使用するかどうかについてのあなたのコメントを理解し、それをやるつもりです。最初にパフォーマンスを確認してから、ZILおよび/またはARCを追加するかどうかを決定します。ミラーリングとRAIDZに関しては、コメントを読んでこのブログ投稿(constantin.glez.de/blog/2010/01/…)を読んだ後、ミラーリングはわずかに優位に立つと思います。ディスク領域は本当に必要ありませんが、冗長性と高速の読み取り/書き込み機能があれば、それに切り替えると思います。どんなストレージスペースを探し出しても、それだけの価値はありません。
osij2is

さらに、圧縮が有用であることを忘れないでください。クライアントシステムおよび18 TBを超えるものについては、商用のNexentaに支払います。ただし、OpenIndianaにも同じヒントが適用されます。
ewwhite

NFSネットワークにE1000 vnicまたはVMXNet3 vnicを使用していますか?ので、私は唯一のNexenta / SolarisとVMwareの間の1Gbpsを取得しています同様のセットアップを使用して、よりスピードを取得する方法を見つけ出すことはできません。NexentaStorのバージョン 現在入手可能なバージョンが壊れているのではないかと思います
ジョシュ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.