web-dev-qa-db-ja.com

zfsでチェックサムを強制的に更新しますか?

最近、このコマンドのように、複製されていない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に適しています。ハッシュ衝突。

できればシステムのオフラインを設定せずに、ファイルシステムのチェックサムを更新するにはどうすればよいですか?

13
84104

すでに書き込まれたデータのプロパティ(圧縮、重複排除、チェックサムなど)を変更するには、zfsアプローチはzfs send | zfs receiveシーケンスを介してデータを実行することです。明らかに、そのためにシステムをオフラインにする必要はありませんが、will必要です

  1. 問題のデータセットの重複排除された2つのコピーを保持するのに十分なリソースがzpool /システムにあります
  2. データセットを破棄するか、手順で名前を変更する必要があるため、データセットのダウンタイム
  3. 操作を完了するのに十分な時間と忍耐力

すでにzpoolの重複排除を使用しているため、ソースと同じプールの宛先でzfs send | zfs receiveを実行すると、新しく書き込まれたメタデータブロックに必要なスペースのみが使用されます。ただし、コピーにしばらく時間がかかることを覚悟してください。特に、重複排除テーブル全体をRAMに保持するのに十分なRAMがない場合は、重複排除が非常に遅くなる可能性があります。

当然、データセットの最終的な信頼できるコピーを作成するには、すべての書き込み操作を停止する必要がありますが、最初にスナップショットをコピーし、すべての書き込みを停止し、最後のステップとして増分zfs send -i | zfs receiveを実行することで、ダウンタイムを最小限に抑えることができます。

11
the-wabbit