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 と使用することができます。

表21.3 virt-diff オプション

コマンド説明
--help特定のコマンドまたは virt-diff ユーティリティーについての簡単な help エントリーを表示します。help の詳細は、virt-diff の man ページを参照してください。$ virt-diff --help
-a [file] or --add [file]
最初の仮想マシンのディスクイメージである指定の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]2 つ目の仮想マシンのディスクイメージである指定の file または URI を追加します。$ 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 or --format=[raw|qcow2]デフォルトの -a/-A オプションは、ディスクイメージの形式を自動検出します。これを使用すると、コマンドラインに続く -a/-A オプションのディスク形式が強制実行されます。--format auto を使用すると、後続の -a オプションの自動検出に切り替わります (上記の -a コマンド参照)。$ virt-diff --format raw -a new.img -A old.img forces raw format (no auto-detection) for new.img and old.img, but virt-diff --format raw -a new.img --format auto -a old.img forces raw format (no auto-detection) for new.img and reverts to auto-detection for old.img. If you have untrusted raw-format guest disk images, you should use this option to specify the disk format. This avoids a possible security problem with malicious guests.
-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 or --versionvirt-diff のバージョン番号を表示し、終了します。$ virt-diff -V
-xlibguestfs API 呼び出しのトレースを有効にします。$ virt-diff -x

注記

コンマ区切りの値 (CSV) の形式は貼り付けが容易でない場合があります。そのため、シェルスクリプトの場合は csvtool を使用し、他の言語の場合は CSV 処理ライブラリー (Perl または Python の組み込み csv ライブラリーの場合の Text::CSV など) を使用する必要があります。さらに、大半のスプレッドシートおよびデータベースは CSV を直接インポートできます。
追加のオプションを含む詳細情報は、libguestfs.org を参照してください。