О снапшотах виртуальных машин VMware vSphere мы уже много писали (например, можно пискать по тэгу "Snapshot"). Постараемся в этой заметке просуммировать информацию о том, что из себя представляют файлы снапшотов виртуальных машин vSphere 5 и как они обрабатываются.
Для того, чтобы снять снапшот виртуальной машины (virtual machine snapshot), можно кликнуть на ней правой кнопкой в vSphere Client и выбрать соответствующий пункт "Take Snapshot" из контекстного меню:
Далее появится окно снятия снапшота ВМ:
Обратите внимание на опцию "Snapshot the virtual machine's memory". Если эту галку убрать, то снапшот не будет содержать состояние памяти виртуальной машины, т.е. при откате к нему ВМ будет в выключенном состоянии. Плюс такого снапшота - он создается намного быстрее, поскольку не надо сохранять память машины в отдельный файл.
Вторая опция - это возможность "заморозки" файловой системы виртуальной машины на время создания снапшота. Она доступна только при условии установленных в гостевой ОС VMware Tools, в составе которых идет Sync Driver. Эта функциональность нужна для создания консистентного состояния виртуальной машины для снапшота на уровне файловой системы, что особенно необходимо при создании резервных копий (используют все системы резервного копирования для виртуализации, например, Veeam Backup and Replication). Данная возможность (quiesce) поддерживается не всегда - об условиях ее применения можно прочитать тут.
После создания снапшота заглянем в Datastore Browser на хосте VMware ESXi через vSphere Client:
Выделенные зеленым объекты - это абстрации двух снапшотов виртуальных машин. Чтобы понять, что собой представляют эти абстрации, откроем каталог с виртуальной машины в консоли (Putty по SSH):
Здесь мы уже видим, что снапшот на самом деле - это набор из четырех файлов:
<имя ВМ>-[шесть цифр]-delta.vmdk - файл данных диска отличий от базового диска
<имя ВМ>-[шесть цифр].vmdk - заголовочный файл
<имя ВМ>.vmsd - текстовый файл с параметрами снапшота (связи в дереве, SCSI-нода, время создания и т.п.)
<имя ВМ>.vmsn - файл с сохраненной памятью виртуальной машины
Самый главный файл - это, конечно, <имя ВМ>-[шесть цифр]-delta.vmdk. Он содержит блоки данных хранимые в формате так называемых redo-логов (он же дочерний диск - child disk). Он же sparse-диск, то есть диск, который использует технологию Copy-On-Write (COW) при работе с данными. Идея технологии copy-on-write — при копировании областей данных создавать реальную копию только когда ОС обращается к этим данным с целью записи. Таким образом, этот виртуальный диск содержит только измененные от родительского диска области данных (delta).
По умолчанию размер COW-операции составляет 64 КБ, что эквивалентно 128 секторам (подробнее). Но сам снапшот растет блоками данных по 16 МБ. То есть запись 64 КБ данных исходного диска может породить прирост 16 МБ данных в диске снапшота.
Следующий интересный тип файла - <имя ВМ>.vmsd. Это обычный текстовый файл, который можно открыть в редакторе и увидеть все отношения между родительским и дочерними дисками, а также другую интересную информацию:
Ну и последнее - это память виртуальной машины, хранящаяся в файле <имя ВМ>.vmsn. Его, понятное дело, может не быть, если вы создавали снапшот выключенной ВМ или убрали галку, о которой написано в самом начале.
По умолчанию снапшоты складываются в папку на VMFS-томе, где лежит виртуальная машина. Но это размещение можно сменить, поменяв рабочую папку (Working Directory) в настройках виртуальной машины через vSphere Client или в vmx-файле, для чего нужно добавить или поменять строчку:
workingDir="/vmfs/volumes/SnapVolume/Snapshots/"
Кстати, эта же папка задает и размещение файла подкачки ВМ (*.vswp). Если вы его хотите оставить на прежнем месте, нужно добавить строчку:
sched.swap.dir = "/vmfs/volumes/VM-Volume1/MyVM/"
Ну и напоследок, какие операции поддерживаются для виртуальных машин со снапшотами:
Операция
Требования и комментарии
Storage vMotion
Для хостов ESX/ESXi 4.1 или более ранних - не поддерживатся. Для ESXi 5.0 или более поздних - поддерживается.
vMotion
Поддерживается. Файлы снапшотов должны быть доступны на целевом хосте. Необходима версия hardware version 4 или более поздняя (ESX/ESXi 3.5 и выше).
Cold migration
Поддерживается для хостов ESX/ESXi 3.5 или более поздних.
Fault Tolerance
Не поддерживается. Для создания снапшота нужно отключить FT.
Hot clone
Поддерживается, но снапшотов не должно быть больше 31 штуки.
Cold clone
Поддерживается. Однако целевая ВМ будет без снапшотов.
Более подробную информацию о снапшотах можно найти в KB 1015180.
Ну и небольшая подборка ссылок по траблшутингу снапшотов в VMware vSphere: