第11章 QEMU-img および QEMU ゲストエージェント
/usr/share/doc/qemu-*/README.systemtap
11.1. qemu-img の使い方
qemu-img
コマンドラインツールは、KVM で使用される各種ファイルシステムの編集や検証、およびフォーマットを行う際に使用されます。qemu-img
のオプションとその使い方を以下に示します。
ディスクイメージ filename の整合性チェックを実行します。
# qemu-img check -f qcow2 --output=qcow2 -r all filename-img.qcow2
注記
qcow2
と vdi
の形式のみが整合性チェックに対応しています。
-r
を使用すると、チェック中に発見された不整合の修復を試みますが、-r leaks
と使用するとクラスターリークが修復され、-r all
と使用するとすべての種類のエラーが修復されます。これには間違ったフィクスを選択したり、既存の破損問題が隠れてしまうなどのリスクがあることに注意してください。
qemu-img commit
コマンドを使って、指定ファイル (filename) に記録される変更をそのファイルのベースイメージにコミットします。オプションでファイルの形式タイプを指定できます (fmt)。
# qemu-img commit [-ffmt
] [-tcache
] filename
認識しているイメージ形式を別のイメージ形式に変換する場合に convert
オプションを使用します。
# qemu-img convert [-c] [-p] [-ffmt
] [-tcache
] [-Ooutput_fmt
] [-ooptions
] [-Ssparse_size
] filename output_filename
-p
パラメーターは、コマンドの進捗を表示し (オプションのため、すべてのコマンドに使用できる訳ではありません)、-S
フラグは、ディスクイメージ内に含まれる スパースファイル の作成を可能にします。スパースファイルは実際上、ゼロのみを含む (つまり何も含まない) 物理ブロックの場合を除き、標準ファイルのように機能します。オペレーティングシステムがこのファイルを発見すると、いずれのディスク領域も使用していないものの、実際に存在し、実際のディスク領域を占めるものとしてこのファイルを処理します。これは、ディスクが実際に存在する以上のディスク領域を使っている様に表示されるため、ゲスト仮想マシンのディスクを作成する際にはとりわけ役に立ちます。たとえば、10Gb のディスクイメージで -S を 50Gb に設定する場合、実際に使用されているのは 10Gb のみであるのにもかかわらず、10Gb のディスク領域のサイズが 60Gb のように表示されます。
output_format
形式を使って、filename
ディスクイメージを output_filename
ディスクイメージに変換します。-c
オプションを使うとディスクイメージをオプションで圧縮することができます。また、-o
オプションを使い -o encryption
のように設定すると暗号化することができます。-o
パラメーターを付けるオプションは複数あり、選択する形式によって異なります。
qcow2
形式のみになります。qcow2
の暗号化では安全な 128 ビットキーによる AES 形式が使用されます。qcow2
の圧縮は読み取り専用になります。このため、qcow2
形式から圧縮セクターを変換する場合には、このセクターは圧縮されていないデータとして新しい形式に記述されます。
qcow
や cow
などの拡大する可能性のある形式を使用する場合にも便利です。空のセクターは検出されて、目的のイメージから削除されます。
サイズが size
、形式が format
となる filename という新しいディスクイメージを作成します。
# qemu-img create [-fformat
] [-o options] filename [size
][preallocation
]
-o backing_file=filename
でベースイメージを指定すると、作成するイメージとベースファイルとの差異のみが記録されることになります。commit
コマンドを使用しない限り、バッキングファイルは変更されません。この場合、サイズの指定は必要ありません。
-o preallocation=off|meta|full|falloc
になります。事前割り当てのメタデータのあるイメージは、これがないものよりもサイズが大きくなります。ただし、イメージサイズが大きくなると、パフォーマンスは向上します。
full
を使用すると、大きいイメージでは時間がかかることに注意してください。割り振りで full を使用したいものの、時間に余裕がない場合は、falloc
を使うと時間が節約できます。
info
パラメーターは、filename ディスクイメージの情報を表示します。 info
オプションの形式を以下に示します。
# qemu-img info [-f format] filename
qcow2
イメージによって使用されているかを表示します。これは、qemu-img
を実行することによって行なわれます。使用中のイメージが qemu-img info
コマンドと qemu-img check
コマンドの出力に一致するものであることを確認できます。「qemu-img の使い方」を参照してください。
# qemu-img info /dev/vg-90.100-sluo/lv-90-100-sluo image: /dev/vg-90.100-sluo/lv-90-100-sluo file format: qcow2 virtual size: 20G (21474836480 bytes) disk size: 0 cluster_size: 65536
# qemu-img map [-f fmt] [--output=ofmt] filename
のコマンドを実行すると、イメージ filename のメタデータとそのバッキングファイルチェーンがダンプされます。特にこのコマンドは、指定されたファイルの全セクターの割り振り状態と、そのファイルをバッキングファイルチェーンに割り振る最上位のファイルをダンプします。たとえば、c.qcow2 → b.qcow2 → a.qcow2 というチェーンがあったとすると、a.qcow がオリジナルファイル、b.qcow2 が a.qcow2 に加えた変更、c.qcow2 が b.qcow2 からの差分ファイルになります。このチェーンが作成される際には、イメージファイルは適切なイメージデータと何がどのファイルに、かつファイルのどこにあるかという情報とともに保存されます。この情報は、イメージのメタデータと呼ばれます。-f
の形式オプションは、指定されたイメージファイルの形式です。raw、qcow2、vhdx および vmdk といった形式が使用されます。出力オプションには human
と json
の 2 種類があります。
human
です。これは人間にとって読みやすいものにするので、この形式は解析すべきではありません。プログラムがこれの解析を試みると、悪意のあるゲストイメージに誤った方向に導かれる場合があります。
human
形式は、ファイルの既知の非ゼロエリアのみをダンプします。ファイルの既知のゼロ部分と、チェーンで割り振られていない部分はすべて除外されます。このコマンドを実行すると、qemu-img の出力がデータ読み取り可能なファイルと、ファイルないのオフセットを特定します。出力は 4 コラムの表が表示され、そのうちの最初の 3 つは 16 進数になります。
# qemu-img map -f qcow2 --output=human /tmp/test.qcow2 Offset Length Mapped to File 0 0x20000 0x50000 /tmp/test.qcow2 0x100000 0x80000 0x70000 /tmp/test.qcow2 0x200000 0x1f0000 0xf0000 /tmp/test.qcow2 0x3c00000 0x20000 0x2e0000 /tmp/test.qcow2 0x3fd0000 0x10000 0x300000 /tmp/test.qcow2
json
または JSON (JavaScript Object Notation) は人間が読み取ることが可能ですが、プログラミング言語であることから、解析用に設計されています。たとえば、"qemu-img map" の出力をパーサーで解析するには、--output=json
というフラグを使用します。
# qemu-img map -f qcow2 --output=json /tmp/test.qcow2 [{ "start": 0, "length": 131072, "depth": 0, "zero": false, "data": true, "offset": 327680}, { "start": 131072, "length": 917504, "depth": 0, "zero": true, "data": false},
イメージのバッキングファイルを変更します。
# qemu-img rebase [-f fmt] [-t cache] [-p] [-u] -b backing_file [-F backing_fmt] filename
注記
qcow2
形式のみがバッキングファイルの変更 (rebase) に対応します。
qemu-img rebase
コマンドではゲスト仮想マシンに表示される filename のコンテンツは変更されないようにします。backing_file と古いバッキングファイルの filename 間の異なる部分は、バッキングファイルに変更が加えられる前に filename にマージされます。
qemu-img rebase
に -u オプションを渡すと アンセーフモード が使用されます。このモードでは、filename のバッキングファイル名と形式のみが変更され、ファイルのコンテンツに対するチェックは行われません。新しいバッキングファイルが正しく指定されていることを必ず確認してください。指定を誤ると、ゲストに表示されるイメージのコンテンツが破損することになります。
size サイズで作成された filename ディスクイメージであるかのようにディスクイメージのサイズ変更を行います。バージョンにかかわらず、サイズ変更が可能なのは raw 形式のイメージのみになります。Red Hat Enterprise Linux 6.1 以降には qcow2
形式のイメージを拡大できる機能が追加されています (縮小は不可)。
# qemu-img resize filename size
+
を付け、小さくする場合はバイト数の前に -
を付けます。単位の接尾辞を付けると、キロバイト (K)、メガバイト (M)、ギガバイト (G)、またはテラバイト (T) などの単位でイメージサイズを設定することができます。
# qemu-img resize filename [+|-]size[K|M|G|T]
警告
イメージ (filename) の既存のスナップショット (snapshot) の一覧表示、適用、作成、削除などを行います。
# qemu-img snapshot [ -l | -a snapshot | -c snapshot | -d snapshot ] filename
-l
を使うと、指定したディスクイメージに関連付けられているスナップショットの全一覧が表示されます。適用のオプション -a
を使うと、ディスクイメージ (filename) が以前に保存したスナップショット snapshot の状態に戻ります。-c
を使うと、イメージ (filename) のスナップショット (snapshot) が作成されます。-d
を使うと、指定したスナップショットが削除されます。
qemu-img は次のいずれかの形式にファイルを変換するよう設計されています。
raw
- raw ディスクイメージ形式 (デフォルト) です。最も高速となるファイルベースの形式です。ファイルシステムで未割り当てのブロックに対応している場合 (linux なら ext2 または ext3、Windows なら NTFS)、書き込みが行われたセクターのみに領域が予約されます。イメージが使用する実際のサイズを取得する場合は
qemu-img info
を使用します。Unix/Linux の場合はls -ls
を使用します。raw イメージで最適なパフォーマンスを得ることができますが、利用できる機能は非常に基本的なものに限られます (スナップショットなどは不可)。 qcow2
- QEMU イメージ形式です。最も用途が多様となる形式で、機能も最も充実しています。オプションの AES 暗号化、zlib ベースの圧縮、仮想マシンの複数のスナップショットに対するサポート、イメージを小さくするなどのオプションを付ける場合に使用します。これらは未割り当てのブロックに対応していないファイルシステムで役に立ちます (Windows 上の NTFS 以外のファイルシステム)。機能が充実している分、パフォーマンスは低下します。
raw
または qcow2
形式のいずれかに変換できるよう、これらの形式も認識し、これらに対応しています。通常、イメージの形式は自動的に検出されます。raw
または qcow2
形式への変換に加え、raw
または qcow2
から元の形式への逆変換も可能です。
bochs
- Bochs のディスクイメージ形式です。
cloop
- Linux 圧縮ループ (Linux Compressed Loop) のイメージです。Knoppix CD-ROM などのように圧縮された CD-ROM イメージを直接再利用する場合にのみ役立ちます。
cow
- ユーザーモード Linux コピーオンライト (User Mode Linux Copy On Write) のイメージ形式です。
cow
形式が含まれているのは、単に旧バージョンとの互換性を持たせるためです。これは Windows では動作しません。 dmg
- Mac のディスクイメージ形式です。
nbd
- ネットワークブロックデバイスです。
parallels
- Parallels の仮想化ディスクイメージ形式です。
qcow
- 旧式の QEMU のイメージ形式です。これが含まれているのは、単に旧式のバージョンとの互換性を持たせるためです。
vdi
- Oracle 仮想マシンの VirtualBox (Oracle VM VirtualBox) のハードディスクイメージ形式です。
vmdk
- VMware 互換のイメージ形式です (バージョン 1 および 2 では読み取り/書き込みサポート、バージョン 3 では読み取り専用サポート)。
vpc
- Windows 仮想 PC (Windows Virtual PC) のディスクイメージ形式です。
vhd
、または Microsoft の仮想ハードディスクのイメージ形式とも呼ばれます。 vvfat
- 仮想 VFAT のディスクイメージ形式です。
このページには機械翻訳が使用されている場合があります (詳細はこちら)。