Снапшоты в VMware vSphere и все о них

Снапшоты в VMware vSphere и все о них

Снапшоты в VMware vSphere и все о них

Всем привет сегодня хочу затронуть вопрос снапшотов (snapshots) в VMware vSphere. Поговорим, что это такое, из чего состоит, плохо это или хорошо и где применяется. Думаю это актуальный вопрос и многие хотели бы в нем разобраться, да и я освежу это в памяти, и что то может переосмыслить.

Что такое snapshot

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

Где применим снапшот

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

Где применим снапшот

Как создать снапшот в VMware vSphere

Сама процедура очень простая и сейчас будет описана. Если же вы захотите ее автоматизировать, то советую почитать Как создать snapshot виртуальной машины по расписанию в VMware vCenter 5.5.

сразу подчеркиваю shapshot это не замена бэкапа, запомните это

Вибираете любую виртуальную машину, щелкаете по ней правым кликом и из контекстного меню выбираете Snapshot > Take Snapshot

снапшот vmware esxi 5.5

В следующем окне задаем имя snapshot и при желании описание в поле description/ Обратите внимание на две возможные галки

Описание параметров снимка

  • Snapshot the virtual machine's memory > данная опция нужна для того, чтобы во время снятия snapshot esxi виртуалки было состояние оперативной памяти, что при откате даст работающую виртуальную машину. Если вы ее снимите, то вернувшись из снапшота виртуальная машина будет выключена, но зато такой снапшот будет создаваться быстрее, так как нет необходимости сохранять оперативную память в файл, особенно если память большая и постоянно обновляется.
  • Quiesce guest file system (need VMware Tools installed) > Это процесс при котором подготавливаются данные на виртуальном диске в состояние требуемое для резервного копирования. Заморозить гостевую файловую систему (требуется установка VMware Tools и ее драйвер Sync Driver) позволяет гарантировать, что данные гостевой операционной системы останутся не поврежденными в снимке.

В итоге VMware Tools с помощью VMware Snapshot Provider запускает создание VSS snapshot внутри гостевой ОС. После чего все VSS writers (смотрим их командой "vssadmin list writers") в гостевой ОС получают запрос и подготавливают соответствующие приложения к бэкапу (происходит запись всех транзакций из памяти на диск). Когда все VSS writers заканчивают работу, они сообщают службе VMware Tools через VMware Snapshot Provider, который, в свою очередь, говорит VMware о том, что снапшот можно снять.
Таким образом все приложения резервного копирования для VMware vSphere используют следующие комбинации при отдании команды на создание снапшота VMware (заметьте, что процесс непосредственно создания снапшота целиком и полностью контролируется самой VMware)

esxi snapshot

Если делать бэкап без опции Quiesce guest file system, то могут быть большие проблемы при восстановлении контроллера домена или Exchange сервера.

Вот как выглядит структура файлов до снятия снапшота в VMware vSphere. Более подробно о форматах esxi файлов читайте по ссылке.

до снятия снапшота в VMware vSphere

Теперь посмотрим, что изменится после снятия снимка виртуальной машины esxi 5.5. Как видите добавились файлы с форматом vmsn и добавленным в название 000001. Это и есть жесткий диск новых данных после снапшота.

после снятия снапшота в VMware vSphere

Если посмотреть на эти же файлы в консоли ssh, то этот файл на самом деле состоит из четырех. У меня на скриншоте два снапшота и в сумме они занимают 8 фалов.

vmware snapshots

  • <name VM>-[шесть цифр]-delta.vmdk - файл данных диска отличий от базового диска
  • <name VM>-[шесть цифр].vmdk - заголовочный файл
  • <name VM>.vmsd - текстовый файл с параметрами снапшота (связи в дереве, SCSI-нода, время создания и т.п.)
  • <name VM>.vmsn - файл с сохраненной памятью виртуальной машины

Как можно предположить основной файл это delta, который включает в себя все отличительные данные после снапшота от основного виртуального диска. Данный виртуальный диск состоит из блоков данных хранимых в формате redo-логов (или просто дочерний диск - child disk). Он же sparse-диск, то есть диск, который использует технологию Copy-On-Write (COW) при работе с данными. Идея технологии copy-on-write — при копировании областей данных создавать реальную копию только когда ОС обращается к этим данным с целью записи. Таким образом, этот виртуальный диск содержит только измененные от родительского диска области данных (delta).

файл.vmsd. Это текстовый файл, открыв в редакторе вы увидите все отношения между родительским и дочерними дисками, а также другую интересную информацию

файл.vmsd

Хочу напомнить, что снапшоты лежат вместе с виртуальной машиной но их расположение можно поменять.

