Skip to main content
  1. Posts/

Error: Failed to Attach Device, No More Available PCI Slots

·2 mins·
libvirt kvm libvirt
Table of Contents

Issue
#

Saat ingin menambahkan device seperti disk atau interface ke VM muncul error seperti berikut.

$ virsh attach-disk --domain domname --source /var/lib/libvirt/images/disk2.qcow2 --target vdb --targetbus virtio --cache none --config --live
error: Failed to attach disk
error: internal error: No more available PCI slots

Solution
#

Hal tersebut karena controller pci yang tersedia di VM telah terpakai sehingga perlu ditambakan slotnya.

Sebelum menambahkan PCI matikan terlebih dahulu VM di libvirt.

virsh shutdown domname

Selanjutnya cek machine type yang digunakan oleh VM. Terletak di bawah element <os> seperti contoh berikut.

  <os>
    <type arch='x86_64' machine='pc-q35-6.2'>hvm</type>
    <boot dev='hd'/>
  </os>

q35 machine type

Tipe q35 menggunakan controller pcie-root dan untuk menambahkan perangkat PCI maka perlu menambahkan jumlah pcie-root-port

Edit konfigurasi XML pada domain VM

virsh edit domname

Kemudian tambahkan konfigurasi berikut dibawah controller pcie-root lalu simpan.

<controller type='pci' model='pcie-root-port'/>
<controller type='pci' model='pcie-root-port'/>

Ini akan menambahkan dua perangkat PCI sehingga Anda bisa menambahkan dua disk atau interface ke dalam VM.

Hidupkan kembali VM lalu test kembali penambahan device.

virsh start domname
$ virsh attach-disk --domain domname --source /var/lib/libvirt/images/disk2.qcow2 --target vdb --targetbus virtio --cache none --config --live
Disk attached successfully

Jika Anda ingin menambahkan perangkat PCI lama, maka diperlukaan controller khusus seperti

<controller type='pci' model='pcie-to-pci-bridge'/>

i440fx (pc) machine type

Tipe i440fx merupakan tipe lama yang menggunakan controller pci-root. Tipe ini dapat menambahkan perangkat PCI lama sampai 31 slot.

Edit konfigurasi XML pada domain VM

virsh edit domname

Kemudian ubah konfigurasi machine dibawah element <os> menjadi pc-i440fx-6.2

  <os>
    <type arch='x86_64' machine='pc-i440fx-6.2'>hvm</type>
    <boot dev='hd'/>
  </os>

Anda dapat melihat tipe dan versi machine yang tersedia dengan perintah.

virsh capabilities

Kemudian hapus semua konfigurasi controller yang memakai pcie-root dan pcie-root-port lalu tambahkan controller pci-root

<controller type='pci' index='0' model='pci-root'/>

Hidupkan kembali VM lalu test kembali penambahan device.

virsh start domname
$ virsh attach-disk --domain domname --source /var/lib/libvirt/images/disk2.qcow2 --target vdb --targetbus virtio --cache none --config --live
Disk attached successfully

Related

Block I/O Tuning in Libvirt
·1 min
libvirt kvm libvirt
Direct Kernel Boot in Libvirt
·2 mins
libvirt libvirt kvm
Using Tunnel in Libvirt
·2 mins
libvirt libvirt kvm
Quality of Service di Libvirt
·1 min
libvirt libvirt kvm
Direct Attachment Interface in Libvirt
·2 mins
libvirt libvirt kvm
Create Virtual Networks in Libvirt
·5 mins
libvirt libvirt kvm