同じファイルの2つのZFSスナップショット間で変更されたバイト数の特定


10

たとえば、仮想マシンのディスクイメージを含むZFSファイルシステムがあるとします。

/tank/examplevm/examplevm-flat.vmdk

さらに、私がそのZFSファイルシステムの毎日のスナップショットを取ると仮定しましょう。

$ zfs snapshot tank@20120716
$ zfs snapshot tank@20120717

明らかに、毎日のスナップショットの間の期間に、私のexamplevm-flat.vmdkに変更が加えられます(ほとんどの場合、イメージのサイズは一定のままですが、仮想ディスクのブロックは変更されます)。

したがって、ZFS diffコマンドは、2つのスナップショット間で変更されたファイルを報告します。

$ zfs diff tank/@20120716 tank@20120717
M       /tank/examplevm/examplevm-flat.vmdk

ファイルが変更されたことを知るのは良いことですが、vmdkで変更されたバイト/ブロックの数にもっと興味があります。

したがって、次の質問に関するヒントに興味があります。

  • ZFSには、2つのスナップショット間の特定のファイルで変更されたブロックの数を報告する機能がありますか?
  • 2つのファイルシステムイメージをバイナリで比較し、変更されたブロックまたはバイトの数を報告する他のツールはありますか?私cmp –l file1 file2 | wc –lはそれがそれを実現していることを理解していますが、それは恐ろしく、恐ろしく遅いです。

回答:


7

ZFSにはレポートする機能はありませんが、ドキュメントに記載されていないzdbツールを使用すると、特定のデータセット(ファイルシステムまたはスナップショット)のファイルで使用されるブロックを確実に取得できるため、少しのスクリプトで目的の結果を得ることができます。 zdbの出力を処理するには、おそらく非常に長い時間がかかります。

これはzdbを使用してファイルのブロックを抽出する方法を示すブログです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.