Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
第10章 qemu-img および QEMU ゲストエージェント
/usr/share/doc/qemu-*/README.systemtap
。
10.1. qemu-img の使用
チェック
ディスクイメージの filename で整合性チェックを実行します。
# qemu-img check -f qcow2 --output=qcow2 -r all filename-img.qcow2
qcow2
および vdi
形式のみが整合性チェックに対応します。
-r
を使用すると、チェック中に見つかった不整合を修復しようとしますが、-r leaks
クラスターのリークで使用されると修復され、-r all
ですべての種類のエラーが修正されます。これには、間違った修正を選択したり、すでに発生している可能性のある破損の問題を隠したりするリスクがあることに注意してください。
Commit
指定したイメージファイル (filename) に記録された変更を、qemu-img commit コマンドでファイルのベースイメージにコミットします。オプションで、ファイルのフォーマットタイプ (format) を指定します。
# qemu-img commit [-fformat
] [-tcache
] filename
convert
convert
オプションは、認識されているイメージ形式を別のイメージ形式に変換するために使用されます。
# qemu-img convert [-c] [-p] [-fformat
] [-tcache
] [-Ooutput_format
] [-ooptions
] [-Ssparse_size
] filename output_filename
-p
パラメーターはコマンドの進捗を示し (すべてのコマンドではなく任意)、-S
フラグは、ディスクイメージに含まれる sparse file の作成を許可します。ゼロのみを含む (何も含まない) 物理ブロックを除いて、あらゆる目的のスパースファイルは標準ファイルのように機能します。オペレーティングシステムがこのファイルを認識すると、たとえ実際にはディスクを使用していなくても、存在しているものとして扱われ、実際のディスク領域を消費します。ゲスト仮想マシン用のディスクを作成する場合に特に役立ちます。これにより、ディスクに必要なディスク領域よりもはるかに多くのディスク領域が使用されるようになります。たとえば、10Gb のディスクイメージで -S を 50Gb に設定すると、実際には 10Gb しか使用されていなくても、そのディスク領域の 10Gb は 60Gb に見えます。
filename
形式を使用して、ディスクイメージ output_filename
をディスクイメージ output_format
に変換します。ディスクイメージは、-c
オプションで圧縮するか、-o encryption
を設定して -o
オプションで暗号化できます。-o
パラメーターで使用できるオプションは、選択した形式とは異なることに注意してください。
qcow2
形式のみが暗号化または圧縮をサポートします。qcow2
暗号化は、安全な 128 ビット鍵で AES 形式を使用します。qcow2
圧縮は読み取り専用であるため、圧縮したセクターが qcow2
形式から変換されると、非圧縮データとして新しい形式に書き込まれます。
Create
サイズsize
、フォーマットformat
、新しいディスクイメージの ファイル名を作成します。
# qemu-img create [-fformat
] [-o options] filename [size
][preallocation
]
-o backing_file=filename
で指定されている場合は、イメージ自体とベースイメージの違いのみが記録されます。バッキングファイルは、commit コマンドを使用しない限り変更されません。この場合、サイズの指定は必要ありません。
-o preallocation=off|meta|full|falloc
が含まれます。事前に割り当てられたメタデータを持つイメージは、イメージよりも大きくなります。ただし、イメージサイズが大きくなると、イメージのサイズが大きくなるとパフォーマンスが向上します。
full
割り当ての使用には、イメージのサイズが大きい場合に時間がかかる可能性があることに注意してください。完全な割り当てと時間が経つ必要がある場合、フラックを使用 falloc
時間を節約できます。
Info
info パラメーターは、ディスクイメージのfilenameに関する情報を表示します。info オプションの形式は、以下のとおりです。
# qemu-img info [-f format] filename
qcow2
イメージが使用している領域を表示します。これは、qemu-img を実行して行います。使用中のイメージが、qemu-img check コマンドで qemu-img info コマンドの出力と一致するイメージであることを確認できます。「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 format] [--output=output_format] filename コマンドは、イメージファイル名のメタデータとそのバッキングファイルチェーンをダンプします。具体的には、このコマンドは、指定されたファイルのすべてのセクターの割り当て状態を、それをバッキングファイルチェーンに割り当てる最上位のファイルとともにダンプします。たとえば、c.qcow2 → b.qcow2 → a.qcow2 などのチェーンがある場合、a.qcow2 が元のファイルである場合、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},
JSON 形式の詳細については、qemu-img (1) の man ページを参照してください。
リベース
イメージのバッキングファイルを変更します。
# qemu-img rebase [-f format] [-t cache] [-p] [-u] -b backing_file [-F backing_format] filename
qcow2
形式のみです。
サイズの変更
サイズ 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]
スナップショット
イメージ (ファイル名) の既存のスナップショット (スナップショット) を一覧表示、適用、作成、または削除します。
# qemu-img snapshot [ -l | -a snapshot | -c snapshot | -d snapshot ] filename
サポート対象の形式
qemu-img は、ファイルを次のいずれかのフォーマットに変換するように設計されています。
-
raw
- Raw ディスクイメージ形式 (デフォルト)これは、ファイルベースで最も高速な形式になります。ファイルシステムがホールをサポートしている場合 (たとえば、Linux の ext2 または ext3、Windows の NTFS)、書き込まれたセクターのみがスペースを予約します。qemu-img info を使用して、イメージが使用する実際のサイズを取得するか、Unix/Linux の ls -ls を取得します。Raw イメージは最適なパフォーマンスを提供しますが、Raw イメージで使用できるのは非常に基本的な機能のみです (たとえば、スナップショットは使用できません)。
-
qcow2
- QEMU イメージ形式。最も汎用性が高く、機能セットが最適な形式です。これを使用して、オプションの AES 暗号化、zlib ベースの圧縮、複数の VM スナップショットのサポート、およびホールをサポートしないファイルシステム (Windows 上の非 NTFS ファイルシステム) で役立つ小さなイメージを使用します。この拡張機能セットはパフォーマンスに影響を与えることに注意してください。
raw
、または qcow2
形式に変換するために、以下の形式も認識してサポートします。イメージの形式は、通常、自動的に検出されます。この形式を raw
または qcow2
に変換することに加えて、raw
または qcow2
から元の形式に戻すことができます。
- bochs
- Bochs ディスクイメージ形式。
- cloop
- Linux Compressed Loop イメージ。Knoppix CD-ROM などにある直接圧縮 CD-ROM イメージを再利用する場合にのみ役立ちます。
- cow
- User Mode Linux Copy On Write イメージ形式。cow 形式は、以前のバージョンとの互換性のためにのみ同梱されています。Windows では動作しません。
- dmg
- Mac ディスクイメージフォーマット。
- nbd
- ネットワークブロックデバイス。
- parallels
- Parallels 仮想化ディスクイメージフォーマット。
- qcow
- 古い QEMU イメージフォーマット。古いバージョンとの互換性にのみ含まれます。
- vdi
- Oracle VM VirtualBox ハードディスクイメージ形式。
- vmdk
- VMware 互換のイメージフォーマット (バージョン 1 および 2 の読み取り/書き込みサポート、およびバージョン 3 の読み取り専用サポート)。
- vpc
- WindowsVirtualPC のディスクイメージフォーマット。
vhd
、または Microsoft 仮想ハードディスクイメージフォーマットとも呼ばれます。 - vvfat
- 仮想 VFAT ディスクイメージフォーマット。