KVMとLibvirt-新しいvirtioディスクをホットプラグする方法


24

実行中の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>

ご覧のとおり、ドライバー名が間違っているdriver name='qemu'ため、既存のvdaディスクのままにしてください。試しました--drive=qemuが、サポートされていないことを示しています。

第二に、Ubuntu 10.04.4 LTSを実行している仮想マシンを再起動すると、新しく追加されたドライブのみが「表示」されます。ドライブを「ホットプラグ」するにはどうすればよいですか?仮想マシンに、再起動せずにすぐに新しいドライブを「表示」させたい。


1
無関係な提案、使用qemu-imgの代わりにdd-その引数がより自然に来ると同じことを行いますqemu-img create test.img 5G
chutz

回答:


31

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

  1. 以下のようなディスク定義で一時ファイルを作成します。

    状況に合わせてプロパティを調整します

    <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
    

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

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

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

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

参照資料


また--persistent、仮想マシンをパワーオフしたときにこの構成が失われないようにするために追加するべきではありませんか?
chutz
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.