В гостевой ос

Что вы обнаружите например в событиях гостевой системы при создании снапшота без галки Snapshot the virtual machine's memory и включенной на Quiesce guest file system. Вы в просмотре событий, в журнале Приложения обнаружите ошибку VSS с кодом 12289 (Ошибка теневого копирования тома: Непредвиденная ошибка DeviceIoControl). Можете на нее забить, так как она происходит из за флоппи диска в конфигурации виртуальной машины.

Quiesce guest file system

так же если посмотреть через клиента VMware vSphere датастор на котором лежит виртуалка то вы обнаружите файл архив vss_manifests*.zip с конфигами с описанием всех найденных VSS writers в гостевой ОС.

Снапшоты в VMware vSphere и все о них-01

Содержимое vss_manifests*.zip.

Снапшоты в VMware vSphere и все о них-02

если в  архиве vss_manifests.zip только файл backup.xml — это означает, что снапшот по факту был сделан без использования VSS

Также стоит добавить некоторые требования к Quiesce guest file system

  • Поддержка Операционной системой консистентных снимков (VSS)
  • VSS компоненты VMware Tools установлены
  • Отсутствие динамических дисков внутри гостевой машины (Если внутри гостевой системы будет присутствовать хоть один динамический диск — не важно системный он или нет, то VSS задействован не будет. Снапшот будет создаваться успешно, но vss_manifests.zip будет пустым, как и логи событий внутри гостевой ОСи. Это правило действует для гостевых ОСей Windows 2008 и выше)
  • Должна работать служба VSS в гостевой ОС

VSS- это сервис, который всего навсего перед бэкапом заставляет базу данных записать все транзакции на диск, далее БД приостанавливает свою работу, затем создаётся теневая копия тома, на что уходит несколько секунд, Далее БД продолжает свою работу в обычном режиме, а бэкап сливается уже с теневой копии. В VMWare теневая копия не создаётся, а создаётся delta vdmk, при этом исходный vdmk становится доступным на чтение и содержит консистентные данные, что позволяет его скопировать в качестве бэкапа.

Чем плохи снапшоты

На своей практике могу точно сказать, что минусов в разы больше чем плюсов.

Плюсы снапшотов

  • Возможность тестирования новых настроек или обновлений с возможностью легкого отката
  • Резервное копирование виртуальных машин на лету без остановки

Такие снапшоты делаются на небольшой промежуток времени, до суток. Потестили и удалили.

Минусы снапшотов

  • snapshot быстро растут особенно при часто обновляемых данных. Растут они блоками по 16 мб. Если у вас например приложение СУБД, которое имеет много транзакций, то оно заполонит ваш датастор очень быстро, и может получиться так что на нем кончится место и виртуальная машина может перестать работать.
  • Еще большой проблемой являются длинные цепочки снапшотов, сделанных на разных этапах настройки, штук так по 15 или 20. Все это вызывает торможение виртуальной машины и хранилище отжирая лишние iops.  Чем больше у вас цепочка тем дольше по ней идти до последнего снимка.

Минусы снапшотов

  • Так же когда снапшот делает или удаляется хранилище испытывает дополнительную нагрузку, так как на датастор сбрасывается память и снимок
  • Из за снапшотов вы не сможете использовать  Fault Tolerance или Storage VMotion, так как привязаны к хранилищу с вашими snapshot.
  • Вы не сможете расширить виртуальный диск со снапшотом

Ну думаю вы поняли, что в продакшине их лучше не делать, по возможности сразу их удаляйте, а если уж они у вас есть, то не делайте их более 3

Консолидация и удаление снапшотов

Удаление snapshot vmware

И так рассмотрим процедуру удаления снапшота. Выше мы узнали, что это снимки это зло, и вот еще почему. Не совсем понятное поведение снапшота при его удалении и слиянии с основным виртуальным диском vm машины. Для удаления и слияния вам потребуется свободное место на вашем сторадже VMFS, это еще более актуально когда снимков несколько. Выше я привет снапшот как это может выглядеть. Предположим у вас виртуалка с тремя снимками вот таких вот размеров.

  • 10 гб
  • 20 гб
  • 30 гб

Удаление snapshot vmware-01

Вы допустим хотите удалить все снапшоты и жмакаете Delete All в Snapshot Manager, далее идет вот такая операция Snapshot 3 сливается со Snapshot 2, но при этом сам Snapshot 3 остается на томе VMFS

Удаление snapshot vmware-02

В итоге первого шага мы получаем уже 90 гб (60+30). Теперь Snapshot 2 который весит уже 50 гб сливается с Snapshot 1, при этом Snapshot 2 и 3 не удаляются пока. Из этого следует что у нас уже занято 140 гб на хранилище.

