これらの「オールインワン」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でも成功したと聞いています。