Соглашусь с
3ton по поводу LVM. Но делать резервную копию по-живому это экстрим.
Можете получить полуобновлённую базу данных, полуживую файловую систему и так далее. За исключением того что сделаете копию не только диска но и памяти и в момент паузы виртуальной машины.
Без доступа внутрь виртуалки нельзя гарантировать что на диск сброшены все данные.
Мой совет - пересмотрите технологию бэкапов.
Я практикую следующий подход:
Перед обновлением системы на сервере делаю полный бэкап по следующей схеме.
- Остановка виртуалки (виртуалки реагируют на ACPI снаружи)
- Снапшот LV привязанного к виртуалке.
- Старт виртуалки.
При использовании скриптов (не вручную) даунтайм получится практически равным рестарту виртуалки.
- Обновление (системы) Если обновляется кернел то делаю по аналогичной схеме делаю второй LV снапшот.
- копирование снапшота(ов)
- удаление снапшотов.
Имейте ввиду что необходимо иметь запас места для снапшота на время его жизни (копирования) так как свободное место на LVM начнёт быстро таять как только виртуалка начнёт активно изменять данные на своём диске.
Тоесть нет смысла ежедневно делать резервную копию того что не изменялось (система и программы).
А ежедневные бэкапы делаю при помощи скриптов + bareos/bacula.
Такой подход в целом уменьшает размер резервных копий.
Ну и хорошо после создания бэкапа делать его восстановление и проверку.
Для виртуалки обычно хватает разворачивания на другом физическом сервере (чтобы небыло конфликтов) и проверки запущенности всех важных сервисов и доступности баз данных (тестовые скрипты).
Далее можно оптимизировать. Не бэкапить swap виртуалок. Его можно убрать при копировании снапшота. А лучше swap выдавать отдельным LV. Тогда его не нужно и снапшотить.
В виртуалках я также по аналогии с отдельным свапом делаю отдельные диски для DB, логов, и так далее. Всё это позволяет ужать размер бэкапа системы до 3-5 гиг в несжатом виде.