実行中のKVM仮想サーバーにファイルベースのディスクをホット追加しようとしています。コマンドを使用して、最初から新しいディスクを作成しました
dd of=/home/cloud/vps_59/test.img bs=1 seek=5G count=0
そして、私はvirshシェルでこれを行うことでゲストにホットアドすることを望んでいました:
virsh # attach-disk vps_59 /home/cloud/vps_59/test.img \
vdd --driver=file --subdriver=raw
ドメインのXML定義は次のようになります。
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/home/cloud/vps_59/root.img'/>
<target dev='vda' bus='virtio'/>
</disk>
<disk type='file' device='disk'>
<driver name='file' type='raw'/>
<source file='/home/cloud/vps_59/test.img'/>
<target dev='vdd' bus='virtio'/>
</disk>
ご覧のように、ドライバー名が間違っています。既存のvda
ディスクと同じように、driver name='qemu'
である必要があります。 --drive=qemu
を試してみましたが、サポートされていないことが記載されています。
次に、Ubuntu 10.04.4 LTSを実行している仮想マシンを再起動して初めて、新しく追加されたドライブを「確認」します。ドライブを「ホットプラグ」にする方法を教えてください。仮想マシンに、再起動せずにすぐに新しいドライブを「認識」させたい。
オプションの数が限られているvirsh attach-disk
の使用は避けるべきであるというメモから始めたいと思います。代わりに、個別の一時XMLファイルで、またはvirt-manager GUIアプリケーションを使用して、希望する正確なディスク形式を指定することをお勧めします(後者の場合は、最初のステップをスキップします)。
以下のディスク定義likeを使用して一時ファイルを作成します。
状況に合わせてプロパティを調整します
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/path/to/disk-image.img'/>
<target dev='vdb' bus='virtio'/>
</disk>
ヒント:現在のXMLドメイン構成を調べて、そこから<disk>
セクションをコピーします。
virsh dumpxml <domainname>
現在、ディスクを現在のドメインに追加する前に、必要なホットプラグカーネルモジュールがゲストにロードされていることを確認してください。
最近のCentOS/RHEL/Fedoraのような一部のLinuxディストリビューションでは、これがカーネルに組み込まれています。この場合は、CONFIG_HOTPLUG_PCI_ACPI
を確認してください。 y
の場合、これで準備は整い、この手順をスキップできます。
modprobe acpiphp
modprobe pci_hotplug
これら2つのモジュールをデフォルトでブート時にロードする場合は、/etc/modules
に追加することを検討してください。
ディスクを実行中のVMを使用して追加します
virsh attach-device <domain name> /path/to/disk.xml
オプションで、--persistent
オプションを追加して、LibvirtがドメインXML定義を「永続的」に更新できるようにします。
最後に、ディスクが実際にホットプラグ挿入されているかどうかをゲストの内部で確認します。 dmesg
で確認できるように、カーネルがトリガーされます。
[ 321.946440] virtio-pci 0000:00:06.0: using default PCI settings
[...]
[ 321.952782] vdb: vdb1 vdb2
上記の例では、パーティションテーブルに2つのパーティションを持つvdb
としてディスクを追加しました。