KVM virt-clone во время работы виртуальной машины

Можно ли клонировать работающую машину KVM без таких инструментов, как virt-clone?

У них уже есть оригинальный vm в производстве, я не могу его закрыть. Если меня не волнует временное повреждение данных (что может исправить исходный fsck) на клоне, могу ли я просто скопировать файл образа qcow с новым именем, создать новое определение vm, которое использует этот диск, и запустить компьютер?

5 ответов

Если вас не интересуют данные в памяти, вы можете сделать снимок устройства поддержки и сделать копию этого снимка.

Это, конечно, требует пула хранения с поддержкой моментальных снимков (в основном LVM или ZFS, так как BTRFS ужасно медленный для хранения виртуальных машин).

Я подозреваю, что клонировать диск можно только избегая использования virt-clone, поскольку (как уже упоминалось) virt-clone откажется работать с работающей виртуальной машиной. Таким образом, вам придется использовать что-то еще, чтобы сделать копию фактического образа диска.

Я думаю, что основной ответ заключается в том, что вы можете попытаться надеяться, что вам повезет.

Получить "снимок" конфигурации гостя достаточно просто (virsh dumpxml NAME сделаю это). Если у вас более одного диска (то есть, если у вас есть диск с ОС и n+1 дисков с данными), я бы попытался избежать клонирования диска с ОС и посмотреть, смогу ли я использовать новую установку вместо этого.

Однако, если есть какой-либо другой метод, кроме копирования образов дисков, я бы, вероятно, предпочел бы его. Например, если бы все это было связано с сервером базы данных, я бы, вероятно, использовал собственные средства базы данных для безопасного копирования данных между экземплярами. Если вы имеете дело с файловой системой напрямую, то, возможно, стоит посмотреть, может ли что-то вроде DRBD помочь или что-то простое, например, rsync.

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

У меня был рабочий vm. Находясь в нем, я подключился к базовой машине KVM по ssh и скопировал ее резервный диск и моментальный снимок на диск nvme, используя cp -ar. Я также отформатировал и разбил упомянутый nvme перед копированием... Затем использовал

virsh edit mykvm 

изменил идентификатор и места на диске и имя...

и выключил мою машину и перезагрузил новую. Пропали только открытые окна и хромированная сессия...

Кажется, он работает, если вы не пишете какие-то системные файлы или файлы приложений...

Я, конечно, не буду использовать это. Я поэкспериментирую и после экспериментов перенесу результаты в исходный файл.

Однако если бы мне когда-нибудь пришлось использовать его в качестве основного снимка ОС. Я бы просто проверил файловую систему, а затем системные файлы (sha1sum) или использовал бы любые встроенные команды для проверки системных файлов.

Когда гостевой агент установлен и образ вашего диска имеет формат qcow2, вы также можете попробовать:

  1. Создайте снимки диска:
    virsh snapshot-create-as ${vm} backup --disk-only --atomic --no-metadata --quiesce.
  2. Скопируйте исходный образ диска.
  3. Объедините файл снимка с исходным образом диска:
    virsh blockcommit ${vm} ${disc} --active --wait --pivot.
  4. проверить состояние диска:virsh domblklist ${vm} --details.
  5. Удалить временные файлы *.backup.
  6. Дамп определения виртуальной машины:virsh dumpxml ${vm} > ${vm}.xml.

Это полностью выполнимо с форматом образа диска RAW. Я не знаю о qcow2...

Debian.img: загрузочный сектор x86; раздел 1: ID=0x83, активный, начальный заголовок 32, начальный сектор 2048, 497664 сектора; раздел 2: ID=0x5, начальный заголовок 59, начальный сектор 501758, 104353794 секторов, смещение кода 0x63

Debian2.img: загрузочный сектор x86; раздел 1: ID=0x83, активный, начальный заголовок 32, начальный сектор 2048, 497664 сектора; раздел 2: ID=0x5, начальный заголовок 59, начальный сектор 501758, 104353794 секторов, смещение кода 0x63

Для теста я собрал работающую систему Linux Mint со всем. Затем создал новый виртуальный компьютер с новым образом, в нем даже не было несоответствий файловой системы при загрузке. Хотя это был всего лишь небольшой настольный компьютер, я собирался "клонировать" работающий сервер LAMP с высокой производительностью операций ввода-вывода в базе данных.

Меня действительно не волнует несогласованность, я просто хотел сэкономить время для перезагрузки среды LAMP. Думаю, было бы неплохо создать базовый образ в начале или сделать снимок первого веб-сервера, но после его полной настройки и проверили, было слишком поздно, они сразу начали использовать его в производстве.

Другие вопросы по тегам