Дедупликация в Windows — эффективная технология, позволяющая экономить дисковое пространство. Однако есть сценарии, в которых использование дедупликация нежелательно. Например, если речь идет о хранилище виртуальных машин, где по ряду причин дедупликация может быть вредна, стоит как можно скорее отказаться от нее. Но процесс обратной оптимизации имеет свои особенности, с которыми мы сейчас подробно разберемся.
Небольшой пример из практики: после улучшения дисковой подсистемы в виртуальной лаборатории мы решили отключить дедупликация и восстановить исходные данные. Объем данных на томе составлял 2,9 ТБ, в сжатом виде они занимали 1,2 ТБ при емкости массива в 3,63 ТБ. На первый взгляд проблем возникнуть не должно — места достаточно. Запускаем процесс восстановления.
Через некоторое время мы видем странную картину:
disabling-deduplication-001.png
Первая реакция может быть шокирующей: почему при достатке места система не может завершить процесс? Но не стоит паниковать. Прежде всего, нужно понять механизмы дедупликация и обратного процесса.
Суть дедупликации: при оптимизации уникальные данные сохраняются как есть, а повторяющиеся блоки переносятся в специальное хранилище. В таблице файлов MFT вместо отдельных копий ставятся ссылки на единый блок в хранилище. Освободившееся место становится доступным системе.
В обратном процессе — при восстановлении — данные извлекаются из хранилища и записываются заново на диск, возвращая каждую копию файла к исходному состоянию. Но сами блоки хранилища сразу удалить нельзя, так как они могут быть востребованы другими файлами. Удаление неиспользуемых блоков (уборка мусора) происходит после завершения восстановления.
Главный вывод: для успешного восстановления требуется не только свободное место под исходный объем данных, но и дополнительное пространство под параллельно существующее хранилище. И чем разнообразнее данные, тем больше размер хранилища, следовательно, тем больше потребуется места.
Если места не хватает, можно остановить процесс восстановления и принудительно выполнить уборку мусора. Для этого не нужно бояться прерывать операцию — целостность данных гарантирована на уровне файловой системы NTFS. При аварийном завершении система сама откатит незавершенные транзакции.
Рассмотрим схему:
Допустим, часть файлов уже восстановлена, а пространство закончилось. Останавливаем восстановление, запускаем уборку мусора, хранилище анализируется, неиспользуемые блоки удаляются, и часть места освобождается. Теперь можно продолжить восстановление.
Как оценить необходимый объем? Выделите все пользовательские данные и оцените их полный размер и сравните с размером оптимизированных данных. Разница — это то, что находится в хранилище. Суммируя их, вы получите общий объем, необходимый для одновременного размещения исходных данных и хранилища.
Допустим, данные в сжатом виде занимают 20,7 ГБ, а полный размер — 64,5 ГБ. Из них на диске 32,8 МБ. Остальное — в хранилище. Следовательно, потребуется около 85,2 ГБ для успешного полного восстановления.
Итак, перейдем к практике. Сначала отключите все регламентные задания, связанные с дедупликация, но не удаляйте их, просто выключите.
Теперь откройте PowerShell от имени администратора и запустите процесс восстановления данных:
Start-DedupJob -Volume D: -Type Unoptimization
Если места не хватает, остановите операцию:
Stop-DedupJob -Volume D:
При остановке процесса дедупликация для тома будет отключена, включим ее снова:
Enable-DedupVolume -Volume D:
Запускаем уборку мусора:
Start-DedupJob -Volume D: -Type GarbageCollection
После завершения уборки мусора можно продолжать восстановление:
Start-DedupJob -Volume D: -Type Unoptimization
Для контроля выполнения заданий:
Get-DedupJob
Имейте в виду, что индикатор выполнения может долго стоять на нуле, а потом резко подскочить к 100%. Скорость восстановления выше, чем скорость первичной дедупликации, но все же это медленнее, чем обычное копирование. Если есть возможность, быстрее скопировать данные в другое место, отформатировать том и вернуть их назад — так будет проще и быстрее.
Можно ли использовать данные во время восстановления? Да, можно. Производительность может немного снизиться, но, как показывает опыт, падение не критично. Мы, например, смогли запустить несколько виртуальных машин, что говорит о приемлемой нагрузке на дисковую подсистему.
После завершения всех операций проверьте состояние дедупликации:
Get-DedupVolume
Если дедупликация по-прежнему включена, отключите ее:
Disable-DedupVolume -Volume D:
Теперь вы знаете, как грамотно отключить дедупликация и восстановить данные. Понимание внутренних процессов избавляет от паники и неподготовленных действий в непредвиденных ситуациях. Именно поэтому системный администратор должен хорошо понимать механизмы технологий, которые он использует.