пятница, 13 марта 2009 г.

[VMware VI Wiki] Обновлено: Snapshot

Пользователь Михаил Михеев обновил страницу Snapshot. Изменения указаны ниже.

Цветовой ключ: Вставка | Удаление

Роль диска ВМ выполняет пара файлов - <vm-name>.vmdk и <vm-name>-flat.vmdk.
Именно в последнем содержаться те данные, что лежат на диске виртуалки.

Притом, этот файл по умолчанию создается предразмеченным - т.е. под него резервируется все место, которое он может занять. Т.о., если вы создали диск для ВМ и его размер указали в 40 ГБ, все 40 ГБ на VMFS разделе у окажутся занятыми сразу.
(Отступление в сторону - если vmdk создается на NFS разделе, то именно на NFS он сразу создается в формате "thick" - "растущий" по факту, с нулевым начальным размером. Так же, можем в этом формате создавать vmdk и на VMFS - но сейчас только с помощью командной строки, не из GUI. Подробнее тут - Типы дисков(vmdk файлов))

Так вот. Теперь, с ВМ мы можем сделать снапшот. Это - снимок состояния, фиксация текущего состояния этой ВМ, на которое можно вернуться потом.
Технически это означает следующее:
файл <vm-name>-flat.vmdk переводится в режим только чтения.
Создается файл <vm-name>-delta0001.vmdk, и в эту дельту начинают писаться те блоки, которые меняются относительно исходного файла. Т.е. по умолчанию дельта размера 0, а потом начинает расти. Растет она блоками по 16 МБ. Это не очень хорошо, потому что для каждого увеличения генериться SCSI reservation. Один SCSI reservation - это нормально, но если они будут генериться часто - это приведет к снижению производительности дисковой подсистемы.

Если спустя еще какое то время сделать еще один снапшот, то теперь в режим только чтение переводится и <vm-name>-delta0001.vmdk, и появляется файл <vm-name>-delta0002.vmdk. Во вторую дельту начинают писаться те блоки, которые меняются относительно <vm-name>-flat.vmdk+<vm-name>-delta001.vmdk.

Файл <vm-name>-delta000Xvmdk не будет размером больше, чем номинальный размер диска ВМ.
В моем примере это 40 ГБ.

ВАЖНО!
Для функционирования ВМ нужны все vmdk файлы - и основной, -flat.vmdk, и все файлы-дельта. Не уподобляйтесь персонажу отсюда.

На что стоит обратить внимание:

ВМ с диском в 40 ГБ реально на VMFS разделе может занимать до 40*(кол-во снапшотов + 1) гигабайт места. Каждая такая ВМ.
Притом, есть мнение, что в некоторых случаях файлы дельты могут расти достаточно активно при практически нулевой активности с диском ВМ. Ведь даже тогда, когда вы или приложение ничего не меняете на диске виртуалки, там есть файл подкачки, к примеру - который меняется => растет дельта.

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

Удаление снапшота размером в 100ГБ может занимать 3-6 часов.

Расширять диск ВМ имеющей снапшоты - плохая идея. Увеличить размер диска можно командой vmkfstools -X или из GUI(начиная с 3.5 версии ESX). Так вот, скорее всего, ВМ больше не стартует, если расширение диска было произведено при имеющихся снапшотах. Как чинить - Top Support Issues and How to Solve Them - Batch 2.

Если есть желание, чтобы диск ВМ был неподвержен снапшотам, то в его свойствах выберите "Independent ". Кстати, если ВМ имеет "Independent " диски, то в снапшот не может быть включена ее память.



Следующая проблема. которая может перед вами встать - это удаление снашотов.
Если у ВМ есть несколько снапшотов, и вы нажали кнопку "Delete all", то
сначала последовательно сольются все дельты, потом они добавяться к <vm-name>-flat.vmdk. И только после этого удаляться. И на все это вам должно хватить свободного места.
Пример:

у вас есть несколько снапшотов, т.е. несколько файлов. Примерно так:
VM1-flat.vmdk (40ГБ)
    VM1-001-delta.vmdk(5ГБ)
        VM1-002-delta.vmdk(7ГБ)
            Всего занято 52ГБ
    
 
Вы хотите удалить все эти снапшоты. Что происходит:
  1. VM1-flat.vmdk (40ГБ)
        VM1-001-delta.vmdk(5ГБ) + VM1-002-delta.vmdk(7ГБ) = 12 ГБ. Это максимум, в реальности сумма может быть меньше. А может и не быть.
            VM1-002-delta.vmdk(7ГБ)
                Всего занято до 59ГБ
  2. VM1-flat.vmdk (40ГБ) + VM1-001-delta.vmdk(5ГБ) + VM1-002-delta.vmdk(7ГБ) = 40 ГБ.
    Т.к. в дельтах те же самые блоки. только измененные, то они пишутся поверх тех, что есть в  flat  файле. Его размер никогда не превысит номинальный.
        VM1-001-delta.vmdk(5ГБ) + VM1-002-delta.vmdk(7ГБ)
            VM1-002-delta.vmdk(7ГБ)
                Всего занято до 59ГБ
  3. VM1-flat.vmdk (40ГБ)
                Всего занято 40ГБ

