web-dev-qa-db-ja.com

KVM and Libvirt-どうすれば新しいvirtioディスクをホットプラグできますか?

実行中の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を実行している仮想マシンを再起動して初めて、新しく追加されたドライブを「確認」します。ドライブを「ホットプラグ」にする方法を教えてください。仮想マシンに、再起動せずにすぐに新しいドライブを「認識」させたい。

24
Daniele Testa

オプションの数が限られているvirsh attach-diskの使用は避けるべきであるというメモから始めたいと思います。代わりに、個別の一時XMLファイルで、またはvirt-manager GUIアプリケーションを使用して、希望する正確なディスク形式を指定することをお勧めします(後者の場合は、最初のステップをスキップします)。

  1. 以下のディスク定義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>
    
  2. 現在、ディスクを現在のドメインに追加する前に、必要なホットプラグカーネルモジュールがゲストにロードされていることを確認してください。

    最近のCentOS/RHEL/Fedoraのような一部のLinuxディストリビューションでは、これがカーネルに組み込まれています。この場合は、CONFIG_HOTPLUG_PCI_ACPIを確認してください。 yの場合、これで準備は整い、この手順をスキップできます。

    modprobe acpiphp
    modprobe pci_hotplug
    

    これら2つのモジュールをデフォルトでブート時にロードする場合は、/etc/modulesに追加することを検討してください。

  3. ディスクを実行中のVMを使用して追加します

    virsh attach-device <domain name> /path/to/disk.xml
    

    オプションで、--persistentオプションを追加して、LibvirtがドメインXML定義を「永続的」に更新できるようにします。

  4. 最後に、ディスクが実際にホットプラグ挿入されているかどうかをゲストの内部で確認します。 dmesgで確認できるように、カーネルがトリガーされます。

    [  321.946440] virtio-pci 0000:00:06.0: using default PCI settings
    [...]
    [  321.952782]  vdb: vdb1 vdb2
    

    上記の例では、パーティションテーブルに2つのパーティションを持つvdbとしてディスクを追加しました。

参考文献

31
gertvdijk