Роль диска ВМ выполняет пара файлов - <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ГБ
Вы хотите удалить все эти снапшоты. Что происходит:
Т.е. для применения всех снапшотов вам может потребоваться место сверх занятого - порядка до 5ГБ в моем примере. После окончания применения оно освободиться. Если такой вариант вам не подходит, потому что от снапшотов надо избавиться срочно, а места на ЛУНе взять неоткуда, то можно пойти другим путем:
Еще при создании снапшота создаются: *.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". Очень важная для траблшутинга снапшотов статья - Устройство снимков виртуальных дисков в VMware VI3. |
