Как правильно отсоединить диск от KVM

Когда я пытаюсь отсоединить диск в KVM, я получаю следующую ошибку:

virsh отсоединить диск vps_99 vde

ошибка: операция не удалась: диск vde не может быть отсоединен - ​​нет адреса PCI для устройства

Я пробовал гуглить, но не могу найти никого с такой же проблемой??

Вот XML-дамп моего VPS:

(root@h2)-(/home/cloud)# virsh dumpxml vps_99
<domain type='kvm' id='218'>
  <name>vps_99</name>
  <uuid>42db1de2-f0d4-1030-ac57-0050560018a2</uuid>
  <memory>524288</memory>
  <currentMemory>524288</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type arch='x86_64' machine='pc-0.12'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>restart</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw'/>
      <source dev='/dev/nbd1'/>
      <target dev='vda' bus='virtio'/>
    </disk>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw'/>
      <source dev='/dev/nbd2'/>
      <target dev='vdb' bus='virtio'/>
    </disk>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw'/>
      <source dev='/dev/nbd3'/>
      <target dev='vde' bus='virtio'/>
    </disk>
    <interface type='bridge'>
      <mac address='00:50:56:00:1b:24'/>
      <source bridge='br0'/>
      <target dev='vnet3'/>
      <model type='virtio'/>
    </interface>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='5903' autoport='yes' keymap='en-us'/>
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
    </video>
  </devices>
  <seclabel type='dynamic' model='apparmor'>
    <label>libvirt-42db1de2-f0d4-1030-ac57-0050560018a2</label>
    <imagelabel>libvirt-42db1de2-f0d4-1030-ac57-0050560018a2</imagelabel>
  </seclabel>
</domain>

Еще одна сумасшедшая вещь заключается в том, что диск, который я указываю как vde, подключается к виртуальному серверу как vdc, как будто он полностью игнорирует мою спецификацию vde.

Если кто-то может сказать мне, как убедиться, что диск подключен как устройство, которое я указываю, я был бы признателен. Amazon Web Services, кажется, может это сделать, так почему бы и мне :)

ОБНОВЛЕНИЕ: после запуска виртуальной машины кажется, что я могу без проблем добавлять и удалять НОВЫЕ диски. Кажется, это только проблемы с отключением дисков, которые были определены в исходном XML, используемом для создания виртуального сервера. Но остается вопрос, как отсоединить диски, которые были определены при определении виртуального сервера?

ОБНОВЛЕНИЕ 2: я также попытался добавить запись <address> для каждого диска, чтобы убедиться, что каждый диск подключен к заранее определенному слоту, т.е. <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>, но по-прежнему не работает отсоединение дисков, и virsh dumpxml vps_99 фактически показывает, что мои записи было полностью удалено / проигнорировано.

ОБНОВЛЕНИЕ 3: я также попытался поместить определение диска во временный XML-файл и запустил: virsh detach-device vps_99 disk.xml Все та же ошибка: ошибка: не удалось отсоединить устройство от ошибки disk.xml: операция не удалась: диск vdi не может быть отсоединенным - нет адреса PCI для устройства


person Daniele Testa    schedule 07.04.2013    source источник


Ответы (1)


Вы можете сделать это с помощью libvirt. Вы должны получить xml-описание устройства как xlmDec.

Например:

virDom.detachDevice(xmldesc)
person Aymen Fitati    schedule 11.04.2013
comment
Это не работает для приводов CDROM и приводит к ошибке error: Operation not supported: disk device type 'cdrom' cannot be detached. - person Manuel Faux; 20.04.2015