Назад | Перейти на главную страницу

Создание нового домена в libvirt из базового домена

TL; DR внизу

Я создаю веб-интерфейс для libvirt как проект. Я использую libvirt-php в качестве языковой привязки к libvirt, и все работает, кроме создания домена, вроде того.

Проблема, с которой я столкнулся, связана с созданием домена, в котором я хотел бы создать домен на основе базового домена. Я уже задавал подобный вопрос раньше, где я задавал почти тот же вопрос. Я получил полезный ответ от модератора, который посоветовал мне проверить, как virt-install этого добился.

Итак, я сделал, я запустил virt-install, чтобы увидеть, как они достигли создания нового домена из базового, но, к моему разочарованию, это не сработало так, как я ожидал, так как в конечном итоге он просто поделился данным объемом хранилища, который я указал, если только Я что-то напортачил.

Поэтому я выбрал другой подход, в котором я бы создал новый том хранилища на основе того, который я хотел бы использовать в качестве хранилища для нового домена, используя virsh vol-create-from команду, или в libvirt-php libvirt_storagevolume_create_xml_from() функция.

Этот подход работал хорошо, я мог создать домен, указать объем хранилища, который я хотел бы использовать в качестве образа базового диска, и он просто сработал. Однако я сталкивался с новой проблемой всякий раз, когда пытался создать несколько доменов одновременно.

Видите ли, поскольку создание домена - это трудоемкий процесс, я решил просто поместить это задание в очередь beanstalkd и использовать supervisord, чтобы поддерживать выполнение процессов, создавая рабочие процессы для управления новыми заданиями. Здесь и возникла новая проблема, поскольку в журналах ошибок было следующее сообщение: Requested operation is not valid: volume 'ubuntu-14.04.3-x64' is still being allocated.

Получается, что мне нужно дождаться клонирования тома, прежде чем клонировать его снова. Это проблема, с которой я столкнулся.

TL; DR: Пытаясь создать домен в libvirt из базового домена, пробовали следующее:

Решение, в котором я бы создал новый том для хранения на основе базы, кажется наиболее удобным, если бы оно позволяло мне создавать несколько томов на основе этой базы одновременно.

Вопрос:

Итак, мой вопрос: возможно ли:

Я бы просто использовал qemu-img для этого. Если вы хотите увидеть код, посмотрите, как это делает vdsm.