環境: CentOS 5.6 (x86_64) / 2.6.18-238.9.1.el5 / kvm-83-224
症状: 今まで動いていた VM がブートできない。新規にインストールしようとすると HDD のサイズが 0 MB (Unknown) となる、または設定したサイズよりも小さく表示される。
原因: QCOW2 形式のイメージファイルが raw 形式として認識されているため。
解決策: 既存の VM に関しては virsh edit で <disk type='file' device='disk'> の下の行の type='raw' を type='qcow2' に変更。新規にインストールする場合は、virt-install で一度 VM を作成した後、Ctrl-C で抜け、virsh edit で上記書き換えを行った上でインストール用の設定 (CD-ROM からのブートなど) を行い、virsh start してインストール実施。インストール後、インストール用の設定を解除する。
*
qemu-img で qcow2 イメージを作成して virt-install で VM インストール、という手順でやっていたのですが、CentOS 5.6 から動かなくなりました。virt-install の --disk オプションに format 引数が用意されていない (
format 引数が入ったのは virtinst 0.500.1 からで、CentOS 5.x に付属のものは 0.400.3) ため、今まではすべて (qcow2 の場合も含め) type='raw' で VM 設定ファイルが作成されてきました。
CentOS 5.5 までは qemu-kvm の -drive 引数に format=raw が指定されていても、ファイルのヘッダが qcow2 であれば自動的に認識されていたのですが、CentOS 5.6 付属のバージョンでは自動認識が broken、あるいは format を尊重するようになった ということのようです。
virt-install のメジャーアップデートをするつもりはないだろうから、qemu-kvm 側の挙動を変えるのが無難な落としどころかなぁ。RHEL ではどうなんでしょう。
(追記: 2011-06-05)
/etc/libvirt/qemu.conf にパラメータがありました。セキュリティ上の理由で、自動検出はデフォルトで無効になっているとのこと。
# If allow_disk_format_probing is enabled, libvirt will probe disk
# images to attempt to identify their format, when not otherwise
# specified in the XML. This is disabled by default.
#
# WARNING: Enabling probing is a security hole in almost all
# deployments. It is strongly recommended that users update their
# guest XML elements to include
# elements instead of enabling this option.
# allow_disk_format_probing = 1
ただ、現状では、virsh edit で type 属性を消しても type='raw' が自動補完されてしまうので、このパラメータの意味はあんまりなさそう。