21.13. virt-diff: 仮想マシンファイル間の相違点の一覧表示
virt-diff コマンドラインツールを使用すると、2 つの仮想マシンのディスクイメージにあるファイル間の相違点をリスト表示できます。この出力は、仮想マシンのディスクイメージの実行後の変更を示しています。このコマンドを使用して、オーバーレイ間の違いを表示することもできます。
注記
virt-diff は読み取り専用アクセスのみが必要であるため、ライブゲスト仮想マシンでは安全に使用できます。
このツールは、実行中の仮想マシンと選択したイメージで、ファイル名、ファイルサイズ、チェックサム、拡張属性、ファイルコンテンツなどの相違を検出します。
注記
virt-diff コマンドでは、ブートローダー、パーティション間、ファイルシステム内の未使用領域、または非表示セクターの確認は行いません。したがって、これをセキュリティーまたはフォレンジックツールとして使用しないことが推奨されます。
virt-diff
をインストールするには、次のいずれかのコマンドを実行します。
# yum install /usr/bin/virt-diff
または
# yum install libguestfs-tools-c
2 つのゲストを指定するには、最初のゲストに
-a
オプションまたは -d
オプションを使用し、2 番目のゲストに -A
オプションまたは -D
オプションを使用する必要があります。以下に例を示します。
$ virt-diff -a old.img -A new.img
libvirt が認識している名前を使用することもできます。以下に例を示します。
$ virt-diff -d oldguest -D newguest
virt-diff では、以下のコマンドオプションを使用できます。
コマンド | 説明 | 例 |
---|---|---|
--help | 特定のコマンドまたは virt-diff ユーティリティーに関する簡単なヘルプエントリーを表示します。詳細なヘルプは、man ページの virt-diff を参照してください。 | virt-diff --help |
-a [file] or --add [file] |
指定したファイルを追加します。これは、最初の仮想マシンのディスクイメージになります。仮想マシンに複数のブロックデバイスがある場合は、すべてのブロックデバイスに個別の
-a オプションを指定する必要があります。
ディスクイメージの形式は自動検出されます。これを上書きして、特定の形式に強制する場合は、
--format オプションを使用します。
| virt-customize --add /dev/vms/original.img -A /dev/vms/new.img |
-a [URI] or --add [URI] | リモートディスクを追加します。URI 形式は guestfish と互換性があります。詳細は、「guestfish を使用したファイルの追加」 を参照してください。 | virt-diff -a rbd://example.com[:port]/pool/newdisk -A rbd://example.com[:port]/pool/olddisk |
--all | --extra-stats --times --uids --xattrs と同じです。 | virt-diff --all |
--atime | 初期設定では、virt-diff はファイルアクセス時間の変更を無視します。これは、ファイルアクセス時間の変更が興味深いものではないためです。--atime オプションを使用して、アクセス時間の違いを表示します。 | virt-diff --atime |
-A [file] | 指定した ファイル またはURI を追加します。これは、2 番目の仮想マシンのディスクイメージになります。 | virt-diff --add /dev/vms/original.img -A /dev/vms/new.img |
-c [URI] or --connect [URI] | libvirt を使用する場合は、指定した URI に接続します。省略した場合は、デフォルトの libvirt ハイパーバイザーに接続します。ゲストブロックデバイスを直接指定 (virt-diff -a) すると、libvirt はまったく使用されません。 | virt-diff -c qemu:///system |
--csv | 結果をコンマ区切り値 (CSV) 形式で提供します。この形式は、データベースやスプレッドシートに簡単にインポートできます。詳細は、注記 参照してください。 | virt-diff --csv |
-d [guest] or --domain [guest] | 指定したゲスト仮想マシンからすべてのディスクを最初のゲスト仮想マシンとして追加します。ドメイン名の代わりにドメイン UUID を使用できます。 | $ virt-diff --domain 90df2f3f-8857-5ba9-2714-7d95907b1c9e |
-D [guest] | 指定したゲスト仮想マシンのすべてのディスクを 2 番目のゲスト仮想マシンとして追加します。ドメイン名の代わりにドメイン UUID を使用できます。 | virt-diff --D 90df2f3f-8857-5ba9-2714-7d95907b1cd4 |
--extra-stats | 追加の統計情報を表示します。 | virt-diff --extra-stats |
--format または --format=[raw |qcow2 ] | -a /-A オプションのデフォルトは、ディスクイメージの形式を自動検出することです。これを使用すると、コマンドラインで -a /-A オプションのディスク形式が強制されます。--format auto スイッチを使用すると、後続の -a オプションの自動検出に戻ります (上述の -a コマンドを参照してください)。 | virt-diff --format raw -a new.img -A old.img は、new.img および old.img に対して raw 形式 (自動検出なし) を強制しますが、virt-diff --format raw -a new.img --format auto -a old.img は、new.img に対して raw 形式 (自動検出なし) を強制し、old.img では自動検出に戻ります。信頼できない raw 形式のゲストディスクイメージがある場合は、このオプションを使用してディスク形式を指定する必要があります。これにより、悪意のあるゲストで発生する可能性のあるセキュリティーの問題を回避できます。 |
-h または --human-readable | ファイルのサイズを人間が判読できる形式で表示します。 | virt-diff -h |
--time-days |
変更されたファイルの時間フィールドを、現在の日数 (将来の場合は負) で表示します。
出力内の
0 は、現在より 86,399 秒 (23 時間、59 分、59 秒) 前から、今後の 86,399 秒後までを意味することに注意してください。
| virt-diff --time-days |
-v or --verbose | デバッグ目的で詳細なメッセージを有効にします。 | virt-diff --verbose |
-V または --version | virt-diff のバージョン番号を表示し、終了します。 | virt-diff -V |
-x | libguestfs API 呼び出しの追跡を有効にします。 | virt-diff -x |
注記
コンマ区切り値 (CSV) 形式では解析が困難な場合があります。そのため、シェルスクリプトには csvtool を使用し、その他の言語には CSV 処理ライブラリー (Perl の場合は Text::CSV、Python の組み込み csv ライブラリーなど) を使用することが推奨されます。また、ほとんどのスプレッドシートおよびデータベースでは、CSV を直接インポートできます。
詳細および追加オプションは、libguestfs.org を参照してください。