#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 не перестанет отвечать на запросы (что было бы ошибкой).