Как правильно отсоединить диск от KVM
Когда я пытаюсь отсоединить диск в KVM, я получаю следующую ошибку:
virsh detach-disk vps_99 vde
ошибка: операция не удалась: диск vde не может быть отсоединен - нет PCI-адреса для устройства
Я пробовал Google, но не могу найти кого-то еще с той же проблемой??
Вот 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-адреса для устройства
1 ответ
Вы можете сделать это с libvirt
, Вы должны получить XML-описание устройства как xlmDec
,
Например:
virDom.detachDevice(xmldesc)