Windows Server 8: дедупликация

Предупреждение: то что написано ниже может оказаться неверным. Так как официальная документация по Windows Server 8 отсутствует, то о работе некоторых функций можно только догадываться. Так что используйте на свой страх и риск.

В составе файловых сервисов в Windows Server 8 DP появилась крайне интересная функция дедупликации данных. Что такое дедупликация – фактически это процесс фильтрации данных в контейнере с данными на наличие совпадающих данных и дальнейшая организация хранения дублирующихся данных в единственном числе и корректное предоставление к ним доступа. Дедупликация в продуктах МС уже встречалась. В частности, Exchange 2000/2003/2007 использовали дедупликацию в пределах отдельных почтовых баз (называлось это SIS – Single Instance Storage). Windows Storage Server умеет делать дедупликацию файловых хранилищ (правда на файловом уровне). Производители аппаратных хранилищ данных часто встраивают в свои решения дедупликацию. Symantec во многих своих продуктах так же её использует и достаточно активно продвигает. В общем дедупликация – это полезно, а теперь и (в составе Windows Server 8) бесплатно. Хочется верить, что эта функция доживёт до RTM версии стандартного серверного дистрибутива.

Дедупликация в Windows Server 8 DP является сервисом из группы файловых сервисов. Устанавливается через PoSh следующим образом:

Import-Module ServerManager
Install-WindowsFeature FS-Data-Deduplication

Либо через Server Manager. После установки потребуется перезагрузка сервера. В сервисах появится два новых сервиса:

  • Data Deduplication Service. (Из его описания – The Data Deduplication Service enables the deduplication and compression of data on selected volumes in order to optimize disk space used. If this service is stopped, optimization will no longer occur but access to already optimized data will continue to function)
  • Data Deduplication Volume Shadow Copy Service. (Из его описания – The Data Deduplication VSS Writer Service enables the creation of shadow copies of optimized volumes for backup and other purposes. If this service is stopped, shadow copies on optimized volumes will be unavailable for backup and the backup may fail. If this service is disabled, any services that explicitly depend on it will fail to start)

Чтобы начать работать с дедупликацией нужно запустить первый сервис. Если он уже не запущен – запускаем его:

Start-Service ddpsvc

Посмотрим что нового появилось в командлетах:

PS C:Windowssystem32> Import-Module Deduplication
PS C:Windowssystem32> Get-Command -Module Deduplication | fl Name
Name
----
Disable-DedupVolume
Enable-DedupVolume
Get-DedupJob
Get-DedupMetadata
Get-DedupSchedule
Get-DedupStatus
Get-DedupVolume
New-DedupSchedule
Remove-DedupSchedule
Set-DedupSchedule
Set-DedupVolume
Start-DedupJob
Stop-DedupJob
Update-DedupStatus

В этом наборе доступных после установки дедупликации командлетов можно чётко выделить четыре группы командлетов:

  • Работа с томами
  • Работа с расписанием задач по дедупликации
  • Работа с задачами по дедупликации
  • Просмотр состояния дедупликации

Работа с томами

Дедупликация включается на уровне тома команлетом:

Enable-DedupVolume -Volume c:

Выключается по аналогии следующим образом:

Disable-DedupVolume -Volume c:

Для просмотра состояния дедупликации тома используется командлет:

PS C:Windowssystem32> Get-DedupVolume -Volume c: | fl
Volume                   : C:
Enabled                  : True
Capacity                 : 465.42 GB
FreeSpace                : 448.61 GB
UsedSpace                : 16.8 GB
SavedSpace               : 0 B
SavingsRate              : 0 %
MinimumFileAgeDays       : 30
MinimumFileSizeKB        : 64
NoCompress               : False
ExcludeFolder            :
ExcludeFileType          :
NoCompressionFileType    : {aac, aif, aiff, asf...}
ChunkRedundancyThreshold : 100
Verify                   : False

Следует помнить, что несмотря на то, что системный том можно через Enable-DedupVolume подключить к дедупликации, фактически дедупликация на нём работать не будет.

Используя командлет Set-DedupeVolume можно настроить следующие параметры дедупликации тома:

-NoCompress ($True – не сжимать содержимое тома, $False – сжимать содержимое тома)
-Verify (Проверка?)
-MinimumFileAgeDates (минимальный возраст файла в днях старше которого можно его дедуплицировать)
-MinimumFileSizeKB (минимальный размер файла в килобайтах больше которого можно его дедуплицировать)
-ChunkRedundancyThreshold (похоже на максимальный (?) размер блоков, которыми оперирует дедупликация (32-128Кб)?)
-CompressionLevel (уровень сжатия?)
-ExcludeFolder (указываем какие папки исключить из дедупликации)
-ExcludeFileType (указываем какие типы файлов исключить из дедупликации)
-NoCompressionFileType (указываем какие типы файлов не сжимать)
-CimSession (?)
-ThrottleLimit (?)
-AsJob (?)
-PassThru (?)

Работа с расписанием задач по дедупликации

