В одной из статей базы знаний VMware я прочитал, что моментальные снимки напрямую влияют на производительность виртуальной машины.
Но моя команда постоянно спрашивает меня, как снимки могут повлиять на производительность.
Я хотел бы дать им вескую причину для утверждения, что снимки убивают производительность.
Может ли кто-нибудь объяснить немного теории о том, как снимки на самом деле влияют на производительность? Это просто потому, что скорость ввода-вывода жесткого диска будет низкой?
Когда вы создаете моментальный снимок, исходный образ диска «замораживается» в согласованном состоянии, и с этого момента все операции записи будут осуществляться в новый дифференциальный образ. Еще хуже, как объяснялось Вот и Вот, дифференциальный образ имеет форму журнала изменений, в котором записываются все изменения, внесенные в файл с момента создания моментального снимка. Это означает, что доступ для чтения должен читать не только один файл, но и все разностные данные (исходные данные плюс каждое изменение, внесенное в исходные данные). Число увеличивается еще больше, когда вы каскадируете снимки.
Когда вы создаете моментальный снимок на виртуальной машине, это создает Delta Disk, и операционная система записывает в этот файл вместо исходного VMDK. Этот файл называется VM_Name-Delta.VMDK, но если системе необходимо обратиться к файлу перед моментальным снимком, он будет ссылаться на VM_Name.VMDK, увеличивая ввод-вывод этой операции. Если вы делаете несколько снимков, вы имеете в виду последний дельта-файл последнего снимка, а не исходный VMDK, что увеличивает количество операций ввода-вывода.
Пример.
ОС ---> Снимок (файл A создан) ---> (Файл снимка B создан)
Если мне нужно обратиться к файлу A, он будет искать его через 3 VMDK.
Кроме того, если вы включаете состояние памяти виртуальной машины во время создания моментального снимка, это снова создает дельта-файл и при необходимости ссылается на исходные файлы памяти.
Создается файл, в котором перечислены все файлы, созданные во время процесса создания снимка.
Насколько я могу судить, VMWare использует логику копирования при записи для реализации своих снимков. Следовательно, когда вы его создаете, каждая операция, выполняемая на вашей виртуальной машине (например, почти все во время выполнения), будет вызывать копирование небольшой части виртуальной машины до тех пор, пока все это не будет по существу клонировано.
Еще одна проблема с производительностью, связанная с этим, заключается в том, что операции чтения должны выполняться каскадно в исходную копию, если рабочая копия еще не имеет данных (поскольку ничего не изменилось, чтобы вызвать копию).
Если вы хотите использовать снимки в качестве резервной копии, но не можете терпеть небольшое снижение производительности, рассмотрите возможность клонирования виртуальной машины.
По мере увеличения размера и количества моментальных снимков на виртуальной машине увеличивается количество командных операций хранилища в vmkernel. Для каждой команды хранения, выдаваемой гостевой ОС виртуальной машины, может потребоваться несколько команд хранения, чтобы пройти всю цепочку моментальных снимков и прочитать наиболее подходящий блок данных.