Клонирование тома с помощью Libvirt Python createXMLFrom приводит к завершению файла при чтении данных: Ошибка ввода/вывода

#python #qemu #kvm #libvirt

Вопрос:

Я пытаюсь клонировать том с помощью:

 libvirt_conn = libvirt.openAuth(<qemu_addr>, <auth>, 0)
pool = libvirt_conn.storagePoolLookupByName(<pool_name>)
original_volume = pool.storageVolLookupByName(<original_volume_name>)
new_volume_xml = <xml_string>
new_volume = pool.createXMLFrom(new_volume_xml, original_volume)
 

Когда я запускаю это, я получаю следующую ошибку:
End of file while reading data: Input/output error

Когда я пытаюсь:

 libvirt_conn = libvirt.openAuth(<qemu_addr>, <auth>, 0)
pool = libvirt_conn.storagePoolLookupByName(<pool_name>)
original_volume = pool.storageVolLookupByName(<original_volume_name>)
new_volume_xml = <xml_string>
try:
    new_volume = pool.createXMLFrom(new_volume_xml, original_volume)
except:
    <next libvirt command>
 

Я получаю client socket is closed ошибку. Я пробовал редактировать /etc/libvirt/libvirtd.conf с помощью:

 min_workers = 5
max_workers = 20
log_level = 1
log_filters="1:libvirt 1:util 1:qemu"
log_outputs="1:file:/var/log/libvirt/libvirtd.log"
keepalive_interval = -1
 

Когда я перезапускаю libvirtd и хвост /var/log/libvirt/libvirtd.log , я не вижу ничего полезного. У меня такое чувство, что сокет закрывается, потому что клонирование тома занимает много времени, но я не уверен, как дольше держать сокет libvirt/qemu открытым. Возможно ли это?

Комментарии:

1. Вы могли бы попробовать virsh vol-clone --pool $POOL --vol $ORIGVOLNAME $NEWVOLNAME и посмотреть, не приведет ли это к ошибкам. Если это так, то, вероятно, это ошибка libvirt. Длительно работающие API не должны приводить к закрытию сокета, если только libvirtd не перестанет отвечать на запросы (что было бы ошибкой).