Вопрос или проблема
Я пытаюсь создать несколько виртуальных машин с помощью virt-manager
, и независимо от того, что я делаю, получаю эту ошибку:
Не удалось завершить установку: 'внутренняя ошибка: не удалось запустить гостя: ошибка при запуске libvirt_lxc: не удалось создать /var/lib/libvirt/images/vol.qcow2/.oldroot: это не каталог
'
Трассировка последнего вызова:
Файл "/usr/share/virt-manager/virtManager/asyncjob.py", строка 65, в cb_wrapper
callback(asyncjob, *args, **kwargs)
Файл "/usr/share/virt-manager/virtManager/createvm.py", строка 2001, в _do_async_install
installer.start_install(guest, meter=meter)
Файл "/usr/share/virt-manager/virtinst/install/installer.py", строка 701, в start_install
domain = self._create_guest(
Файл "/usr/share/virt-manager/virtinst/install/installer.py", строка 649, в _create_guest
domain = self.conn.createXML(install_xml или final_xml, 0)
Файл "/usr/lib/python3.9/site-packages/libvirt.py", строка 4035, в createXML
если ret равно None:raise libvirtError('virDomainCreateXML() не удалась', conn=self)
libvirt.libvirtError: внутренняя ошибка: не удалось запустить гостя: ошибка при запуске libvirt_lxc: не удалось создать /var/lib/libvirt/images/vol.qcow2/.oldroot: это не каталог
Я пытался установить в /etc/libvirt/qemu.conf пользователя и группу, чтобы соответствовать моим пользователю и группе, установил libvirt-glusterfs, и это не сработало. Я использую: libvirtd (libvirt) 7.0.0
и virt-manager v.3.2.0
.
Для справки, я использую Manjaro Linux i3wm и мой ядро — 5.11
Я нашел проблему. На самом деле, их две: первая заключалась в том, что у меня не был установлен cpio
на моей машине. Это можно легко исправить с помощью sudo pacman -S cpio
.
Другая проблема в том, что по умолчанию virsh
, когда запускается с sudo
, ведет себя иначе по сравнению с запуском virsh
под текущим пользователем. Это лучше объясняется в этом треде.
Предлагаемые решения — либо установить LIBVIRT_DEFAULT_URI
, либо раскомментировать uri_default = "qemu:///system"
в /etc/libvirt/libvirt.conf
и, возможно, также в $XDG_CONFIG_HOME/libvirt/libvirt.conf
.
Это решило мою проблему, и теперь я могу создавать VMs с virt-manager
, но я также рекомендую проверить Cockpit Project.
Ответ или решение
Теория
В мире виртуализации создание виртуальных машин (VM) через virt-manager
часто является удобным инструментом для администрирования и управления. Однако, иногда пользователи могут сталкиваться с ошибками на различных этапах установки и конфигурации. В данном случае проблема возникновения ошибки при создании виртуальной машины связана с внутренними процессами, управляемыми libvirt
и, возможно, специфичными настройками вашей системы.
Чтобы понять ваш случай, важно рассмотреть несколько ключевых аспектов. В первую очередь, ошибка указала на невозможность создания директории /var/lib/libvirt/images/vol.qcow2/.oldroot
, что может свидетельствовать о проблемах с файловой системой или с правами доступа. Этот путь должен быть точно настроен для хранения образов виртуальных машин. Второй аспект — это роль пакета cpio
, который отвечает за манипуляции с архивами и может участвовать в процессе установки, особенно если внутренняя логика требует распаковки или модификации файлов во время инициализации виртуальной машины.
Пример
Представьте ситуацию, когда пользователи пытаются запустить виртуальную машину через virt-manager
и сталкиваются с ошибкой, аналогичной вышеупомянутой. Этот сценарий типичен для многих дистрибутивов Linux, таких как Manjaro, где системные настройки отличаются от стандартных. При этом, ошибка может возникать из-за отсутствия определенных пакетов, которые должны быть предварительно установлены.
В вашем примере две основные проблемы были четко выделены: отсутствие пакета cpio
и отличие поведения virsh
, если его использовать с sudo
. Установив недостающие пакеты командой sudo pacman -S cpio
, и настроив переменные окружения либвирта для работы без необходимости повышенных привилегий, удалось решить проблему. Это показывает, как небольшие нюансы могут влиять на работу с виртуальными машинами.
Применение
Теперь, когда мы разобрали теорию и пример, давайте рассмотрим, как вы можете сделать свои действия более эффективными и избегать подобных проблем в будущем.
-
Проверка зависимости: Убедитесь, что у вас установлены все необходимые зависимости для работы с
virt-manager
иlibvirt
. Манжаро, как и другие дистрибутивы на базе Arch Linux, имеет возможность быстрого поиска и установки пакетов черезpacman
. Используйтеsudo pacman -S <package-name>
для установки недостающих пакетов. -
Настройка libvirt: Обратите особое внимание на настройки
libvirt
иvirt-manager
. Изучите, что означает каждый параметр в конфигурационных файлах/etc/libvirt/qemu.conf
и/etc/libvirt/libvirt.conf
. Убедитесь, что пути к директориям, доступным дляlibvirt
, имеют правильные разрешения доступа. -
Работа с URI: Настройте
LIBVIRT_DEFAULT_URI
, чтобы избегать проблем с правами доступа при запуске команд от имени вашего пользователя. Это также помогает избежать конфликтов в поведенииvirsh
при использовании сsudo
. -
Документация и ресурсы: Пользовательская документация, такая как материалы от Cockpit Project, может быть ценным ресурсом. Изучайте и применяйте лучшие практики, указанные в таких руководствах.
-
Резервное копирование и тестирование: Перед выполнением значительных изменений в конфигурации создавайте резервные копии. Это позволит быстро восстановить систему в случае продолжительных сложностей.
Учитывая все вышеупомянутое, теперь вы лучше подготовлены для эффективного использования virt-manager
в вашей серверной или рабочей среде, снижая риск возникновения подобных ошибок в будущем. Подход к решению проблем через глубокое понимание системы и внимательное отношение к системным сообщениям — это ключ к успешной виртуализации.