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


13

このコマンドのように、最近、checksum複製されていないzfsファイルシステムの1つのプロパティをsha256from on(fletcher4)に変更して、複製された複製ストリームの送信をサポートしましたzfs send -DR -I _starting-snaphot_ _ending-snapshot_

ただし、zfsのマンページには次のように記載されていsend -Dます:

このフラグは、データセットのdedupプロパティに関係なく使用できますが、ファイルシステムがdedup対応のチェックサム(sha256など)を使用している場合、パフォーマンスは大幅に向上します。

zfsのマンページには、checksumプロパティについて次のように記載されています。

このプロパティの変更は、新しく書き込まれたデータにのみ影響します。

fletcher4を信頼したくない。トレードオフは、SHA256とは異なり、fletcher4は擬似ランダムハッシュ関数ではないため、衝突しないと信頼できないことです。したがって、ハッシュの衝突を検出して解決する「検証」オプションと組み合わせた場合、重複除去にのみ適しています。

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

回答:


11

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

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

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

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


zfs receiveファイルシステムのメタデータを更新することは、私にはまったくわかりません。メタデータをそのまま使用した方がはるかに速くなるように思えます。ただし、ファイルのレベルではなく、チェックサムのブロックの性質により、そうすることは不可能な場合があります。その場合zfs send | zfs receive、ソリューションの許容可能なベースを形成します。
84104

1
zfs send | zfs recvは、すべてのメタデータ(圧縮選択、チェックサム選択、重複除去選択)を効果的に変更します。zfs sendはオブジェクトを作成し、それをzfs recvを使用して取り込みます。これにより、すべてが新しいデータであるかのように書き込みます。ただし、重複排除に関してzfs send | recvについて誤解している可能性があります。zfs send -Dは、ソースデータセットからのデータの既存の重複排除を維持せずに、データをストリーム自体内で重複排除しようとします。これが、recv側でも宛先データセットで重複除去を有効にする必要がない理由です。
Nex7

さらに説明すると、現在、重複排除されたデータと関連する重複排除テーブルエントリの単一のコピーだけがネットワークを経由するように、重複排除されたデータをzfs send | recvする方法はありません。送信元と宛先が同期していて、増分スナップショット以外の何も送信していない場合でも。ZFSは、その中のデータが重複しない/ストリーム自体のスコープ内である場合に、送信データをフルサイズまでバルーニングします。POOL DDTで簡単に重複排除できるデータがありますが、小さな送信オブジェクトとしては、完全に重複排除できません。
Nex7
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.