Технический справочник. Снимки виртуальных машин
1. Снимки
Снимки - это функция хранилища, которая позволяет администратору создать точку восстановления ОС, приложений и данных виртуальной машины на определенный момент времени. Снимки сохраняют данные, присутствующие в настоящий момент в образе жесткого диска виртуальной машины, в виде тома COW, что позволяет восстановить данные, существовавшие на момент создания снимка. При создании снимка поверх текущего слоя создается новый слой COW. Все операции записи, выполняемые после создания снимка, записываются в новый слой COW.
Важно понимать, что образ жесткого диска виртуальной машины представляет собой цепочку из одного или нескольких томов. С точки зрения виртуальной машины эти тома выглядят как один образ диска. Виртуальная машина не обращает внимания на то, что ее диск состоит из нескольких томов.
Термины "том COW" и "слой COW" используются взаимозаменяемо, однако "слой" точнее отражает временный характер снимков. Каждый снимок создается для того, чтобы администратор смог отменить неудовлетворительные изменения, внесенные в данные после его создания. Снимки обеспечивают функциональность, аналогичную функции Отменить (Undo), присутствующей во многих текстовых процессорах.
| Снимки жестких дисков виртуальных машин, помеченных как общие (shareable), а также тех, которые основаны на подключении Прямых LUN (Direct LUN), нельзя сделать ни "на лету", ни как-либо иначе. |
Три основные операции с снимками:
-
Создание, которое включает в себя первый снимок, созданный для виртуальной машины.
-
Предварительный просмотр, который включает в себя собственно предварительный просмотр снимка с целью определить, следует ли восстанавливать системные данные на момент времени, когда был сделан этот снимок.
-
Удаление, которое включает в себя удаление точки восстановления, которая больше не требуется.
Сведения об операциях с снимками применительно к конкретным задачам см. в разделе Снимки Руководства по управлению виртуальными машинами.
2. Снимки "на лету" в zVirt
Снимки жестких дисков виртуальных машин, помеченных как общие (shareable), а также тех, которые основаны на подключении Прямых LUN (Direct LUN), нельзя сделать ни "на лету", ни как-либо иначе.
Снимок любой другой виртуальной машины, которая не находится в процессе клонирования или миграции, можно сделать во время ее работы, приостановки или остановки.
Когда инициируется создание снимка виртуальной машины "на лету", Менеджер управления отправляет хосту SPM запрос на создание нового тома, который будет использоваться виртуальной машиной. Когда новый том готов, Менеджер управления использует VDSM для связи с libvirt и qemu на хосте, где запущена виртуальная машина, чтобы он начал использовать новый том для операций записи виртуальной машины. Если виртуальная машина может писать в новый том, то операция создания снимка считается успешной и виртуальная машина прекращает писать в предыдущий том. Если виртуальная машина не может писать в новый том, то операция создания снимка считается неуспешной и новый том удаляется.
С момента начала создания снимка "на лету" до момента готовности нового тома виртуальной машине требуется доступ как к своему текущему, так и к новому тому, поэтому оба тома открыты как на чтение, так и на запись.
Виртуальные машины с установленным гостевым агентом, поддерживающим "заморозку", могут обеспечить согласованность файловой системы по всем снимкам. Зарегистрированные гостевые машины Linux могут устанавливать qemu-guest-agent, чтобы включить "заморозку" перед созданием снимков.
Если во время создания снимка на виртуальной машине присутствует гостевой агент, совместимый с "заморозкой", то VDSM использует libvirt для связи с агентом, чтобы подготовиться к созданию снимка. Незавершенные операции записи завершаются, после чего файловые системы "замораживаются" перед созданием снимка. Когда создание снимка завершено и libvirt переключает виртуальную машину на новый том для выполнения операций записи на диск, файловая система "размораживается" и запись на диск возобновляется.
Все попытки создания снимков "на лету" делаются с включенной "заморозкой". Если команда создания снимка завершается неудачно из-за отсутствия совместимого гостевого агента, то создание снимка "на лету" инициируется повторно без использования флага "заморозки использования". Когда виртуальная машина возвращается в состояние до создания снимка с "замороженными" файловыми системами, выполняется ее чистая загрузка и проверка файловой системы не требуется. Если же виртуальная машина восстанавливается с предыдущего снимка без "заморозки" файловой системы, то требуется проверка файловой системы при загрузке.
3. Создание снимка
В zVirt первоначальный снимок виртуальной машины отличается от последующих снимков тем, что первоначальный снимок сохраняет свой формат: либо QCOW2, либо RAW. Первый снимок виртуальной машины использует существующие тома в качестве базового образа. Дополнительные снимки - это дополнительные слои COW, отслеживающие изменения, которые после создания предыдущего снимка были внесены в данные, хранящиеся в образе.
Как показано на рисунке, при создании снимка - тома, составляющие виртуальный диск, служат базовым образом для всех последующих снимков.
При создании последующих (после первоначального) снимков создаются новые тома COW, в которых будут храниться данные, созданные или измененные после создания снимка. Каждый вновь создаваемый слой COW содержит только метаданные COW. Данные, созданные в процессе использования и работы виртуальной машины после создания снимка, пишутся в этот новый слой COW. Когда виртуальная машина используется для изменения данных, существующих в предыдущем слое COW, данные читаются с предыдущего слоя и пишутся на самый новый слой. Виртуальные машины находят данные, проверяя каждый слой COW от самого нового до самого старого, причем это происходит прозрачно для виртуальной машины.
4. Предварительный просмотр снимков
Чтобы выбрать снимок для восстановления виртуального диска с него, администратор может предварительно просмотреть все ранее созданные снимки.
Из доступных каждой гостевой машине снимков администратор может выбрать том снимка для предварительного просмотра его содержимого. Как показано на рисунке, каждый снимок сохраняется как том COW, и при предварительном просмотре новый слой предварительного просмотра копируется из просматриваемого снимка. Гостевая машина взаимодействует с предварительным просмотром, а не с фактическим томом снимка.
После предварительного просмотра выбранного снимка администратор может "закрепить" слой предварительного просмотра и восстановить с него данные гостевой машины до состояния, зафиксированного на снимке. В таком случае гостевая машина подключается к слою предварительного просмотра.
Завершив предварительный просмотр снимка, администратор может выбрать Отменить (Undo), чтобы удалить слой предварительного просмотра снимка. Слой, содержащий сам снимок, сохраняется, несмотря на удаление слоя предварительного просмотра.
5. Удаление снимка
Отдельные снимки, которые больше не нужны, можно удалить. После удаления снимка нельзя уже будет восстановить виртуальный диск до соответствующей точки восстановления. При этом не обязательно освобождается место на диске, которое занимал снимок, и не удаляются данные. Дисковое пространство будет освобождено только в том случае, если последующий снимок перезапишет данные удаленного. Если, например, удаляется третий снимок из пяти, то неизмененные данные третьего снимка должны быть сохранены на диске, чтобы можно было использовать четвертый и пятый снимки. Однако если четвертый или пятый снимок перезаписал данные третьего, то третий снимок становится избыточным и дисковое пространство можно освободить. Помимо возможного освобождения дискового пространства, удаление снимка также может повысить производительность виртуальной машины.
Удаление снимка обрабатывается как асинхронное блочное задание, в котором VDSM протоколирует операцию в файле восстановления для виртуальной машины, чтобы задание можно было отследить, даже если VDSM перезапустится или виртуальная машина выключится во время операции. После начала операции удаляемый снимок нельзя просмотреть или использовать в качестве точки восстановления, даже если операция завершится сбоем или будет прервана. В операциях, в которых активный слой должен быть объединен со своим родительским слоем, операция разбивается на два этапа, во время которых данные копируются с активного слоя на родительский, а запись на диск зеркалируется как на активном, так и на родительском слое. Наконец, задание считается выполненным после того, как данные в удаляемом снимке будут объединены с его родительским снимком, а VDSM синхронизирует изменения по всей цепочке образов.
| Если попытка удаления неудачна, устраните основную проблему (например, отказ хоста, недоступность устройства хранения или даже временную проблему с сетью) и повторите попытку. |