Удаление snapshot vmware-03

Как только результирующий Snaphot 1 в 60 гб сольется с основным виртуальным диском при этом сам виртуальный диск flat в размере не меняется, поскольку он фиксирован (изменяется только содержимое блоков). И только затем все снапшоты удаляются (все 140 ГБ).

так что видите запас нужно всегда иметь, минимум 10 процентов.

Консолидация snapshot vmware

И так consolidation или консолидация, это по сути удаление снапшота, чаще всего оставленного каким нибудь средством резервного копирования, например veeam. Процесс consolidation vm я уже описывал, там все просто, но не понятно на сколько это влияет на датастор в плане производительности.

Что влияет на время консолидации в виртуальной машине

  • Размер delta-дисков - очень важный параметр. Чем больше данных в дельта-диске, тем дольше их нужно применять к основному (базовому) диску.
  • Число снимков и их размеры. Чем их больше, тем все будет дольше идти по времени. Кроме того, при нескольких снапшотах консолидация происходит в несколько этапов, описано выше.
  • Производительность подсистемы хранения, включая FC-фабрику, Storage Processor хранилищ, LUN (число дисков в группе, тип RAID массива).
  • Тип данных в файлах снапшотов (нули или случайные данные).
  • Нагрузка на хост-сервер ESXi при создании снапшота.
  • Нагрузка виртуальной машины на подсистему хранения в процессе консолидации. Например, почтовый сервер, работающий на полную мощность, может очень долго находится в процессе консолидации снапшотов.

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

Замирание stun виртуальной машины в VMware vSphere

Если вы как и я долго уже работаете с гипервизором Vmware ESXI 5.5, то наверняка обращали внимание, что бывают случаи, что виртуалка подвисает на какое то время, или дико тормозит, а потом работает как ни в чем не бывало. За это в vmware отвечает параметр stun или как мы выше смотрели quiescence. Когда это происходит виртуалка не может ничего делать, она чаще всего падает по пингу и недоступна, и перестает отвечать на операции ввода/вывода. Если сказать по простому то ее как будто поставили на паузу,  а на уровне ввода-вывода совершаются только операции, касающиеся выполняемой задачи (например, закрытие прежнего VMDK-диска и переключение операций чтения-записи на новый диск при операциях со снапшотами).

Параметр Stun в виртуальной машины нужен, в большинстве случаев, для того, чтобы сделать ее на время изолированной от окружающего мира для выполнения значимых дисковых операций, например, консолидация. Это может занимать несколько секунд (и даже десятков), но часто это происходит на время около секунды и даже меньше, все зависит от нагрузки хранилища, у меня бывали случаи, что если виртуалка толстая и снапшот здоровый, время stun доходило и до минуты, что сразу вызывало бурю паники, что у нас все сломалось и что вообще блин происходит, паникеры одним словом, просто не знающие как это работает.

Когда может быть заметен stun vm машины

  1. Во время выполнения процедуры приостановки виртуальной машины (suspend). Тут происходит такое подмораживание, чтобы скинуть память VM на диск, после чего перевести ее в приостановленное состояние.
  2. Ну как все уже поняли во время создания снапшота, нужно закрыть старый диск и начать писать в новый.
  3. Консолидация (удаление) снапшота, подробно описано выше.
  4. При выполнении миграции с помощью vMotion. Слегка напомню данный механизм, во первых оперативная память передается от одной машины к целевой VM без подмораживания, но затем происходит такой же stun, как и при операции suspend, с тем только отличием, что маленький остаток памяти (минимальная дельта) передается не на диск, а по сети. После этого происходит операция resume уже на целевом хосте. Пользователь этого переключения, как правило, не замечает, так как время этого переключения очень жестко контролируется и чаще всего не достигает 1 секунды. Если память гостевой ОС будет меняться очень быстро, то vMotion может затянуться именно во время этого переключения (нужно передать последнюю дельту).
  5. Горячая миграция хранилищ Storage vMotion. Здесь stun случается дважды: сначала vSphere должна поставить Mirror Driver, который будет реплицировать в синхронном режиме операции ввода-вывода на целевое хранилище. При постановке этого драйвера происходит кратковременный stun (нужно также закрыть диски). Но и при переключении работы ВМ на второе хранилище происходит stun, так как нужно удалить mirror driver, а значит снова пере открыть диски уже на целевом хранилище.

Думаю вы теперь чуть больше представляете что такое снапшот и как и для чего он нужен.

Материал сайта pyatilistnik.org

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

я в гугл