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

Утилита Cloper
(Cloning optimizer)

Copyright (C) Антон Копьёв,
GNU General Public License.


НАЗНАЧЕНИЕ УТИЛИТЫ


Утилита Cloper — консольная программа для оптимизации откатываемых виртуальных дисков с целью уменьшения размера их файла на физическом диске. Версия утилиты x86 предназначена для использования на 32-х и 64-битных ОС; в случае гостевой 64-битной ОС можно использовать версию утилиты x64. Обе версии утилиты и сопутствующие файлы проекта располагаются по ссылке: https://github.com/kopyurff/cloper.


Утилита тестировалась на VMWare Workstation v.8.0, но схема ее работы должна быть применима ко всем вариантам проигрывателей виртуальных машин, если они не инициализируют все выделенное дисковое пространство при его создании, а только хранят и записывают фактические данные. Если же при первичной инициализации виртуального диска проигрыватель машины выделяет для него столько места, сколько указано для дискового тома, то использование этой утилиты становится бессмысленным.


Утилита используется на виртуальной машине с ОС Windows, к которой в откатываемом режиме подключены исходный диск и целевой эталонный диск. Исходный и целевой диски для создания оптимизированного снимка должны быть копиями одного и того же виртуального диска, а целевой диск должен содержать только исходные эталонные данные без добавленной информации на исходном диске. В общем случае процедура оптимизации заключается в сравнении данных двух копий дисков с низкоуровневой обработкой данных исходного диска таким образом, чтобы физические данные его файлов располагались, по возможности, напротив идентичных физических данных на целевом эталонном диске. После завершения процедур сравнения данные исходного диска клонируются на эталонный диск. Поскольку при клонировании записываются только данные, отличающиеся от содержимого целевого эталонного диска, то его результирующий размер файла на физическом диске существенно уменьшается.


ПРОЦЕДУРЫ ОПТИМИЗАЦИИ


Процедуру оптимизации можно применять к виртуальным дискам с форматами разметки разделов MBR и GPT. Операция сопоставления и другие действия по оптимизации применяются только к разделам с файловой системой NTFS, разделы с другими файловыми системами клонируются как есть. Утилита предоставляет следующие процедуры для оптимизации томов NTFS:

  1. Предварительное удаление указанных для этой цели исходных файлов, исключение из процедур идентичных файлов с одинаковым расположением кластеров в источнике и в целевом томе;
  2. NTFS-сжатие новых и измененных данных с их консолидацией (т.е. если указано, то также перемещает эти исходные данные перед эталонными данными без совпадений);
  3. Находит совпадения кластера исходного файла среди несовпадающих целевых кластеров файлов и перемещает эти данные исходного файла перед совпавшими целевыми кластерами;
  4. Перенос ненулевых секторов эталона в свободные от файлов области исходного тома;
  5. Поскольку при клонировании переносятся только ненулевые сектора, оставшиеся «ненулевые» свободные сектора исходного тома обнуляются.

СИСТЕМНЫЕ ТРЕБОВАНИЯ


Для выполнения задачи оптимизации гостевая ОС должна обеспечить доступ к целевым и исходным дискам с использованием функциональности Windows API, активный пользователь ОС, выполняющий задачу, должен иметь административные привилегии. Задачи утилиты можно запускать с использованием версий ОС Windows, начиная с XP SP2 x86/x64. Рекомендуется использовать более старые версии ОС, чтобы минимизировать фоновые изменения данных на диске системой во время задачи оптимизации. Независимо от спецификации задачи утилита активно работает с данными исходного диска во время всех подзадач. Хост-система должна быть способна поддерживать эти действия. Для оптимальной производительности рекомендуется хранить снимки исходного и целевого дисков на разных физических жестких дисках.


В зависимости от производительности гостевой системы, спецификации задачи, объема исходных и целевых данных, вся процедура может занять от 10-20 минут до нескольких часов. Полученный оптимизированный снимок можно получить только после завершения всех указанных процедур. Чтобы избежать фоновых инициализаций целевых данных, рекомендуется выключать гостевую ВМ или отключать целевой диск сразу после завершения задачи. В зависимости от параметризации задачи системные требования к гостевой ВМ могут быть минимальными или требовать значительного объема оперативной памяти. Минимальный объем оперативной памяти является обязательным условием для всех задач, за исключением подзадачи, которая ищет совпадения исходных данных внутри целевых данных. Последняя подзадача может потребовать до 2 ГБ оперативной памяти только для процесса утилиты, она также заметно потребляет процессорное время во время поисковых действий.


