web-dev-qa-db-ja.com

BTRFSファイルシステムで仮想ディスクイメージをホストする理由

私はしばらくの間BTRFSとZFSについて読んでいますが、重要なファイルをホストするときのCoWの利点に感謝していますが、現在次のジレンマに戸惑っています。

ランダムな書き込みの対象となる大きなファイル(QCOW2、VDIなど)をホストする場合、ZFSとBTRFSの両方がパフォーマンス低下の影響を受けるように見えるので、BTRFSをFS=ホストVMの選択肢として使用する理由?

BTRFSの場合は、chatrrまたはnodatacowマウントオプションを使用してCoWを選択的にオフにできるため、断片化とCoWによる劣化を軽減できます...

ただし、 Redhat によると、これも "データとメタデータのチェックサム検証を無効にし、データの整合性を低下させます。"(失われた圧縮に加えて、当然のことながら望ましいCoWに加えて)。

私が尋ねることに基づいて:なぜ誰かがBTRFSを選択したのか、たとえば、XFS over LVM over MD RAIDですか?

14

主な使用例がVMイメージまたはデータベースの格納であり、btrfsのデータ整合性の利点を得るために潜在的なパフォーマンスの問題を受け入れることに関心がない場合、私は考えることができませんxfsまたはext4ではなくbtrfsを選択する理由。

VM画像ディレクトリ(chattr + Cを使用)のみのコピーオンライトを無効にすることは、VM画像を保存する場合に最も重要です。次に、その単一のディレクトリのコピーオンライトを無効にするだけで、残りのファイルシステムのbtrfsの利点をすべて維持することは非常に便利です。

13
Quantumboredom

BTRFSを使用すると、nodatacowを使用しても同様に、CoWの動作で データのスナップショットを手動で を作成できるため、高速であり、多くのメモリを消費しません。さらに、これらのスナップショットはLVMを使用するよりも柔軟性があります。これは、ファイルシステムが認識していないファイルシステムの下にスペースを予約する必要がなく、必要がない場合は使用できないためです。 ZFSと同様に、スナップショットはネットワーク経由で送受信できるため、バックアップ戦略の改善に役立つ場合があります。したがって、nodatacowを使用しても、BTRFSはLVMを使用するよりも優れているようです。

5

BTRFSのディスクフォーマットは異なり、一部の書き込みパターンでは他のファイルシステムよりも優れています。特に、メタデータのディスクへの書き込み方法を改善するために多大な労力が費やされ、データチェックサム、圧縮、スナップショットなどの高度な機能がサポートされています。大きなファイルの場合、メタデータのパフォーマンスを向上させることは一般に重要ではありません。

ZFSと比較して、BTRFSはよりシンプルなソリューションであり、Linuxでよりよくサポートされています。主な欠点は、拡張性が低く(多数のディスクを追加する場合)、同じ機能セットがないことです。

XFSと比較して、パフォーマンスの低いソリューションになります。つまりデータのチャンクをディスクに書き込むのにより多くのプロセッサ時間がかかり、最大スループットが制限されます。これは、チェックサム検証を無効にするなどの方法である程度軽減できますが、メタデータ情報が改善されたXFSよりもBTRFSの主な利点が失われます。つまりチェックサムと異なるジャーナリング(状況によってはより良い場合があります)。

コピーオンライト(COW)サポートに関して、XFSは厳密にCOWであるよりもパフォーマンスを優先します。つまりXFSはスケーラビリティの点で非常に優れたメタデータとジャーナリング機能を備えており、アプリケーションが特にそのデータの上書きを要求した場合に既存のディスクブロックを上書きできることを除いて、書き込み時にファイルデータを上書きしません。 VMの場合、これはディスクの割り当てが最初は連続している可能性があり、その場合VMの存続期間中は連続したままであるため、これは良いことです。

5
Clarus

クラウドコンピューティングプラットフォームで作業した後、実際のvmの重要性が低いデータと機能のコンテナーとして仮想マシンのビューを採用するようになりました。

代わりに、適切なバックアップと復元およびインストールと展開のプロセスを用意し、VMの整合性については気にせず、パフォーマンスについてもっと心配したいと思います。

つまりBTRFSではなく、MD-raid上のLVM上のJFS/XFS/EXT4に進みます。 VMにバックアップされていないものを長期間保存しないでください。また、VMの新規インストールを取得するためのスクリプトと手順を用意してください。 _何かが発生した場合は、適切な時間内にバックアップしてください。

しかし、これは何よりも開発/実験シナリオの詳細です。

3
Erk