В VirtualBox начиная с версии 3.2.12 возможно удаление снимков в работающем состояния ВМ. Это позволяет нам сделать резервную копию образа виртуального диска "на лету", без остановки работы виртуальной машины и использования специальных файловых систем. Давайте рассмотрим пример использования этой возможности.
У меня имеется виртуальная машина с именем xpn1 с одним виртуальным жестким диском с именем xp_1.vmdk. Сделаем снимок состояния системы, для этого введем в командной строке команду:
$ VBoxManage -q snapshot xpn1 take snapshot1
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Где -q запрещает вывод дополнительных сообщений при выполнении команды, xpn1 - имя ВМ, а snapshot1 - имя создаваемого снимка. Выведем список жестких дисков:
UUID: 8ff5f016-761d-4ea0-9a9a-bbf18931026b$VBoxManage -q list hdds
Parent UUID: base
Format: VMDK
Location: State: locked read
Type: normal
Usage: xpn1 (UUID: 1ffa28fa-4487-4b25-9b2e-67b40ebffde2) [snapshot1(UUID: c7b2a9d4-f603-4f15-bad4-3ed564f963fe)]
UUID: ce732950-08c9-4ac1-9b8d-feef90ac9d19
Parent UUID: 8ff5f016-761d-4ea0-9a9a-bbf18931026b
Format: VMDK
Location:
/home/ilya/.VirtualBox/Machines/xpn1/Snapshots/{ce732950-08c9-4ac1-9b8d-feef90ac9d19}.vmdk
State: locked write
Type: normal
Usage: xpn1 (UUID: 1ffa28fa-4487-4b25-9b2e-67b40ebffde2)
В данном примере я использую файл образа диска в формате VMDK, а в virtualbox по умолчанию используется формат VDI. Но это не имеет значения, просто замените в примерах расширения файлов с VMDK на vdi. Мы видим, что создался новый файл снимка с UUID = ce732950-08c9-4ac1-9b8d-feef90ac9d19. Теперь ВМ использует этот файл для сохранения всех своих данных, а старый файл остается неизменным, вот для него то я и создаю резервную копию:
$cp /home/ilya/.VirtualBox/HardDisks/xp_1.vmdk
/home/ilya/.VirtualBox/HardDisks/xp_1_bak.vmdk
После создания копии файла снимка, он нам больше не нужен. Поэтому мы удаляем его:
$ VBoxManage -q snapshot xpn1 delete snapshot1
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Все процесс создания резервной копии файла виртуального диска завершен. Естественно, все что ВМ пишет на диск в то время когда мы создаем копию, не попадет в этот файл. Процесс создания резервной копии может занять много времени если у вас большой размер виртуального диска.
Теперь давайте расмотрим процесс востанавления из резервной копии. Для этого нам необходимо завершить работу виртуальной машины и заменить текущий образ диска ВМ на созданную нами копию и на всякий случай сохраним текущий образ:
$mv /home/ilya/.VirtualBox/HardDisks/xp_1.vmdk /home/ilya/.VirtualBox/HardDisks/xp_1.vmdk.bak
$mv /home/ilya/.VirtualBox/HardDisks/xp_1_bak.vmdk /home/ilya/.VirtualBox/HardDisks/xp_1.vmdk
Запускаем виртуальную машину:
$VBoxManage startvm xpn1
Если все прошло успешно удаляем копию образа диска:
$rm /home/ilya/.VirtualBox/HardDisks/xp_1.vmdk.bak
Процесс востанавления ВМ из резервной копии завершен. Мне кажется все просто. Для автоматизации процесса создания резервных копий, вы можете создать сценарий на основе данных команд и запускать его по расписанию в определенное вами время, желательно когда нагрузка на хост и гостевую систему минимальна.
Замечание, для людей не знакомых с командной строкой linux:
cp - команда копирования файла(в windows можно заменить на copy).
mv - команда перемещения или переименования файла (move).
rm - удаление файла (del)