Как правильно работать со снапшотами виртуальных машин

    «Snapshot» в переводе с английского означает «выстрел» или «мгновенный фотоснимок». Снапшот — это своего рода фотоснимок виртуальной машины (ВМ), слепок её конкретного состояния. Виртуальная машина может использоваться для различного рода экспериментов, или в нее могут вноситься изменения, которые затем нужно быстро откатить назад. Именно для того, чтобы каждый раз не мучиться восстановлением предыдущего состояния ВМ и существуют снапшоты, возвращающие ВМ к исходному состоянию. Снапшоты — не такая уж простая операция, во всяком случае, делаться она должна по правилам, о которых мы сегодня и расскажем.

    image

    Что такое снапшот?


    Снапшот сохраняет состояние виртуальной машины и данные по ней в определенный момент времени.

    • Состояние относится к энергетическим ресурсам виртуальной машины (например, включена, выключена, условное состояние);
    • Данные включают в себя все файлы виртуальной машины, включая диски, память и другие устройства, такие как виртуальные сетевые карты.

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

    Лучшие практики


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

    1) Снапшот — не бэк-ап.


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

    2) Снапшоты образуют цепочки или деревья.


    VMware советует делать в одной цепочке только 2–3 снапшота:

    a. Большее число снапшотов или снапшоты большого размера могут вызвать уменьшение производительности виртуальной машины и хоста.

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

    c. Файл снапшота может оказаться поврежденным.

    d. Размер диска снапшотов оказывает непосредственное влияние на продолжительность времени, которое потребуется на удаление снапшота, относящегося к данной виртуальной машине.
    image
    Деревья снапшотов на Windows и Linux

    3) Не делайте снапшотов памяти виртуальной машины:


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

    b. Если нет острой потребности в возвращении виртуальной машины к конкретному состоянию памяти, отключите опцию «Память». Состояние памяти редко может потребоваться.


    4) Используйте более одного снапшота для промежутка времени в 24–72 часа.


    Хотя 2–3 дня — это рекомендуемый период, иногда снапшот хранится 5 дней, а затем автоматически удаляется:

    a. Это предотвращает снапшоты от разрастания до такого большого размера, который может вызвать проблемы при удалении его с диска виртуальной машины.

    b. Сделайте снапшот и удалите его сразу после того, как внесете необходимые коррективы.

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

    5) Виртуальные машины с несколькими дисками:


    a. Снапшот может повлиять на дочерний или резервный диск: чем больше операций совершается с диском, тем больше он становится.

    b. Требования к свободному пространству дочернего диска дополняют требования к родительскому диску, от которого он зависит.

    c. Дочерний диск может вырасти до такого размера, что заполнит все пространство для хранения.

    d. Существует правило «Без снапшотов» для дополнительных дисков размером 100 Гб и больше, поскольку есть вероятность заполнения хранилища данных и прекращения работы всех виртуальных машин, которые используют одно и то же хранилище.

    e. Дополнительные диски более 100 Гб размером считаются независимыми — это предотвращает переход влияние снапшота с родительского диска на дочерний.
    image

    Вместо заключения


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

    Снапшот несет следующую информацию:

    • Настройки виртуальной машины;
    • Состояние дисков виртуальной машины;
    • Содержимое памяти виртуальной машины (только при острой необходимости).

    Стоит учитывать особые требования к виртуальной машине, если такие существуют. Перечисленные лучшие практики предназначены для того, чтобы ваша виртуальная машина была максимально производительна при создании снапшотов.
    Cloud4Y 74,41
    #1 Корпоративный облачный провайдер
    Поделиться публикацией
    Комментарии 11
    • +1
      Хорошо бы добавить правило удаления нескольких снапшотов. От порядка удаления может сильно отличаться количество операций ввода-вывода.
      • 0
        Спасибо, получил ответы на интересующие вопросы. Возможно, вы внесете ясность в следующее: VPS-провайдеры часто предлагают возможность создавать снапшоты инстансов, которые возможно одним кликом развернуть в другом дата-центре (в другой стране, например). Как я полагаю, в таком случае снапшот — полноценная копия инстанса, весьма близкая к бэкапу (образу). Возможно все же снапшот в таком случае нечто большее, нежели просто журнал изменений исходного виртуального диска?
        • 0
          Возможно снепшот разворачивается в полный образ при восстановлении и/или пересылается diff от базовой ВМ.
          • 0
            Сам снапшот это журнал изменений, но логическое представление для тех или иных необходимый действий может быть разное. Снапшот позволяет сделать даже на включенной виртуальной машине её копию на момент создания снапшота, а соотвеnственно мы можем клонировать также и в другой ЦОД.
          • 0
            Дополнительные диски более 100 Гб размером считаются независимыми — это предотвращает переход влияние снапшота с родительского диска на дочерний.

            Исправьте эту фразу, я только после пятого прочтения догадался что вы хотели сказать.

            «Независимые диски» позволяют отключить создание снепшотов для конкретного vmdk и проделывать другие интересные штуки.
            • 0
              Если нет острой потребности в возвращении виртуальной машины к конкретному состоянию памяти, отключите опцию «Память». Состояние памяти редко может потребоваться.


              Снэпшот нужен для того, чтобы можно к нему восстановиться. Если в виртуальной машине лежит что-то, кроме файлового сервера или AD, а к примеру база данных, то как же из такого снэпшота без памяти можно восстановить БД?

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

              И вовсе не рассказывается о последствиях в плане сложности, или вообще возможности, восстановления из снэпшота без памяти.

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


              Кстати говоря, я конечно понимаю, что это статья «как пользоваться снэпшотами», а не «как ими не пользоваться», но стоило бы чуточку более широко раскрыть тему, в каких случаях ими категорически не стоит пользоваться. Ведь дело не тоько в занятом пространстве, а и в других потенциальных проблемах, ведь сам VMWare не зря же сама рекомендует вообще не включать снэпы на высоконагруженных задачах. К примеру:

              • Удаление снэпшота и консолидация это весьма трудозатратный процесс с точки зрения производительности дисковой подсистемы и как следствие дополнительной нагрузки на виртуальную машину.
              • Просто сам факт наличия снэпа уже может вносить существенные накладные расходы и тормозить виртуальную машину
              • Ну и консолидация на практике ни раз заканчивается крахом и повреждением виртуальной машины, достаточно погуглить фразу "vmware consolidation failed recovery"
              • 0
                то как же из такого снэпшота без памяти можно восстановить БД?

                Прекрасно, так как вторая галка говорит приложению сбросить кэши и сделать консистентную точку отката через VSS, pre-freeze/post-thaw скрипты или на уровне ФС благодаря особенностям хранения (WAL в Postgres).

                А вот что получится при захвате оперативки представить сложно, в лучшем случае будет crash consistent снепшот как при потере питания с откатом на последней незавершенной транзакции.
                • 0
                  Во-первых, не у всех стоит Windows, чтобы использовать VSS и не у всех Postgres.
                  Во-вторых, об этом и речь, что «просто если убрать галочку и больше ничего не делать», такие crash consistent снепшоты иногда полезны, но в большинстве случаев бесполезны. По-этому нужны какие-то агенты, скрипты, интеграции.
                  • 0
                    Это не повод использовать снепшоты с оперативкой, жаль нельзя вообще запретить их создание.
                    А агенты уже установлены — это VMTools к которым надо лишь добавить готовые скрипты (CommVault большие молодцы, что выложили их в паблик).
                    • 0
                      Чтобы «лишь добавить скрипты CommVault» нужен собственно CommVault ;)
                      Который в свою очередь умеет работать с натаповскими снепшотами и если есть HardWare-Assistant снэпшоты СХД, то рекомендуется использовать именно их на высоконагруженных задачах.
                      И тут круг замкнулся.
                      • 0
                        Вы бы в код заглянули прежде чем писать ерунду.

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое