私は低メモリシステムのZFSについてインターネットで議論の余地がある多くのステートメントを読んでいますが、ほとんどのユースケースは高性能データ保存のためのものです。
パフォーマンス上の理由ではなく、透明な圧縮と重複排除(後者はオプションかもしれません)をサポートし、まだBTRFSよりも成熟しているので、ZFSを使用したいと思います。 RAID構成を使用したくありません。
ディスクのパフォーマンスよりも、ルートおよびメインファイルシステム、ストレージスペース、およびデータセキュリティ(停電またはその他の任意の矛盾後の回復可能性、低いRAMによる損傷のリスクが非常に低いなど)のためにラップトップで使用したいと思います。私はext2/3/4と同じセキュリティが欲しいです。
ZVOLでext4を使いたいです。
したがって、質問は次のようになります。
- ZFSが機能するように設定できますか?安定してIOパフォーマンス/キャッシュに興味がなく、RAID機能が必要ない場合は、「低RAM」を使用しますか?
- ZFSをファイルシステム自体として使用せず、ZVOLを使用して他のファイルシステムを一番上に配置する場合、必要なRAMはどのように変更されますか?
- 重複排除がオンの場合、必要なRAMはどのように変更されますか?重複排除がオンになっていてRAMが足りなくなり始めても、まだ安全ですか? ZFSは重複排除を一時停止し、RAMをより少なく使用できますか?
- 自動重複排除を無効にして、時には手動で実行できますか?
- ZVOLのext4はRAMが少ない場合でもデータを確実に保存できますか?不一致が発生した場合、修正が成功する可能性は高いですか(ext2/3/4と同じ)。 ZVOLの上にext4がext4の堅牢性を追加することで堅牢性が向上しますか、それともデータがデフォルトのZVOLと同じくらい強力ですか?
システム仕様:
- Linux
- 8GiB RAM(グラフィックカードと共有)が、ほとんど(少なくとも7GiB)はユーザースペースソフトウェアで利用可能でなければなりません。
- ZFS用約700GiB SSDストレージ、
- 他のシステムには、ZFS用のeMMC 128GiBがあります。
現在のディスク使用量(
du -sh
の大きいディレクトリ/
)(/はext4で、上にマウントされている/ varはreiserfs)(透明圧縮を使用してストレージに移動しようとしています):74M /etc 342G /home 5.0G /opt 1.5G /root 261M /tmp 35G /usr 30G /var
または、単にBTRFSを使用してください(「バグ」が深刻なデータや回復不能なデータ損失を引き起こす可能性があることを読んでいますが、これはすべて議論の余地があります...)。
ベストアンサー1
短い答え:
- はい、ZFSでは低RAM(〜1 GB)を正常に使用できます。
- 重複排除を使用しないでくださいが、通常RAIDと圧縮が使用されます。
- レプリケーションが有効になると、新しく作成されたすべてのデータに適用され、簡単に削除できません。
- 重複排除遡及機能はオンラインデータでのみ機能するため、有効にすることはできません。
- あなたのアイデアは正当な理由なしに不必要に複雑なので、ZFSを使用して1日で終わることをお勧めします。
長い答え:
IOパフォーマンス/キャッシュが問題にならず、RAID機能が不要な場合は、「低RAM」で安定して動作するようにZFSを設定できますか?
はい、RAID機能が有効になっていても同じです。人々がオンラインで主張するよりもはるかに少ない量が必要です。たとえば、FreeBSD、2コア、768MB仮想化または、少なくとも512 MB、最低推奨1 GB、完全推奨2 GBを参照しているSolarisInternals Guide(現在のarchive.orgを介してのみ利用可能)を確認してください。
それでも重複排除は遠ざけます。これは、ページングされたメモリが遅くなるのではなく、システムがダウンしても重複排除されていない状態に戻ることができないためです。また、これはRAMとディスクとの間の取引であり、予算システムでは両方とも得られないので、多くを得ることができない。
ZFSをファイルシステム自体として使用せず、ZVOLを使用して他のファイルシステムを一番上に配置する場合、必要なRAMはどのように変更されますか?
アクセス計画(KVM、FUSE、iSCSIなどの仮想化)に応じて、ZFSの上の2番目のファイルシステムと階層に追加のメモリが必要です。
重複排除がオンの場合、必要なRAMはどのように変更されますか?重複排除がオンになっていてRAMが足りなくなり始めても、まだ安全ですか? ZFSは重複排除を一時停止し、RAMをより少なく使用できますか?
重複排除を一時停止することはできませんが、データは安全に保たれます。メモリ交換や待機が多いため、使い勝手が悪くなることがあります。重複排除はオンラインなので、無効にするには重複排除をオフにしてすべてのデータを書き換える必要があります(これにより、デフォルトではすべてのデータが新しいファイルシステムにコピーされ、古いファイルシステムが削除されます)。
自動重複排除を無効にして、時には手動で実行できますか?
いいえ。静的データには影響しないからです。重複排除を有効にしてブロックを書き込む場合、ZFS はそのブロックが重複排除テーブルに存在することを確認します。その場合、書き込みは削除され、参照は重複排除テーブルに追加されます。そうでない場合、最初の参照が作成され、追加されます。つまり、古いデータは重複排除の影響を受けず、新しいブロックを書き込まずにデータを開いても、古いデータの使用サイズには影響しません。
ZVOLのext4はRAMが少ない場合でもデータを確実に保存できますか?不一致が発生した場合、修正が成功する可能性は高いですか(ext2/3/4と同じ)。 ZVOLの上にext4がext4の堅牢性を追加することで堅牢性が向上しますか、それともデータがデフォルトのZVOLと同じくらい強力ですか?
私の考えでは、新しい機能(例:スナップショットなどのext4や上記のZFSの逆)を得ることができず、fsck
より多くのfdisk
書式設定の練習など、いくつかの新しい責任があるため、これは不必要な複雑さです。
私がこのようなことをする唯一のユースケースは、特定のファイルシステムの下位機能が必要な場合、またはハードコードされた仮定を持つ特別なアプリケーションがある場合です(幸いなことに、この動作は最近消えたようです)。