Т.е. для применения всех снапшотов вам может потребоваться место сверх занятого - порядка до 5ГБ в моем примере. После окончания применения оно освободиться.


Если такой вариант вам не подходит, потому что от снапшотов надо избавиться срочно, а места на ЛУНе взять неоткуда, то можно пойти другим путем:
  • Клонировать ВМ в другое хранилище(Datastore). Если у вас версия ниже, чем VI 3.5 Update 2, это потребует ее выключения. У клона снапшотов не будет.
    Правда, иногда бывает глюк, и при клонировании все снапшоты корректно не применяются(для клона). Но эта ситуация описана в KB VMware:

    If a clone through the VMware Infrastructure 3 client did not commit the snapshots; you can try to export the disk with vmkfstools to recreate the virtual machine:

    1. Run the following command to create a directory for the new disk:

    [root@bs-tse-d06 RHEL5]# mkdir /vmfs/volumes/openfiler-iscsi/new_RHEL5

    2. Run the following command to point vmkfstools at the last snapshot file:

    [root@bs-tse-d06 RHEL5]# vmkfstools -i RHEL5-000001.vmdk /vmfs/volumes/openfiler
    iscsi/new_RHEL5/new_RHEL5.vmdk

    Destination disk format: VMFS thick
    Cloning disk ‘RHEL5-000001.vmdk’…
    Clone: 3% done
    [root@bs-tse-d06 RHEL5]#

    3. Recreate the machine. Select Use an existing virtual disk.

  • Еще один путь - по сути, то же клонирование, но "изнутри" ВМ. Делаем еще одну ВМ, исходную загружаем с live CD Ghost\Acronis или чего то другого для работы с образами, и переливаем образ из ВМ со снапшотами, в ВМ без снапшотов. Этим путем, кстати, можно уменьшить размер диска - если на исходной ВМ мы задали размер диска больше, чем реально надо.

  • Наконец, можем из этой ВМ сделать еще одну ВМ, уже без снапшотов, с помощью VMware Converter.


Еще при создании снапшота создаются:
*.vmsd файл - файл с описание этого снапшота.Содержит snapshot display name, unique identifier (UID), disk file name, и т.д.
*.vmsn файл - файл с оперативкой ВМ на момент снятия снапшота (если она была включена, и вы указали что память нужно сохранить). Если память сохранена, то при возвращении к этому снапшоту ВМ окажется в работающем состоянии.
Важно: если объем памяти ВМ равен 3 ГБ, у нее сделано 4 снашота с сохранением памяти - то это еще 12 ГБ места на VMFS разделе.

Можно создавать снапшоты из командной строки, командой "vmware-cmd createsnapshot".
Синтаксис примерно такой:
 "vmware-cmd myvm1.vmx createsnapshot snap1 'before upgrade' 1 1"
Две последнии позиции - это ответы на вопросы - делать ли "quiesce" дисков ВМ, и сохранять ли ее память. 1= да, 0= нет.
Так же есть команды "vmware-cmd removesnapshots" и "vmware-cmd revertsnapshot".


Наконец, оставлю в конце первый вариант объяснения и примеров снапшотов.

Снапшот, или снимок состояния - это, по сути, граница. Граница между двумя состояниями ВМ.
 Физически - граница между двумя файлами:
vm1-flat.vmdk и vm1-001-delta.vmdk.

Если снапшот не первый, то между vm1-deltaN.vmdk и vm1-deltaN+1.vmdk

Все файлы кроме последнего используются только на чтение. В последнем хранятся все изменения диска ВМ с момента последнего снапшота, т.е. относительно предпоследнего файла.
 
Т.е., например:
Вы установили ОС, сделали снапшот1.
Установили приложение, сделали снапшот2.
Добились нужной работы от этого приложения - сделали снапшот3.

На диске у вас примерно такая структура vmdk файлов:

  vm.vmdk               - в этом файле хранится все, что было на диске ВМ до 1го снапшота. Т.е. установленная ОС.
--------------------------- наличие этой границы - это и есть снапшот1, с логической т.зрения
    vm-delta1.vmdk   - в этом файле хранятся все изменения на диске с момента первого снапшота. Т.е. установленное приложение попадает уже сюда
----------------------------наличие этой границы - это и есть снапшот2, с логической т.зрения
     vm-delta2.vmdk  - сюда попадают все изменения на диске с момента снапшота2, т.е. изменения настроек приложения.
---------------------------- наличие этой границы - это и есть снапшот3, с логической т.зрения
     vm-delta3.vmdk   - сюда будут попадать все изменения с момента снапшота3, т.е. работа с настроенным приложением.

При удалении снапшота у вас удаляется НЕ файл, а граница между файлами, т.е. происходит объединение vmdk.
 







Перейти на страницу: Snapshot


-------------
Было запрошено уведомление с Сайтов Google. Отменить подписку можно в любое время.
Не хотите получать уведомления о собственных изменениях? Измените настройки.

Комментариев нет: