最近、このコマンドのように、複製されていないzfsファイルシステムの1つでchecksum
プロパティをon
(fletcher4)からsha256
に変更して、複製された複製スチームの送信をより適切にサポートしました。 zfs send -DR -I _starting-snaphot_ _ending-snapshot_
。
ただし、zfsのマンページにはsend -D
について次のように書かれています。
このフラグは、データセットの重複排除プロパティに関係なく使用できますが、ファイルシステムが重複排除対応のチェックサム(sha256など)を使用すると、パフォーマンスが大幅に向上します。
Zfsのマンページには、checksum
プロパティについても記載されています。
このプロパティを変更すると、新しく書き込まれたデータにのみ影響します。
Fletcher4を信頼したくありません。 トレードオフは、SHA256とは異なり、fletcher4は疑似ランダムハッシュ関数ではないため、衝突しないと信頼できないことです。したがって、検出して解決する「verify」オプションと組み合わせた場合にのみ、dedupに適しています。ハッシュ衝突。
できればシステムのオフラインを設定せずに、ファイルシステムのチェックサムを更新するにはどうすればよいですか?
すでに書き込まれたデータのプロパティ(圧縮、重複排除、チェックサムなど)を変更するには、zfsアプローチはzfs send | zfs receive
シーケンスを介してデータを実行することです。明らかに、そのためにシステムをオフラインにする必要はありませんが、will必要です
すでにzpoolの重複排除を使用しているため、ソースと同じプールの宛先でzfs send | zfs receive
を実行すると、新しく書き込まれたメタデータブロックに必要なスペースのみが使用されます。ただし、コピーにしばらく時間がかかることを覚悟してください。特に、重複排除テーブル全体をRAMに保持するのに十分なRAMがない場合は、重複排除が非常に遅くなる可能性があります。
当然、データセットの最終的な信頼できるコピーを作成するには、すべての書き込み操作を停止する必要がありますが、最初にスナップショットをコピーし、すべての書き込みを停止し、最後のステップとして増分zfs send -i | zfs receive
を実行することで、ダウンタイムを最小限に抑えることができます。