短い答え:

短い答え:

私はインターネット上で、低メモリシステムでの ZFS に関する多くの物議を醸す意見を読みましたが、ほとんどの使用例は、高性能なデータストレージのためのものでした。

ZFS を使用する理由は、パフォーマンス上の理由ではなく、透過的な圧縮と重複排除 (後者はオプションの可能性があります) をサポートし、BTRFS よりも成熟しているように見えるからです。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 と同じくらい堅牢ですか?

システム仕様:

  • リナックス
  • 8 GiB RAM(グラフィックカードと共有)ですが、その大部分(少なくとも7 GiB)はユーザー空間ソフトウェアに使用可能です。
  • ZFSに使用する約700GiBのSSDストレージ、
  • おそらく別のシステムでは、ZFS に使用する 128 GiB の eMMC です。
  • 現在のディスク使用量 (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 を使用して終了することをお勧めします。

長い答え:

IO パフォーマンスやキャッシュが重要ではなく、RAID 機能が必要ない場合、ZFS を「低 RAM」で確実に動作するように構成できますか?

はい、RAID機能を有効にしても必要です。ネット上で言われているよりもずっと少ないメモリで済みます。例えば、FreeBSD、2コア、768MB仮想化されています。または、SolarisInternals ガイド (現在は archive.org からのみ入手可能) を参照してください。このガイドでは、512 MB が最低限、1 GB が最低限の推奨値、2 GB が完全な推奨値として記載されています。

ただし、重複排除は避けた方が良いでしょう。ページング メモリが原因で遅いからではなく、システムが停止した場合に重複排除なしに戻すことができないからです。また、これは RAM とディスクのトレードオフですが、低予算のシステムではどちらもないので、メリットはあまりありません。

ZFS 自体をファイルシステムとして使用せず、その上に別のファイルシステムを配置した ZVOL を使用する場合、必要な RAM はどのように変わりますか?

アクセス方法 (KVM、FUSE、iSCSI などの仮想化など) に応じて、2 番目のファイルシステムと ZFS の上位レイヤーに追加のメモリが必要になります。

重複排除をオンにすると、必要な RAM はどのように変化しますか? 重複排除をオンにして RAM が少なくなり始めた場合、それでも安全ですか? ZFS は重複排除を一時停止して RAM の使用量を減らすことができますか?

重複排除を一時停止することはできませんが、データは安全です。メモリのスワップと待機が大量に発生するため、あまり使用できない可能性があります。重複排除はオンラインであるため、無効にするには、重複排除をオフにしてすべてのデータを再度書き込む必要があります (これは基本的に、すべてのデータを新しいファイルシステムにコピーし、古いファイルシステムを破棄することを意味します)。

自動重複排除を無効にして、時々手動で実行することは可能ですか?

いいえ、保存中のデータには影響しません。重複排除をオンにしてブロックを書き込む場合、ZFS は重複排除テーブルにブロックが存在するかどうかを確認します。存在する場合、書き込みは破棄され、重複排除テーブルに参照が追加されます。存在しない場合は書き込みが行われ、最初の参照が追加されます。つまり、古いデータは重複排除の影響を受けず、新しいブロックを書き込まずに重複排除をオンにしても、古いデータの使用サイズには影響しません。

ZVOL 上の ext4 は、RAM が少ない状況でもデータを確実に保存できますか? また、不整合が発生した場合でも、修復が成功する確率は高くなります (ext2/3/4 の場合と同様)? ZVOL 上の ext4 は ext4 の堅牢性を追加するため堅牢性が向上しますか? それとも、データは基礎となる ZVOL と同じくらい堅牢ですか?

私の目には、これは不必要な複雑さです。新しい機能は得られず (逆の場合、ext4 が下にあり、ZFS が上にある場合、スナップショットなど)、さらに、フォーマット作業がfsck増えるなど、いくつかの新しい責任も生じるからですfdisk

私がそのようなことを行う唯一のユースケースは、特定のファイル システムの低レベルの機能を要求するか、ハードコードされた仮定を持つ特別なアプリケーションがある場合です (幸いなことに、その動作は最近廃止されたようです)。

答え2

user121391 さんは素晴らしい情報を提供してくれたので、私はメモリに関する懸念についてのみ触れたいと思います。

メモリに関しては、ZFS はメモリを大量に消費する可能性があります。空きシステムメモリをキャッシュに使用します。長年にわたり、Sun、そして現在は Oracle が微調整を行い、パフォーマンス、信頼性、メモリ使用量を改善してきました。ZFS 内部/悪のチューニング ガイドのサイトを確認するか、ZFS ブログ詳細については、 を参照してください。ただし、これらの調整と機能のほとんどは、ZFS の Solaris 11.x バージョンでのみ見つかる可能性があります。

メモリについて本当に心配な場合は、dedup は使用しないでください。dedup はライブであり、dedup テーブルをメモリ内に保持する必要があるため、かなりの量のメモリが必要になります。

関連情報