По умолчанию создаётся три типа задач. Посмотреть на них можно через командлет Get-DedupSchedule.

  •  Optimization – Оптимизация дискового пространства. Если посмотреть в планировщик, то при запуске этой задачи запускается команда “%systemroot%system32ddpcli.exe enqueue /opt /scheduled /vol * /priority low /memory 25”. Стартует ежедневно раз в час.
  • GarbageCollection – Как я понимаю, в процессе выполнения этой задачи “лишние” блоки файлов, которые присуствуют более чем в одинарном количестве удаляются с диска, таким образом освобождая дисковое пространство. При запуске задачи запускается команда “%systemroot%system32ddpcli.exe enqueue /gc /scheduled /vol * /priority normal /memory 50”. Запускается по субботам в час ночи.
  • Scrubbing – Проверка дедуплицированных данных на наличие ошибок. При запуске задачи запускается команда “%systemroot%system32ddpcli.exe enqueue /scrub /scheduled /vol * /priority normal /memory 50”. Запускается по субботам в 3 часа ночи.

Если эти расписания не устраивают, то можно их удалить через командлет Remove-DedupSchedule. Новые расписания создаются через командлет New-DedupSchedule. Необходимо будет указать следующее:

-Name (имя для расписания)
-Type (тип выполняемых задач – Optimization, GarbageCollection, Scrubbing или Unoptimization – последнее похоже на процесс обратный оптимизации)
-DurationHours (похоже на ограничение времени выполнения задачи)
-Disable (отключение задачи)
-ContinueWhenSystemBusy (выполнять когда система находится в занятом состоянии)
-Memory (процент памяти системы, разрешённый к использованию во время выполнения задачи)
-Priority (приоритет выполнения – Low, Normal или High)
-Start (время запуска задачи)
-Days (день/дни запуска задачи)
-CimSession (?)
-ThrottleLimit (?)
-AsJob (?)

Текущие задачи редактируются через командлет Set-DedupSchedule. Набор параметров примерно такой же как и у New-DedupSchedule.

Работа с задачами по дедупликации

Во время выполнения запланированных задач дедупликации можно просматривать их состояние и даже останавливать. Используются для этого командлеты Get-DedupJob и Stop-DedupJob.

Просмотр состояния дедупликации

Для просмотра того сколько у нас данных сэкономила дедупликация можно использовать командлет Get-DedupStatus. Для обновления информации по конкретному тому используем командлет Update-DedupStatus. Если необходимо посмотреть общее состояние дедупликации на уровне блоков, то используется Get-DedupMetadata.

Фактически процесс запуска дедупликации выглядит следующим образом. Запускаем Enable-DedupVolume на нужном нам томе. Затем либо ждём выполнения штатных задач по расписанию, либо запускаем их вручную, либо удаляем их и создаём свои задачи.

Посмотрим как это работает. Я скопировал один и тот же файл 2 раза:

PS E:> ls
    Directory: E:
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---         6/29/2009   3:55 PM 3256915968 another-file.iso
-a---         6/29/2009   3:55 PM 3256915968 file.iso

Смотрим занимаемое файлами место:

PS E:> $e = Get-ItemProperty e:
PS E:> $e.PSDrive
Name           Used (GB)     Free (GB) Provider      Root
----           ---------     --------- --------      ----
E                   6.16         43.71 FileSystem    E:

По идее после отработки дедупликации занимаемое файлами место должно уменьшиться примерно в 2 раза. Попробуем её включить, не забываем выставить минимальный возраст файлов (по умолчанию он 30 дней):

PS E:> Enable-DedupVolume -Volume e:
Enabled            SavedSpace           SavingsRate          Volume
-------            ----------           -----------          ------
True               0 B                  0 %                  E:
PS E:> Set-DedupVolume -Volume e: -MinimumFileAgeDays 0

Запускаем вручную задачу по оптимизации из планировщика (чтобы не ждать пока она запустится). За её выполнением можно следить с помощью командлета Get-DedupJob:

PS E:> Get-DedupJob -Volume e:
Type               Progress   State                  Volume
----               --------   -----                  ------
Optimization       0 %        Running                E:
PS E:> Get-DedupJob -Volume e:
Type               Progress   State                  Volume
----               --------   -----                  ------
Optimization       100 %      Completed              E:

Смотрим что у нас в итоге получилось с местом:

PS E:> $e.PSDrive</pre>

Name           Used (GB)     Free (GB) Provider      Root
----           ---------     --------- --------      ----
E                   2.52         47.35 FileSystem    E:

Невооруженным взглядом видно, что файлы занимают теперь сильно меньше места. Информация по дедупликации следующая:

PS E:> Get-DedupStatus -Volume e:
SavedSpace   SavingsRate  OptimizedFiles     InPolicyFiles      Volume
----------   -----------  --------------     -------------      ------
3.65 GB      60 %         2                  2                  E:

Ну и напоследок посмотрим что же у нас произошло при дедупликации:

PS E:> Get-DedupMetadata -Volume e:
Volume                         : E:
DataChunkCount                 : 39653
DataContainerCount             : 3
DataChunkAverageSize           : 63.75 KB
DataChunkMedianSize            : 0 B
DataStoreUncompactedFreespace  : 0 B
StreamMapCount                 : 6
StreamMapContainerCount        : 1
StreamMapAverageDataChunkCount : 13807
StreamMapMedianDataChunkCount  : 0
StreamMapMaxDataChunkCount     : 0
HotspotCount                   : 1
HotspotContainerCount          : 1
HotspotMedianReferenceCount    : 0
CorruptionCount                : 0

Видно, что дедупликации подверглись около 40 тыс блоков данных, средний размер блоков около 64 Кб.

Leave a Reply

Your email address will not be published. Required fields are marked *