Snapshot - vmware vi wiki

Роль диска ВМ виконує пара файлів - .vmdk і -flat.vmdk.
Саме в останньому міститися ті дані, що лежать на диску виртуалки.

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

Так ось. Тепер, з ВМ ми можемо зробити снапшот. Це - знімок стану, фіксація поточного стану цієї ВМ, на яке можна повернутися потім.
Технічно це означає наступне:
файл -flat.vmdk переводиться в режим тільки читання.
створюється файл -delta0001.vmdk. і в цю дельту починають писатися ті блоки, які змінюються відносно вихідного файлу. Тобто за замовчуванням дельта розміру 0, а потім починає зростати. Росте вона блоками по 16 МБ. Це не дуже добре, тому що для кожного збільшення генериться SCSI reservation. Один SCSI reservation - це нормально, але якщо вони будуть генериться часто - це призведе до зниження продуктивності дискової підсистеми.


Якщо ще через якийсь час зробити ще один снапшот, то тепер в режим тільки читання перекладається і -delta0001.vmdk. і з'являється файл -delta0002.vmdk. У другу дельту починають писатися ті блоки, які змінюються відносно -flat.vmdk +-delta001.vmdk.

файл -delta000X vmdk НЕ буде розміром більше, ніж номінальний розмір диска ВМ.
У моєму прикладі це 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", то
спочатку послідовно зіллються всі дельти, потім вони добавяться до -flat.vmdk. І тільки після цього віддалятися. І на все це вам повинно вистачити вільного місця.
приклад:

у вас є кілька снапшотов, тобто кілька файлів. Приблизно так:

Тобто для застосування всіх снапшотов вам може знадобитися місце понад зайнятого - близько до 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-cmdcreatesnapshot".
    Синтаксис приблизно такий:
    "Vmware-cmd myvm1.vmx createsnapshot snap1 'before upgrade' 1 + 1"
    Дві останні позиції - це відповіді на питання - чи робити "quiesce" дисків ВМ, і зберігати її пам'ять. 1 = так, 0 = немає.
    Так само є команди "vmware-cmdremovesnapshots" і "vmware-cmdrevertsnapshot".