Как склонировать VM на QEMU+KVM и обезличить

Posted by

Цель: Вот я склонировал VM базирующейся на связке QEMU + KVM применительно к Ubuntu 18.04 Server amd64, а что дальше — ведь нужно же ее как-то подготовить перед использование, по аналогии как делается с Windows системами через sysprep. А у меня Ubuntu система — значит и для нее данную процедуру по обезличиванию нужно проделать.

Как я делал клонирование VM, через virt-manager подключаюсь к своему хосту (Ubuntu 18.04 Server + QEMU/KVM), открываю снапшоты у VM, откатываюсь на необходимый и после в свойствах контейнера VM запускаю процесс: «Виртуальная машина» — «Клонировать». VM успешно склонировалась, но вот если запустить эталонную виртуальную машину и склонированную наблюдается что при различных MAC-адресах они обе получают одинаковый IP-адрес от роутера.

Сейчас я с нуля пройдусь по шагам клонирования VM через консоль командной строки на хосте QEMU+KVM хост на базе Ubuntu 18.04 Server amd64

Шаг №1: Проверяю что утилита virt-sysprep доступна в консоли если это не так, то устанавливаю на хост необходимый пакет:

Шаг №2: Клонирую необходимую виртуальную машину:

Шаг №3: Делаем Sysprep для склонированной VM (она у меня под именем UServer1804_CLONE)

О доступных операциях с помощью virt-sysprep

Шаг №4: Проверяю, а запуститься ли теперь виртуальная машина с системой внутри нее. Но вот все те так уже и хорошо, в консоли VM (через virt-manager) вижу:

Domain UServer1804_CLONE started

Booting from Hard Disk…

error: disk lvmid/IDENTIFICATE not found

Entering rescue mode…

grub rescue>

Вопрос почему?

Как я понял, загрузчик не смог найти /boot раздел для обычной загрузки и вывалился в ошибку указал раздел с указанным lvmid — мол хозяин поправь я тебя специально в режим восстановления GRUB RESCUE отправил.

На заметку: В режиме grub rescue> доступны только 4 команды, но это более чем достаточно, а команды: ls, set, unset, insmod

Шаг №5: Посредством команды ls в режиме восстановления grub отобразим все же какие разделы видит grub

Шаг №6: В моем случаем у меня система полностью установлена на LVM, т. е. Раздел boot расположен на lvm разделе, а значит укажем загрузчику использовать раздел lvm:

Шаг №7: Загружаем необходимые модули дабы внесенные изменения запустили систему:

На заметку: Самым правильным способом считаю самим пройтись и определить какие модули нужны будут для загрузки и добавить, а не пользоваться найденными на просторах статей интернета. Так Вы запомните ошибки и сообщения которые возникают когда система не может загрузится и для Вас не будет в дальнейшем паники, что делать? У меня такого никогда не было.

и IP адрес уже получила не такой как у основной ВМ с которой выполнялось клонирование:

Если же система не загрузилась, то вот пример наиболее часто встречающихся модулей на загрузку:

На заметку: На действующей системе можно посмотреть какие модули при загрузке используется посмотрев файл: cat /boot/grub/grub.cfg

Авторизуюсь в системе и отправляю ее в ребут дабы убедиться что она загрузится самостоятельно:

Но вот не задача, снова такая же ошибка, что опять и так каждый раз вручную править — это бред, нужно разобрать реальное практическое решение. Повторяю шаги выше, но систему не перезагружаю.

и вот после перезагрузки система запустилась без какой-либо ошибки. Теперь работает.

На этом у меня пока все, с уважением автор блога Олло Александр aka ekzorchik.