web-dev-qa-db-ja.com

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

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

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

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

私の質問は:

1)これを行うのは賢明ですか?明らかなマイナス面は見られません(なぜ他の誰もそれについて言及していないのかと不思議に思います)。私は巨大な見落としをしているように感じるかもしれません、そして私はこれにコミットするのが嫌いです、私が逃したいくつかの細部からフーバーになるためにすべてのデータを移動します。

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

23
osij2is

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

あなたの質問に答えるには:

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

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


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

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

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

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

enter image description here

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

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

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


enter image description here

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+メガバイト/秒はかなり妥当です。 (ただし、大きなブロックサイズ) enter image description here

その他の注意事項。

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