レプリカや圧縮などのZFS属性は、新しく作成されたデータにのみ影響することがわかります。
しかし、スクラブが更新されるかどうか疑問に思います。
1TBファイルを書き込む前にプールを作成し、圧縮=lz4とレプリカ=2に設定したとします。
その後、Dittoブロックを保存する必要はありませんが、他の種類の圧縮も使用することにしました。
これでcopys = 1とcompression = gzip-9を設定した場合、プールにすでに記録されているデータにそれを適用する方法はありますか?
スクラブは私に効果がありますか?
答え1
いいえ。
compression
などのデータセットプロパティを変更すると、copies
変更後に作成されたファイルにのみ影響します。このような変更を既存のファイルに適用するには、その変更をコピーして元のファイルにmvを適用する必要があります。もちろん、これは同じファイル名の古いスナップショットへのすべての接続を失います(inodeが異なるため、そのファイルへのすべてのハードリンクも同じです)。
あるいは、これらの変更をプール全体またはデータセットに適用するには、zfs send
別のプール(バックアッププールなど)のスナップショットを作成し、元のプールからデータセットを削除(またはプールを削除して再作成)してから元に戻すこともできますzfs send
。オフ。注:()オプションを使用すると、これを行うことはできませんzfs send
。これは、送信()オプションも有効になるためです。詳細を確認して検索してください。-R
--replicate
-p
--props
man zfs
zfs send
zfs scrub
プール内の既存のデータを確認し、チェックサムと一致する良好なコピーを取得するのに十分な重複がある場合は、破損したコピーを上書きします。それ以外の場合は、修正できないエラーについて警告するだけです。