Если предполагается дальнейшее использование исходного виртуального диска, рекомендуется выполнить оптимизацию, сохранив его копию. Характер действий с его данными — обычная фрагментация и вероятность их повреждения не выше вероятности повреждения файлов при копировании в другую папку, но за счет внутреннего перемещения данных инициализируются ранее неиспользуемые сектора виртуального диска и в результате размер его физического файла увеличивается до реального объема диска.


ПАРАМЕТРЫ УТИЛИТЫ


Утилита Cloper — это консольная программа с параметрами командной строки и файлом конфигурации. Вызов ее без параметров в командной строке выводит их список с описанием. Предусмотрены следующие параметры командной строки:

  1. "/help" or "/h" - отображает справку по использованию утилиты;
  2. "/getconfig:short" or "/gc:short" - вызов для создания файла конфигурации с параметрами по умолчанию. Суффикс ":short" необязателен, если он не указан, будет создан файл конфигурации с комментариями для каждого параметра и его значения;
  3. "/getserials:<drive letter>" or "/gs:<drive letter>" - получает серийный идентификатор диска, который состоит из подстрок идентификаторов всех его томов, разделенных символом "-". Для того, чтобы получить идентификатор диска, он должен иметь хотя бы один том с назначенной ему буквой. Поскольку процедура оптимизации выполняется с использованием двух копий одного и того же диска, серийные идентификаторы их томов совпадают;
  4. "/serials:<serials>" or "/s:<serials>" - запускает задачу оптимизации для двух дисков с указанными серийными идентификаторами;
  5. "/serials:<serials> /showdiskdirs|sdd:<folders filter>" or "/[s]:<serials> /[sdd]:<folders filter>" - служит для отображения списка папок по указанному фильтру. Этот специальный вызов служит для дополнительного контроля адекватности указанного фильтра выбора папок ожидаемому результату. Значение фильтра выбора объектов для их предварительного удаления указывается в конфигурационном файле в его секции "[VolumeCleanup]". Также см. справку "/h" с номерами секций 7-9 для получения дополнительных подробностей;
  6. "/serials:<serials> /showdiskfiles|sdd:<files filter>" or "/[s]:<serials> /[sdf]:<files filter>" - вызов аналогичен предыдущему, но для проверки выбора файлов;
  7. "/[signdisk]:<new signature>" or "/[sd]:<new signature>" - вызов для интерактивного изменения сигнатуры диска. Если новое значение не указано, то выводится список подключенных дисков с их сигнатурами.

При создании файла конфигурации его значения устанавливаются на оптимальные значения, если создается файл с комментариями, то он имеет построчную справку. При первом запуске утилиты для задач оптимизации на виртуальной машине рекомендуется создать новый файл конфигурации. Для запуска утилиты из скриптов автоматизации параметр "RunMode" необходимо изменить на "SILENT", а параметр "PauseAtEnd" на "NOT".


ФАЙЛЫ ПРОЕКТА УТИЛИТЫ


В утилиту Cloper добавлены дополнительные файлы для лучшего соответствия критериям ПО с открытым исходным кодом, для его документирования и, при необходимости, для упрощения работы с исходным кодом. Список файлов с их относительным расположением:

  1. ".\docs\Cloper utility for compressing and optimizing virtual machine rollback disk.pdf" - описание утилиты на английском языке;
  2. ".\docs\Утилита Cloper - сжатие и оптимизация диска отката виртуальной машины.pdf" - описание утилиты на русском языке;
  3. ".\project\..." - исходный проект утилиты на языке Pascal, отладка и компиляция опубликованной версии программы проводилась с использованием Embarcadero® RAD Studio XE5;
  4. ".\cloper_x86.zip" - zip-архив 32-битной версии утилиты;
  5. ".\cloper_x64.zip" - zip-архив 64-битной версии утилиты.

СТАТУС ПРОЕКТА, ПОДДЕРЖКА И ЕГО РАЗВИТИЕ


Текущий набор функционала утилиты и её исходный код работоспособны и могут быть использованы на ОС Windows от XP до версии 11. Текущая версия утилиты публикуется для общего использования как есть. Для решения других аналогичных задач обработки исходных данных виртуальных машин набор возможностей утилиты может быть расширен или улучшен. Для предложений поддержки и развития проекта я доступен по следующим контактам:


E-Mail: kopyurff@yahoo.com, kopyurff@rambler.ru

Мобильный: 8-921-912-44-10

This site was made on Tilda — a website builder that helps to create a website without any code
Create a website