ZFSにはさまざまな設定可能なプロパティがありますプール用、vdevs用そしてデータセット用これらの多くはいつでも変更できますが、作成時にのみ設定できるものもあります(または、その後に書き込まれたデータにのみ影響するため、すべき実際には作成時に設定されます)。
初心者として、私はさまざまな質問を検索し、頻繁に設定することが提案されているプロパティをいくつか見つけました。
当然、それぞれのユースケースでどのようなプロパティが意味を持つかは多少異なりますが、ほとんどのZFSユーザーが使用すべき共通のプロパティセットがあるようです。私は、積極的な理由を持つべきプロパティについて考えています。ないそれらを使用するには、どうすればよいですか。それは何で、なぜですか。
答え1
(免責事項: ZFS 初心者として、これはあくまでも私の理解であり、他の人からのより完全で信頼性の高い情報へのきっかけとなることを目的としています)。
プールのプロパティ
ashift=12
基本的なレベルでは、これはZFSの読み取り/書き込み操作が基盤となるストレージのブロック境界と一致することを保証する。理論的には512 バイトのブロックであれば
ashift=9
問題ありませんが、最近ではそのようなドライブは珍しく、ashift
「高すぎる」設定にした場合のペナルティはかなり低いです。autotrim=on
自動的に必要なくなったスペースを基盤となるブロックストレージに通知する特に SSD で役立ちますが、従来の HDD でも問題ないようです (ただし、おそらく役に立たないでしょう)。
データセットのプロパティ
zfs create -o
これらは、ルートファイルシステムのまたは-O
スイッチを使用して指定できますzpool create
(デフォルトでは他のファイルシステムに継承されます)。
xattr=sa
実質的な欠点はなく、xattr のパフォーマンスが大幅に向上します。(Linuxでのみ利用可能今のところ)。
dnodesize=auto
このプロパティは を使用する場合に使用してください
xattr=sa
。これらを使用しない主な理由は、必要なZFS機能をサポートしていないシステムとのやり取り。relatime=on
ファイルのアクセス時間を追跡することは、読み取り専用のやり取りでも非常にコストがかかる可能性があります。
relatime
プロパティ内の情報の精度が低下するという代償を払って、これらの更新の粒度/頻度を大幅に削減しますatime
(一般的に必要な不変条件の一部は維持されます)。これは、今のところ長い間、Linux 上のほぼすべてのファイルシステムのデフォルトであることに注意してください。正確な情報が必要な場合は、これをオンにしないでください。これが必要ないことがatime
わかる場合は、さらに優れたパフォーマンスを提供します。atime
atime=off
normalization=formD
これにより、ファイル名が常に同じ方法で正規化されます。大きな副作用として、ファイル システムはファイル名を UTF-8 エンコードとして扱い、他のファイル システムで受け入れられる特定の「壊れた」名前のファイル名を保存できなくなります。これが望ましくない場合は、これを省略してください。
compression=lz4
最近のハードウェアでは圧縮のコストが非常に低いため、実質的にはメリットしかないというのがコンセンサスのようです。主として、すでに高度に圧縮されたデータを保存するデータセットでは、これをオフにしたほうがよいかもしれません。
いいえ
recordsize
デフォルトのレコードサイズは多くのユースケースでは適切な中間点であると思われますが、データベースなどの一部のユースケースでは特定の値が役立つ場合があります。
出典
- ZFS 上の Debian ルート
- 多くの個別のフォーラム投稿