フリーのエミュレータQEMUを使おう

 
  YAMAMORI Takenori ●yamamori

●仮想ディスクの作成

ゲストOSをインストールするための仮想ハードディスクは, qemu-imgコマンドで作成します.QEMUでは,次のように, rawまたはqcowのフォーマットの仮想ディスクを使用します.

○rawディスク

rawディスクは,ハードディスクのイメージファイルをそのまま用いる, 最も単純な仮想ディスクです.普通のイメージファイルなので 「mount -o loop,offset=32256」のようにして直接マウントすることもできます.

rawディスクを作成するには,下図のようにディスクサイズを指定して qemu-imgコマンドを実行します.rawフォーマットを指定する-f rawオプションは 省略可能です. なお,rawディスクはholeを含んだファイル(※注)になり, ファイルサイズと実際のディスク使用量が一致しませんので, 図*のように,ls -lsを実行して,ディスク使用量を確認する必要があります.

※注
物理ディスクが割り当てられていない領域を含むファイル. sparseなファイルともいう.
・図 rawディスクを作成
----
$ qemu-img create hda.img 1G    ← 1Gバイトのrawディスクを作成
$ ls -ls hda.img
   0 -rw-------    1 username mygroup  1073741824 May  8 14:10 hda.img
  ===                                  ==========
  ↑ディスク使用量は0Kバイト             ↑ファイルサイズは1Gバイト
○qcowディスク

qcowディスクは,rawディスクとは違って,holeを含まずに効率良く 小さなファイルサイズに収めたフォーマットで, 下図のようにqemu-imgコマンドに-f qcowオプションを指定して作成します. 1Gバイトの仮想ディスクでも,初期状態ではファイルサイズは8Kバイト未満に なっていることがわかります.

・図 qcowディスクを作成
----
$ qemu-img create -f qcow hda.qcow 1G    ← 1Gバイトのqcowディスクを作成
$ ls -ls hda.qcow
   8 -rw-------    1 username mygroup        4144 May  8 14:13 hda.qcow
  ===                                        ====
  ↑ディスク使用量は8Kバイト                 ↑ファイルサイズは4144バイト
                                             (4kバイト単位切り上げで8kバイト)

qcowディスクは,ファイルシステムがholeに対応していなくてもディスク使用量を 節約できるため,たとえば,仮想ディスクをCD-Rなどに保存したい場合に便利です. さらに,圧縮(-c)や暗号化(-e)のオプションも使用できます. ただし,qcowはQEMU専用のフォーマットになるで,「mount -o loop」で 直接マウントすることはできません.

○ディスクイメージの変換

qemu-imgコマンドには,異なるフォーマットの仮想ディスクイメージを 変換する機能があり,たとえば次のようにして,rawディスクをqcowディスクに 変換することができます.

$ qemu-img convert hda.img -O qcow hda.qcow

さらに,VMware(バージョン3.xまたは4.x)の仮想ディスクにも対応しており, すでにVMwareでインストール済みの仮想ディスクがある場合, 次のように変換してQEMUで利用することができます. ここで,VMwareのディスクを明示する-f vmdkオプションを付けても構いませんが, 省略しても自動判定されます.

$ qemu-img convert guest.vmdk hda.img

To『フリーのエミュレータQEMUを使おう』[index]


このページは、技術評論社 Software Design 2005年7月号、『QEMU使いこなしテクニック(Linux編)』の原稿を元に、Web 用に再構成したものです。
To 謎の処理系 SunOS 4.1.4 [Home]
yamamori