web-dev-qa-db-ja.com

ZFSファイルシステム上の仮想マシンディスクイメージ:いくつかの質問

背景

それ自体がSamsung840 Evo 120 GBSSD上にあるZFSファイルシステムにインストールされたUbuntu16.04.4 LTS(デスクトップからサーバーに変換)を使用しています。また、ZFSでもある2つのミラー(1 TBおよび2 TBミラー))である4つのHDDがあります。

私はこのシステムをストレージだけでなく仮想化にも使用しています。私はUbuntuでKVM仮想化を使用し、VMの1つに対してVM OSディスクイメージ(「/」にマウントされている)をSSDに保存します。 1TB HDDミラー上のストレージディスクイメージ(「/ home」にマウントされている)。

システムには16GBのECCRAMがあり、SSDには8GBのスワップボリューム(ZLE圧縮)があります。 VMは8192MBに設定されているため、ホスト上の他のサービスでは、ZFSARCに約7.8GBを提供します。

VM内の大量のデータをVMディスクイメージに書き込むと、ZFS ARCのサイズが大幅に大きくなることに気付きました。これは、データがヒットしているため、ARCの予想される動作ですが、 VM画像の保存と使用に関連して、ZFSの使用に関して、以下でよくわからない質問がいくつかあります。

ケース

次の点に注意してください:

  • VMディスクイメージは重要なデータを格納していません。これらは単にホスティングと実験に使用されるため、整合性はそれほど重要ではありません。
  • ディスクイメージはファイルシステム内のファイルシステムに保存されます。したがって、ディレクトリが「/ MyMirror/VM /」の場合、「MyMirror」が初期ファイルシステムであり、後者(「VM」)が内部のファイルシステムです。
  • ディスクイメージはRAW形式(* .img)です。

質問

上記を考慮し、ケースを考慮して...

  1. Ext4と比較してZFSにVMディスクイメージがあることには実際に何か利点がありますか?
  2. VMディスクイメージをキャッシュするARCに論理的な理由/利点はありますか?
  3. 私はそれを正しくやっていますか?

2番目は、ディスクイメージをキャッシュするARCのロジックと潜在的な利点を確認するのに苦労しているため、現時点で最も困惑しています。私は完全に要点を見逃している可能性があります(おそらく曇った心)が、ホストにディスクイメージをキャッシュすることはホストまたはVM自体)をどのように助けていますか?

3番は(避けたかった)意見のほうが多いかもしれないことは理解していますが、これを「正しい」方法で行っているかどうかはわかりません。おそらく、私の設定を考慮に入れて、VMを保存して使用するためのより良い方法があります。

前もって感謝します!

3
Joel
  1. VMディスクストレージにZFSを使用することにメリットはありますか?

おそらく。 ZFSには、圧縮、重複排除、スナップショットとクローン、およびストレージフットプリントを削減したり、これらのファイルシステムを別のシステムに簡単に複製したりするために使用できるその他の多くの機能が組み込まれています。それは本当にあなたのユースケースに依存します。熱狂的ではありません;)、しかし、必要に応じてこれらの機能を使用する柔軟性を持っていることは、「はい」と言うのに十分ですか?

  1. ARCは何か便利なことをしていますか?

あなたが言ったことから、VMがたくさんあるかどうか、もしそうなら、それらが互いにブロックを共有しているかどうかはわかりません(スナップショット/クローンを介して、または重複排除を介して)。その場合、1つのデータをホットにすると、他のすべてのデータのパフォーマンスが向上するという点で、キャッシュが役立つ可能性があります。そうでない場合、ゲストOSには通常、読み取りまたは書き込みを行ったすべてのページキャッシュがあるため、メリットはおそらく最小限に抑えられます。ただし、このメモリは一度しかアクセスされないため(ARCのLRUリストに含まれるため)、ホストOSからのプレッシャーがあればすぐに削除されるため、無駄なスペースについて心配する必要はありません。

  1. 私はそれを正しくやっていますか?

完全にあなたのユースケースに依存します。あなたが説明した単純なケースでは、それは問題ないように見えますが、それでも、ほとんど何でもかまいません。大規模なVMファーム用のストレージアプライアンスを構築しようとした場合:

  • zFSファイルシステム内のファイルではなく、ストレージにZFSZVOLを使用することを検討してください。
  • おそらく、ストレージとは別のサーバーでVMを実行します(これにより、RAMとCPUをより簡単にスケーリングし、ストレージのパフォーマンスをVMのパフォーマンスから分離できます)。その場合、ZVOLをiSCSIまたはファイバーチャネルターゲットとして公開します
  • パフォーマンスを向上させるには、RAMをさらに追加し、ストレージを節約するために重複排除と圧縮を有効にし(RAMおよびディスク上で)、同期書き込みを高速化するための専用SLOGデバイスを追加し、L2ARCデバイスを追加してSSDへのキャッシュ
  • データの復元力を高めるには、RAID-Zなどを有効にする必要があります。
  • メンテナンスのダウンタイムを考慮して、zfs sendzfs receiveを使用してデータを複製できるスタンバイ上の別のストレージホストが必要になる可能性があります。次に、VMホストを新しい場所をポイントします(またはフェイルオーバーする他の方法。これは1つのオプションにすぎません)

十分に深刻な場合は、デプロイメントをかなり恣意的に複雑にすることができます。しかし、現在のシステムの動作に不満がない場合、システムを現状のまま維持することの害は何ですか?

2
Dan