libvirtd:利用可能なPCIスロットがなくなりました

libvirtd:利用可能なPCIスロットがなくなりました

こんな。今日は、8台のハードドライブデバイスを管理するために新しい仮想マシンを設定したいと思います。

現在、私はFedora 31をホストとして、Debian 9をゲストとして使用しています。ブロックデバイスを仮想マシンに渡したいのですが、残念ながら動作せず、RedHat加入者でなければ正しい情報を見つけることは困難です。

それで私は何をしましたか?次のコマンドを使用してハードドライブを接続しようとしています。

virsh attach-disk Storage_ZFS_\(Debian\) /dev/sdb vdc

残念ながら、次のエラーが発生します。

error: Failed to attach disk
error: internal error: No more available PCI slots

だから私は何を試しましたか?私はいくつかの調査でSUSEで動作することを発見し、<controller type='pci' model='pcie-to-pci-bridge'/>VMセクションのどこかに何かを追加しましたが、残念ながらうまくいきませんでした。次のエラーが発生します。

[root@millenium-fbe48 chairman]# virsh edit Storage_ZFS_\(Debian\) 
error: internal error: Cannot automatically add a new PCI bus for a device with connect flags 800
Failed. Try again? [y,n,i,f,?]: 
error: XML error: The PCI controller with index='0' must be model='pcie-root' for this machine type, but model='pcie-to-pci-bridge' was found instead
Failed. Try again? [y,n,i,f,?]: 
error: XML error: The PCI controller with index='0' must be model='pcie-root' for this machine type, but model='pcie-to-pci-bridge' was found instead
Failed. Try again? [y,n,i,f,?]: 
error: XML error: The PCI controller with index='0' must be model='pcie-root' for this machine type, but model='pcie-to-pci-bridge' was found instead
Failed. Try again? [y,n,i,f,?]: 
error: XML error: The PCI controller with index='0' must be model='pcie-root' for this machine type, but model='pcie-to-pci-bridge' was found instead
Failed. Try again? [y,n,i,f,?]: 
error: XML error: The PCI controller with index='0' must be model='pcie-root' for this machine type, but model='pcie-to-pci-bridge' was found instead
Failed. Try again? [y,n,i,f,?]: 

これを処理する方法とゲストVMにハードドライブを追加する方法を知っている人はいますか?

答え1

次の方法を使用して複数のPCIパススルーデバイスを追加できました。

Attach-interface コマンドを実行すると--config ただ(削除済み --live)、libvirtは必要なことがわかっているpcie-root-portを自動的に追加できます。その後、ゲストデバイスをシャットダウンして再起動して、実行中のゲストインスタンスにデバイスを追加できます。 (ゲストデバイスで単に再起動するだけでは不十分です。新しいqemuプロセスを開始するには完全に終了する必要があります。)

だから基本的に。

  1. virsh attach-device VM_NAME PCI_entry.xml --config
  2. virsh destroy VM_NAME
  3. virsh start VM_NAME

源泉:Re:[libvirt-users]既存の仮想マシンにpciネットワークを追加できません

答え2

問題が解決しました。 PCI/PCIe ブリッジを追加してこの問題を解決する方法がありますが、かなり複雑に見え、情報も不足しています。そこでRedHatが提供するlibvirtドキュメントページを見つけましたが、これには多くの情報が含まれています。要約すると、ゲストVMにブロックデバイスを追加する方法は3つあります。私は簡単な方法を使用しました。目的のターゲットのxmlファイルを編集しvirsh edit "domain"、ファイルに表示される最後のステートメントの下に以下を追加します。

<disk type='block' device='disk'>
      <driver name='qemu' type='raw' cache='none'/>
      <source dev='/dev/sdx'/>
      <target dev='vda' bus='virtio'/>
</disk>

機能するには、まだ「vda」と「sdx」を置き換える必要があります。この方法では、PCI ブリッジが自動的に生成されます。この問題は、この方法を使用すると簡単に解決されます。

記事リンク。13.3.2 ゲストへのハードドライブおよびその他のブロックデバイスの追加

答え3

マシンが動作しているときは --live を使用し、オフラインでは使用しないでください。

Bashでいくつかのテストディスクを作成します。

for i in {1..12};do sudo qemu-img create -f raw testdisk$i.raw 10G;done

Python3にディスクを接続します。

import os
y='g,h,i,j,k,l,m,n,o,p,r,s,t,u,v,y,z'.split(',')
for i in range(1,13):
    s='virsh attach-disk optmb_fileserver '+'/home/gediz/Desktop/testdisk'+str(i)+'.raw '+'vd'+y[i]+' --config --live'
    print(os.popen(s).read())

答え4

仮想マシンをシャットダウンし、次を使用します--persistent

virsh attach-disk GuestVM /dev/sda1 vda --persistent

関連情報