пятница, 19 декабря 2008 г.

Как работают снапшоты (снимки) в VMware VI

Снапшот - это снимок состояния виртуальной машины (содержимое памяти, настройки ВМ, содержимое дисков) в определенный момент времени.

Возврат к снапшоту (revert to snapshot) восстанавливает текущее состояние виртуальной машины до сохраненного.

Снапшоты можно делать много раз, один за другим, причем можно создать достаточно развесистое дерево состояний, до 32 уровней вложенности.

В линейном процессе снапшотов каждый снапшот имеет родительский и дочерний, за исключением последнего снапшота, не имеющего дочернего по понятным причинам.
В дереве снапшотов сразу несколько дочерних имеют родительским один и тот же снапшот.

Выбирать точку для создания снапшота следует с осторожностью, и крайне желательно в момент, когда никакие процессы не ведут сетевой активности. Просто потому что если вы создадите снапшот в момент копирования файла по сети, то при откате до этого снапшота восстановится состояние виртуальной машины в момент копирования - и соотв. какие-то процессы могут упасть. Идеальный вариант для снапшотов - выключенная ВМ.

Соотв. в силу существования снапшотов существуют различные режимы для работы виртуальных дисков. А именно существуют независимые диски (independent), на которые снапшоты никак не влияют. Независимые диски могут работать в persistent (все изменения немедленно записываются на диск, и не откатываются даже при возврате к снашоту) и nonpersistent (все изменения откатываются автоматически при выключении машины или возврате к снапшоту). Обращаю ваше внимание, что nonpersistent диск будет возвращен к тому состоянию, в котором находился, когда мы поставили соотв. галочку в свойствах диска, а не к состоянию на момент снапшота.

Механизм работы снапшотов с виртуальными дисками.

В момент снапшота состояние диска замороживается, а технически это выглядит как блокирование vmdk файла в режиме RO, и создается новый -delta файл, в который будут записываться все изменения на диске. Дисковое простарноство под дельта-файлы выделяется строго по 16MB с целью уменьшения количества блокировок метаданных VMFS. При большом количестве изменений на диске дельта может достичь размера самого диска, но это предел, дальше расти уже не будет. При множественных снапшотах дельта-файлов соотв. становится много, и в режим RO переходят дельты для родительского снапшота. Крайне не рекомендуется запускать после снапшота процессы с интенсивной записью на диск, как например дефрагментацию, поскольку дельта очень интенсивно будет расти.

При возврате к последнему снапшоту дельта-файл просто удаляется, и все изменения пишутся в новый дельта-файл. При удалении снапшота накатываются изменения из его дельты на родительский диск (родительскую дельту). Процесс этот весьма ресурсоемкий и может сильно повлиять на работу как самой виртуальной машины, так и остальных виртуальных машин на этом хранилище. Причем при достаточном размере дельты мы получим ситуацию, когда задача "Delete snapshot" свалится по таймауту (по умолчанию 15 мин). Но особо беспокоится не стоит - накат изменений будет продолжаться до победного конца, несмотря на статус fail в vCenter.

Не рекомендуется использование долгоживущих снапшотов на production машинах, поскольку помимо перерасхода дискового пространства мы получим еще и снижение производительности + невозможность изменения размера диска.

Механизм снапшотов используется также в VCB (VMware Consolidated Backup). При резервном копировании ВМ создается снапшот, после чего он полностью копируется. По окончании копирования снапшот удаляется (накатываются изменения).

3 комментария:

  1. Все бы хорошо, но VBC использует снапшоты немного не так, как vCenter, а именно при этом не соханяются (а возможно просто не используются бакапным софтом) состояние памяти и регистров CPU, в результате чего мы можем бакапить через VCB только файлы (в последней серсии VCB 1.5 и VSS совместимые приложения под Win) или целиком VM, не сильно напрягаясь, что же в текущий момент происходит внутри VM на ее FS. Для Win-less VM резервирование виртуалки целиком - это единственный возможный способ ее защиты, и восстановление тоже возможно только всей VM. Не знаю почему ни один бакапный софт не умеет сохранять память и регистры, хотя это могло бы добавить функционала при минимальных накладных расходах.
    PS. Под бакапным софтом имею ввиду Symantec/Veritas NBU или BE, по слухам у конкурентов интеграция с VCB еще хуже.

    ОтветитьУдалить
  2. Удивлен. А как же использует снапшоты vCenter, и какое он вообще отношение к ним имеет?

    ОтветитьУдалить
  3. Хм, а я хочу остановиться на вот этом скрипте, что посоветуете?

    http://www.vmts.net/vmbk.htm

    ОтветитьУдалить