Дедупликация данных в windows server 2016

Дедупликация данных в Windows Server 2016 (часть 1)

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

Начнем с изменений. Итак

Что нового

Первое и наиболее важное изменение в работе дедупликации Windows Server 2016 — это введение многопоточности.

Многопоточность

В Windows Server 2012 R2 дедупликация работает в однопоточном режиме и может задействовать не более 1 процессорного ядра на один том. Это серьезно ограничивает производительность, а для обхода этого ограничения необходимо разбивать диски на несколько томов меньшего размера. При этом максимальный размер тома не должен быть больше 10Тб.

В Windows Server 2016 движок дедупликации переработан и задание дедупликации может работать в многопоточном режиме, используя для каждого тома сразу несколько вычислительных потоков и очередей вводавывода. Изменения эти наглядно проиллюстрированы на картинке ниже, честно позаимствованной 🙂 на технете.

схема дедупликации в Windows Server 2016

На картинке все выглядит красиво и убедительно, а как обстоит дело на практике?  Чтобы убедиться в том, что многопоточность действительно работает, я провел небольшой эксперимент. Для эксперимента я взял сервер с двумя 6-ядерными процессорами, что при включенном HyperThreading дает нам 24 логических процессора. На сервере была установлена Windows Server 2012 R2 и включена дедупликация для одного тома.

Я запустил на сервере процедуру оптимизации, замерил производительность и выяснил, что процесс дедупликации (fsdmhost.exe) использует максимум 4% мощности процессора, что примерно соответствует 1 логическому ядру.

нагрузка на процессор в Windows Server 2012R2

Затем операционная система на сервере была проапгрейжена на Windows Server 2016, после чего я повторно замерил производительность. И как видите, после апгрейда дедупликация уже не ограничена одним ядром и может использовать больше 4% процессорной мощности сервера.

нагрузка процессора в Windows Server 2016

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

Ну и изменения помельче.

Поддержка виртуализованных приложений резервного копирования

В Windows Server 2012 был всего один тип дедупликации, предназначенный в основном для обычных файловых серверов. Дедупликация таких нагрузок, как постоянно работающие виртуальные сервера, не поддерживалась, поскольку дедупликация не умела работать с открытыми файлами.

В Windows Server 2012 R2 дедупликация научилась использовать VSS, соответственно стала поддерживаться дедупликация виртуальных серверов. Для таких нагрузок появился отдельный тип дедупликации.

В Windows Server 2016 добавился еще один, третий тип дедупликации, предназначенный специально для виртуализованных серверов резервного копирования (напр. DPM). Надо сказать, что такой вариант был и раньше, однако в связи со специфическими нагрузками настройки дедупликации требовалось подбирать вручную. В Windows Server 2016 для таких нагрузок добавлен отдельный тип дедупликации, уже включающий в себя необходимые настройки.

Поддержка Nano Server

Nano Server — это вариант развертывания операционной системы Windows Server 2016 с минимальным количеством устанавливаемых компонентов. Nano Server полностью поддерживает дедупликацию.

Поддержка последовательного обновления кластера

Последовательное обновление кластера (Cluster OS Rolling Upgrade) — это новая функция Windows Server 2016, с помощью которой можно последовательно проапгрейдить операционную систему на каждом узле кластера с Server 2012 R2 до Server 2016, при этом не останавливая работу кластера. Это возможно благодаря специальному смешанному режиму работы кластера, когда в кластере одновременно могут работать узлы Windows Server 2012 R2 и Windows Server 2016.

Смешанный режим означает, что одни и те-же данные могут находиться на узлах с разными версиями дедупликации. Дедупликация Windows Server 2016 поддерживает этот режим и обеспечивает доступ к дедуплицированным данным в течение всего процесса обновления кластера.

Установка и включение дедупликации

Первое, что нужно сделать для включения дедупликации — это установить соответствующую роль сервера. Можно из оснастки «Server Manager» запустить мастер и добавить роль файлового сервера с компонентом «Data Deduplication».

установка дедупликации через GUI

Либо из PowerShell выполнить команду:

Install-WindowsFeature -Name FS-Data-Deduplication -IncludeAllSubfeature -IncludeManagementTools

установка дедупликации через PowerShell

Включение и настройка дедупликации

После добавления компонента надо включить дедупликацию для конкретного тома (или нескольких томов). Сделать это можно двумя разными способами — из графической оснастки либо с помощью PowerShell.

Для настройки из GUI открываем «Server Manager», переходим в раздел «File and storage services» — «Volumes», встаем на нужный том, кликаем по нему правой клавишей мыши и в открывшемся меню выбираем пункт «Configure Data Deduplication».

выбор тома для дедупликации

Затем выбираем необходимый тип дедупликации и жмем «Apply». Дополнительно можно указать типы файлов, которые не должны подвергаться дедупликации, а также исключить из дедупликации определенные директории.

выбор типа дедупликации

Следующее, что необходимо сделать после включения — это настроить расписание, по которому будут отрабатывать задания дедупликации, поэтому дальше жмем на кнопку «Set Deduplication Schedule».

По умолчанию включена фоновая оптимизация (background optimization), а также можно настроить два дополнительных задания принудительной оптимизации (throughput optimization). Настроек здесь немного — можно только выбрать дни недели, задать время запуска и продолжительность работы.

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

Гораздо больше возможностей для настройки предоставляет PowerShell. Для включения дедупликации используем такую команду:

Enable-DedupVolume -Name D: -UsageType HyperV

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

Get-DedupSchedule

Как видите, здесь картина несколько иная. Так кроме фоновой оптимизации имеется задание приоритетной оптимизации (PriorityOptimization), а также задания сборки мусора (GarbageCollection) и очистки (Scrubbing). Все эти задания не видны из графической оснастки.

включение дедупликации через PowerShell

Кроме этого, PowerShell позволяет более тонко настроить параметры выполнения задания. Для примера создадим новое задание оптимизации. Задание должно запускаться в 8 утра с понедельника по пятницу и работать 12 часов, с нормальным приоритетом, использовать не более 50% оперативной памяти и 100% процессорной мощности:

New-DedupSchedule -Name ThroughputOptimization -Type Optimization -Days @(1,2,3,4,5) -DurationHours 12 -Start (Get-Date ″12/8/2016 8:00 PM″) -Memory 50 -Cores 100 -Priority Normal

Примечание. В принципе заданию можно дать любое имя. Но если создать задание с именем ThroughputOptimization, то оно будет отображаться и в графической оснастке.

Затем произведем еще несколько изменений. Во первых сменим время и параметры запуска задания сбора мусора:

Set-DedupSchedule -Name WeeklyGarbageCollection -DurationHours 12 -Start (Get-Date ″12/8/2016 8:00 PM″) -Memory 50 -Cores 100 -Priority Normal -Full $true

Перенесем на воскресенье задание очистки:

Set-DedupSchedule -Name WeeklyScrubbing -Days Sunday -DurationHours 12 -Start (Get-Date ″12/8/2016 8:00 PM″) -Memory 50 -Cores 100 -Priority Normal

И отключим приоритетную оптимизацию:

Set-DedupSchedule -Name PriorityOptimization -Enabled $false

Настройка расписания дедупликации через PowerShell

Ручной запуск дедупликации

При необходимости задание дедупликации можно запустить вручную. Для примера запустим полную оптимизацию тома D с максимальным приоритетом:

Start-DedupJob -Volume D: -Type Optimization -Memory 75 -Cores 100 -Priority High -Full

запуск дедупликации вручную

Отследить запущенные задания дедупликации можно с помощью команды Get-DedupJob. Обратите внимание, что одновременно отрабатывает только одна задача, а остальные стоят в очереди и ждут ее завершения. Если текущая задача не завершится в ближайшее время, то задания в очереди отменятся и очередь будет очищена. Об этом необходимо помнить при составлении расписания, так как если различные задачи пересекаются между собой, то некоторые из них не смогут вовремя отработать.

очередь заданий дедупликации

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

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

Get-DedupVolume -Volume D: | fl

Так мы можем посмотреть основные параметры тома — полный объем, свободное место, уровень сжатия и т.д.

свойства тома

А проверить состояние заданий дедупликации можно такой командой:

Get-DedupStatus -Volume D: | fl

Эта команда кроме всего прочего покажет, когда и с каким результатом были завершены задания дедупликации. В случае проблем с дедупликацией эту информацию можно использовать для диагностики.

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

Выключение дедупликации

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

Disable-DedupVolume -Name D:

отключение дедупликации для тома

Выключение дедупликации для тома отменяет все запланированные задания, а также запрещает запуск любых задач дедупликации, кроме read-only операций (команды типа Get) и раздедупликации (unoptimization). При этом сами данные остаются в том же состоянии, в котором они были до выключения дедупликации, просто новые данные перестают дедуплицироваться.

После выключения дедупликации доступ к данным остается и с ними можно работать так же, как и раньше. Это поведение можно изменить, воспользовавшись ключом DataAccess, например:

Disable-DedupVolume -Name D: -DataAccess

Эта команда удаляет драйвер-фильтр файловой системы для указанного тома, тем самым останавливая все операции ввода-вывода для дедуплицированных файлов. Соответственно при попытке обращения к файлам вы получите отказ в доступе. Вернуть доступ можно командой Enable-DedupVolume с ключом DataAccess.

ошибка при доступе к данным

Ну и если необходимо полностью убрать дедупликацию и вернуть данные к исходному состоянию, то можно воспользоваться процедурой раздедупликации. Например следующей командой запустим раздедупликацию для тома D с максимально-возможной скоростью:

Start-DedupJob -Volume D: -Type Unoptimization -Memory 100 -Cores 100 -Priority High -Full

раздедупликация данных

Обратите внимание, что для раздедупликации потребуется дополнительное дисковое пространство. Если свободного места на томе недостаточно, то процедура завершится ошибкой. В этом случае можно воспользоваться альтернативным способом —  просто скопировать данные на другой том. При копировании данные автоматически разжимаются, опять же можно раздедуплицировать не сразу весь том, а скопировать данные по частям.

На этом пока закончим. А в следующей части более подробно разберем настройки дедупликации и рассмотрим некоторые особенности ее работы.

Data Deduplication (дедупликация данных) — это возможность уменьшать пространства за счет удаления одной части дублирующих данных. Впервые Microsoft выпустила такую возможность в Windows Server 2012 и технически она менялась вплоть до самой последней версии сервера 2019. Технология дедупликации реализована у множества брендов в том числе: HP, CISCO, IBM и VmWare.

Содержание

  1. Для чего нужна и как работает дедупликация
  2. Изменения в версиях
  3. Где и когда применять
  4. Где нельзя применять
  5. Установка
  6. Оценка потенциального освобождающегося места с DDPEval.exe
  7. Настройка роли
  8. Расширенные настройки с Powershell
  9. Включение и настройка дедупликации для томов
  10. Изменение расписаний
  11. Мгновенный запуск дедупликации
  12. Статус дедупликации
  13. Восстановление дедуплицированных файлов
  14. Отключение Deduplication
  15. Где найти логи Deduplication
  16. Восстановление данных с HDD после дедупликации Windows Server
  17. Дедуплицированные папки весят 0 байт
  18. Дудуплицированные файлы весят 0 байт

Для чего нужна и как работает дедупликация

Если взять обычный файловый или бэкап сервер, то мы увидим большой объем полностью или частично дублирующих файлов. На файловых серверах это полные копии данных, которые хранят разные пользователи, а на бэкап серверах — это минимум файлы с ОС. С определенным интервалом происходит процесс сканирования блоков с данными в 32-128 Кб и проверка уникальности. Такие блоки так же называются чанками (chunk/куски) и это важно запомнить, так как это название вы будете видеть в Powershell. При нахождении одинаковых чанков они оба будут удалены и заменен ссылкой на уникальный чанк помещенный в специальное место. Такие ссылки будут помещены в папку System Volume Information, а блоки, с уникальными данными, в контейнеры. Все такие данные, в Windows Server, имеют возможность восстановления в случае критических повреждений.

Дедупликация работает по томам и в целом мы можем увидеть такую схему:

  • Оптимизированные файлы, состоящие из ссылок на уникальные чанки;
  • Чанки, организованные в контейнеры, которые сжимаются и помещаются в хранилище;
  • Не оптимизированные файлы.

Бренды реализуют дедуликацию по-разному. Она может работать с целым файлом, блоком или битом. В Windows Server реализована только блочная дедупликация. Файловая дедупликация была реализована в Microsoft DPM, но в этом случае, файл измененный на бит, уже будет являться новым и это было бы оправдано в случаях бэкапа. В сетях можно увидеть битовую.

Картинки, которые так же немного демонстрирует описанный процесс:

Кроме реализации дедупликации на уровне томов, у некоторых брендов, она работает и на уровне сети. Вместо отправки файлов будут отправлены хэш суммы (SHA-1, SHA-2, SHA-256) чанков и если хэш будет совпадать с тем, что уже имеется на стороне принимающего сервера, он не будет перенесен. Похожая возможность, в Windos Server, реализована с помощью работы BranchCache и роли Data Deduplication.

Изменения в версиях

Дедупликация не работает на томах меньше чем 2 Гб.

Windows Server 2012 + r2

  • файловая система только NTFS;
  • поддержка томов до 10 Тб;
  • не рекомендуется использовать с файлами объем которых достигает 1 Тб;
  • 2012 не поддерживает VSS (не может работать с открытыми файлами) с 2012 r2 эта поддержка появилась;
  • один режим работы.

Windows Server 2016

  • файловая система только NTFS;
  • поддержка томов до 64 Тб;
  • дедупликация работает с первым 1 Тб данных у файла (ранее могли быть ошибки после 1 Тб данных, но исправилась после выпуска обновлений kb3216755, kb4025334, kb4013429);
  • три режима работы;
  • возможность доступна в Nano Server.

Windows Server 2019

  • файловая система NTFS или ReFS;
  • поддержка томов до 64 Тб;
  • работа с первыми 4 Тб данных у файла (ранее могли быть ошибки после 1 Тб данных, но исправилась после выпуска обновлений kb3216755, kb4025334, kb4013429);
  • три режима работы;
  • интеграция с BranchCache;
  • возможность доступна в Nano Server.

Если вы используете кластер, то роль должна быть установлена на каждую ноду.

Где и когда применять

Связи с причинами описанными выше есть рекомендации, где имеет смысл использовать роль:

  • Файловые сервера
  • VDI
  • Архивы с бэкапом ( Не рекомендую)

Фактически вы не сможете использовать эту роль со следующими условиями (без учета разницы в версиях):

  1. файлы зашифрованные (EFS);
  2. файлы с расширенными атрибутами;
  3. размер файлов меньше чем 32 Кб;
  4. том является системным или загрузочным;
  5. тома не являющиеся дисками (сетевые папки, USB носители).

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

Так же не стоит использовать дедупликацию на базах данных и любых других данных с высоким I/O, так как они содержат мало дублирующих данных и часто меняются. Из-за этого процесс поиска уникальных данных, а следовательно и нагрузка на сервер, может проходить в пустую.

Дедупликация работает по расписанию и может использовать минимум и максимум мощностей. В зависимости от общего объема и мощности сервера разный процесс дедупликации (их 4) может занять как час, так и дни. Microsoft рекомендует использовать 10 Gb оперативной памяти на 10 Тb тома. Часть операций нужно делать после работы, какие-то в выходные — все индивидуально.

На некоторых программах бэкапа, например Veeam, тоже присутствует дедупликация архивов. Если вы храните такой бэкап на томе Windows, с такой же функцией, вам нужно выполнить дополнительные настройки. Игнорирование этого может привести к критическим ошибкам.

При копировании файлов между двумя серверами, с установленной ролью, они будут перенесены в дедуплицированном виде. При переносе на том, где этой роли нет — они будут сохранены в исходном состоянии.

Microsoft не рекомендует использовать robocopy, так как это может привести к повреждению файлов.

В клиентских версиях, например Windows 10, официально такой роли нет, но способ установки существует. Люди, которые выполняли такую процедуру, сообщали о проблемах с программами подразумевающие синхронизацию с внешними базами данных.

Где нельзя применять

Дедупликация была создана для томов данных NTFS, она не поддерживает загрузочные или системные диски и не может использоваться с общими томами кластера (CSV). Не поддерживает дедупликацию работающих виртуальных машин или раюотающих баз данных SQL , также на диске не должен находится файл подкачки

Установка

В панели Server Manager открываем мастер по установке ролей и компонентов:

Пропускаем первые три шага (область 1) или выбираем другой сервер если планируем устанавливать роль не на этот сервер (область 2):

На этапе выбора ролей сервера, во вкладе «Файловые службы и службы хранилища» и «Файловые службы и службы iSCSI» выбираем «Дедупликация данных»:

Раздел выбора компонентов не понадобится и его можно пропустить. На шаге подтверждения можно еще раз проверить выбранные операции и нажать кнопку установки:

Установка занимает несколько минут и без необходимости в последующей перезагрузке. Окно подтверждающее успешную установку можно закрыть:

Или выполните следующую команду PowerShell:
Install-WindowsFeature -Name FS-Data-Deduplication -IncludeAllSubfeature -IncludeManagementTools

Оценка потенциального освобождающегося места с DDPEval.exe

Вместе с установкой роли у появляется программа DDPEval.exe, позволяющая предварительно оценить пространство, которое будет освобождено в последующем.

Статистика, которую предоставляет Microsoft в зависимости от разных типов данных, примерно следующая:

  • Документы пользователей — экономия 30-50%
  • Установочные файлы — экономия 70-80%
  • Файлы виртуализации — экономия 80-95%
  • Файловые хранилища — экономия 50-60%

Если вы сомневаетесь стоит ли вам настраивать дедупликацию на вашем сервере, но хотите узнать сколько дискового пространства вы можете сэкономить за счет ее активации, то можно использовать ddpeval.exe

Диск не должен быть включен в дедупликацию , иначе будет ошибка
ERROR: Evaluation not supported on system, boot or Data Deduplication enabled volumes.

ddpeval.exe вы можете найти в папке WindowsSystem32 после установки роли Data Deduplication.

Предположим, у нас есть папка в которой лежит 3 Full бэкапа, сделанные средствами wbadmin, общим объемом 2.18 tb.
Нас интересует сколько мы сэкономим места за счет использования дедупликации.

Открываем CMD. Переходим в папку где находится ddpeval.exe и выполняем несложную команду

ddpeval E:backup1msk-exch01 /V /O:C:TempDedupEval.txt

где:
‘E:backup1msk-exch01’ — папку которую мы анализируем,
/V — как обычно, ключ расширенной обратной связи,
/O: — путь к файлу в который будет записан отчет по анализу экономии дискового пространств.

Известно что самый большой процент экономии места от дедупликации достигается на резервных копиях(если это не инкриментальные копии), за счет того что основная часть РК остается неизменной.

В таблице видно что самый большой коэффициент имеют образы виртуальных машин, а wbadmin как раз и создает файлы виртуальных дисков в формате vhdx.

Результат анализа папки с бэкапами

Нам предлагают ознакомиться с двумя вариантами анализа: с сжатием и без.
Мы можем видеть что экономия места после проведения дедупликации будет достаточно значительной — не менее 700 гигабайт.

И последний результат с 11 разными csv/xlsx/docx файлами. Экономия 51%:

Настройка роли

Возможность управлять ролью находится на вкладе «Файловые службы»:

Во вкладке по работе с разделов выберем один из них и нажмем правой кнопкой мыши. В выплывающей меню мы увидим «Настройка дедупликации данных»:

По умолчанию дедупликация отключена. У нас есть выбор из трех вариантов:

  • Файловый сервер общего назначения;
  • Сервер инфраструктуры виртуальных рабочих столов (VDI);
  • Виртуализированный резервный сервер.

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

Важной настройкой является установка возраста файла (область 1), который будет проходить процесс оптимизации (Те файлы которые больше 3 дней лежат на файловом сервере). Новые файлы пользователей могут активно меняться в течение нескольких дней, что в пустую увеличит нагрузку на сервер при дедупликации, а затем не открываться вовсе. Если установить значение 0, то дедупликация не будет учитывать возраст файла вовсе.

В области 2 указываются расширения файлов для исключения из процессов дедупликации. Рекомендую установить несколько расширений, которые не несут значительную роль. Затем, через недели две, оценить нагрузку на сервер и, если она будет удовлетворительной, убрать исключение. Вы можете сделать и обратную операцию, добавив в исключения расширения уже после оценки нагрузки, но этот вариант не настолько очевиден как первый. Проблема будет в том, что исключенные файлы не раздедуплицируются автоматически (только с Powershell) и они все так же будут нуждаться в поддержке и ресурсах. В области 3 исключаются папки.

В окне расписания мы можем настроить следующее:

  • Фоновая оптимизация (Enable background optimization) — включена по умолчанию. Работает с низким приоритетом не мешая основным процессам. При высокой нагрузке останавливается автоматически. Срабатывает один раз в час;
  • Включить оптимизацию пропускной способности (Enable throughput optimization) — расписание, когда дедупликация может выполнятся без ограничения в ресурсах. Можно настроить на выходные дни например;
  • Создать второе расписание оптимизации пропускной способности (Create a second schedule for throughput optimization) — расписание аналогично предыдущему. Можно настроить на вечернее время.

На этом настройки, которые выполняются через интерфейс заканчиваются. Если снять галочку, которая включает дедупликацию, все процессы поиска и дедупликации остановятся, но файлы не вернуться в исходное положение. Для обратного преобразования файлов нужно запускать процесс Unoptimization, который выполняется в Powershell и описан ниже.

Расширенные настройки с Powershell

С помощью Powershell мы можем установить роль и настроить ее сразу на множестве компьютеров. Для установки роли локально или удаленно можно использовать следующую команду:

Install-WindowsFeature -Name "FS-Data-Deduplication" -ComputerName "Имя компьютера" -IncludeAllSubFeature -IncludeManagementTools

Следующим способом мы увидим все команды модуля дедупликации:

Get-Command -Module Deduplication

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

Как уже говорилось выше, при настройке в GUI у нас есть три рекомендованных режима работы с уже установленным расписанием:

  • HyperV;
  • Backup;
  • Default (файловый сервер, устанавливается по умолчанию).

Каждый из этих режимов устанавливается для одного или множества томов следующим путем:

Enable-DedupVolume -Volume 'E:','D:' -UsageType 'Default'

В некоторых командах может появится ошибка, которая связана с написанием буквы раздела со слэшем. Если у вас она тоже появится попробуйте исправить ‘E:’ на ‘E:’:

No MSFT_DedupVolume objects found with property ‘Volume’ equal to ‘E:’

Так мы узнаем на каких томах настроена дедупликация:

Get-DedupVolume

Так же как и в GUI мы можем ограничить обработку папок и файлов по их расширению. Для этого есть следующие аргументы:

  • ExcludeFolder — ограничения на папки, например ‘E:Folder1’,’E:Folder2»
  • ExcludeFileType — ограничения по расширениям, например ‘txt’,’jpg’;
  • MinimumFileAgeDays — минимальный возраст файла в днях, который будет оптимизироваться.

Следующий пример установит эти настройки и вернет их:

Set-DedupVolume `
-Volume 'E:' `
-ExcludeFolder 'E:folder_exclude' `
-ExcludeFileType 'txt','rar' `
-MinimumFileAgeDays 15

Get-DedupVolume | Select *

По умолчанию дедуплкиция работает только с файлами больше чем 32Kb. В отличие от GUI это меняется в Powershell, но не в меньшую сторону. На примере ниже я установлю этот минимум для файлов в 1GB:

Set-DedupVolume `
-Volume 'E:' `
-MinimumFileSize 1GB

Get-DedupVolume | Select *

Есть еще несколько параметров, которые устанавливаются:

  • ChunkRedundancyThreshold — устанавливает порог ссылок после которого будет создан еще один идентичный чанк. По умолчанию равен 100. С помощью этого параметра увеличивается избыточность. Проявляется она в более быстром и гарантированном (в случае повреждения) доступе файла. Не рекомендуется менять;
  • InputOutputScale — установка значения I/O для распараллеливания процесса от 0 до 36. По умолчанию значение рассчитывается само;
  • NoCompress — значению в $True или $False устанавливающая будет ли происходить сжатие;
  • NoCompressionFileType — расширение файлов к которым не будет применяться сжатие;
  • OptimizeInUseFiles — будут ли оптимизированы открытые файлы, например подключенные файлы VHDx;
  • OptimizePartialFiles — если $True — будет работать блочная дедупликация. В ином случае будет работать файловая дедупликация;
  • Verify — добавляет еще одну проверку идентичности чанков. Они будут сравниваться побайтно. Не могу сказать о ситуациях, где это могло бы пригодиться.

Для отключения используется следующая команда:

Disable-DedupVolume -Volume 'E:'

Отключенная дедупликация не конвертирует файлы в их исходное состояние. В примере выше у нас просто не будут оптимизироваться новые файлы и выполнятся задачи. Если к команде добавить параметр -DataAccess, то мы отключим доступ к файлам прошедшим через процесс дедупликации. О том как отменить дедупликацию полностью — будет рассказано далее.

Изменение расписаний

Дедупликация делится на 4 типа задач отдельно которые можно запустить в Powershell:

  1. Оптимизация (Optimization) — разбиение данных на блоки, их сравнение, сжатие и помещение в хранилище System Volume Information. По умолчанию происходит раз в час;
  2. Сбор мусора (GarbageCollection) — удаление устаревших фрагментов (например восстановление тех данных у которых нет дубликатов). По умолчанию происходит каждую субботу;
  3. Проверка целостности (Scrubbing) — обнаружение повреждений в хранилище блоков и их восстановление. По умолчанию происходит каждую субботу;
  4. Отмена оптимизации (Unoptimization)— отмена или отключение оптимизации на томе. Выполняется по требованию.

Каждое такое задание, а так же созданные вами лично, можно увидеть в планировщике задач. Там же можно увидеть время запуска и результат выполнения:

Например можно увидеть, что задача фоновой оптимизации запускается каждый час.

Более конкретно узнать время задач мы можем через получение расписания:

Get-DedupSchedule

Задания никогда не выполняются одновременно — только в процессе очереди.

Мы можем изменить каждое из этих заданий. Например процесс GarbageCollection является очень ресурсозатратным процессом и я хочу что бы его работа начиналась в пятницу в 22:00 (по умолчанию работает в субботу в 2:45 ночи), что бы точно завершилась к понедельнику. Я так же установлю параметр StopWhenSystemBusy, который остановит процесс очистки мусора если система будет сильно нагружена другой задачей. Я сделаю это так:

Set-DedupSchedule `
-Name 'WeeklyGarbageCollection' `
-Type 'GarbageCollection' `
-Enabled $True `
-StopWhenSystemBusy $True `
-Days 'Friday' `
-Start 22:00 `

Где:

  • Name — имя процесса, который мы хотим изменить;
  • Type — тип процесса. В нашем случае это сборка мусора (GarbageCollection);
  • Enabled — будет ли включен этот процесс;
  • StopWhenSystemBusy — остановится ли процесс, если сервер будет сильно нагружен другой задачей (затем попробует запустится снова);
  • Days — дни, в которые этот процесс должен запускаться;
  • Start — время запуска.

Есть еще параметры, которые есть не только у этого командлета, но и у других команд дедупликации:

  • DurationHours — продолжительность работы задачи в часах, после которого он будет корректно завершен. По умолчанию равен 0, что означает работу до полного завершения без ограничения во времени.
  • Full — параметр со значениями $True и $False. Зависит от того что указано в Type. Если мы выполняем сборку мусора, то этот параметр будет удалять все устаревшие данные сразу, а не до достижения определенного порога. При выполнении очистки (Scrubbing), если указан параметр Full, происходит проверка всех данных, а не только критически важных. В обоих случаях этот параметр стоит использовать раз в месяц.
  • ReadOnly — при работе очистки не исправляет ошибки, а только уведомляет

Кроме этого, почти во всех командах при работе с дедупликацией есть настройка ресурсов, которые мы планируем выделять:

  • Cores — число с количеством ядер (в процентном соотношении), которые будут участвовать в процессе;
  • Memory — количество памяти от общего значения (в процентном соотношении);
  • StopWhenSystemBusy — останавливает задачу, если сервер, в данный момент, сильно нагружен (возобновляет ее позже);
  • Priority — указывает тип нагрузки на процессор (ввод, вывод) со значениями: Low, Normal, High;
  • InputOutputThrottle — ограничения работы ввода вывода при троттлинге в значениях от 0 до 100,;
  • InputOutputThrottleLevel — ограничения работы ввода вывода при троттлинге со следующими значениями: None, Low, Medium, High. InputOutputThrottle имеет более высокий приоритет и при установке двух аргументов — InputOutputThrottleLevel  может не работать.
  • ThrottleLimit — указывает предел троттлинга. Если указан 0, то расчет будет выполнен автоматически.

Аналогия команды с другими ключами которая описана ниже

Задание должно запускаться в 9:00 с понедельника по пятницу и работать 11 часов, с нормальным приоритетом, использовать не более 20% ОЗУ и 20% ЦП:
New-DedupSchedule -Name ThroughputOptimization -Type Optimization -Days @(1,2,3,4,5) -DurationHours 11 -Start (Get-Date ″12/8/2016 9:00 PM″) -Memory 20 -Cores 20 -Priority Normal

На примере параметров выше я создам новую задачу по оптимизации. Она будет проходить в будни, после 21:00, с нагрузкой в 70% от максимальной на протяжении 8 часов:

New-DedupSchedule `
-Name 'Оптимизация по будням' `
-Cores 80 `
-Days Monday,Tuesday,Wednesday,Thursday,Friday `
-DurationHours 8 `
-InputOutputThrottleLevel Medium `
-Priority Normal `
-Memory 80 `
-Start 21:00 `
-Type 'Optimization' `
-StopWhenSystemBusy `

Обращу внимание, что мы можем не писать все эти настройки, а просто копировать их используя обычные методы Powershell. Так я создам копию задачи очистки (Scrubbing), которая будет дополнена ключом Full и отключена по умолчанию:

Get-DedupSchedule -Name '*Scrub*' | New-DedupSchedule `
-Name 'Полная проверка целостности раз в месяц' `
-Full `
-Disable `

Так же можно и удалять задачи:

Get-DedupSchedule -Name '*Полная*' | Remove-DedupSchedule
# или
Remove-DedupSchedule -Name '*Полная*'

Если вы убрали дедупликацию на томе и планируете обратить файлы в исходное состояние вы можете выполнить следующую команду установив свои настройки:

New-DedupSchedule -Type Unoptimization

Учитывайте, что вам потребуется больше свободного пространства для файлов (иначе дедупликация остановится с ошибкой) и процесс займет много ресурсов и времени. Копирование данных на другой том так же возможен и в этом случае файл тоже вернется в исходное состояние.

Мгновенный запуск дедупликации

Предыдущий пример, где мы устанавливали параметр Full, для проверки целостности всей базы, был не очень удачный. Дело в том, что мы можем устанавливать расписание только на неделю, а такая проверка рекомендуется раз в месяц. Для исправления этой ситуации мы можем использовать разовые задачи. Так я создам и запущу похожую задачу:

Аналогия команды

Например, запустите полную оптимизацию тома D с наивысшим приоритетом:
Start-DedupJob -Volume D: -Type Optimization -Memory 75 -Cores 100 -Priority High -Full

Ниже комманда что предлагаю в тесте

Start-DedupJob `
-Full `
-Volume 'E:' `
-Type 'Scrubbing'

Вернуть состояние задачи можно так:

Get-DedupJob

Если у вас есть настроенное расписание, то вы тоже его можете скопировать и запустить т.е. использовать как шаблон. Такая возможность явно не планировалась разработчиками и поэтому могут быть ошибки на этапе запуска. Например у меня была такие ошибки:

  • Exception calling «EndProcessing» with «0» argument(s)
  • Start-DedupJob : MSFT_DedupVolume.Volume=’

Одна из них была связана с отсутствием буквы раздела, так как я его не указал. Я дополнил параметры и все сработало корректно. Так же как и на примерах выше мы можем исправлять шаблон из планировщика как хотим. Ошибки могут быть разными, но они достаточно ясные и легко исправляются:

Get-DedupSchedule -Name 'полная проверка' | Start-DedupJob -InputOutputThrottleLevel Low -Volume 'E:'

Так же как и при создании запланированной задачи мы можем установить следующие параметры (более детально они описаны выше):

  • Cores
  • Full
  • InputOutputThrottle
  • InputOutputThrottleLevel
  • Memory
  • Priority
  • ReadOnly
  • StopWhenSystemBusy
  • ThrottleLimit
  • Type

А эти параметры есть только у Start-DedupSchedule:

  • Preempt — форсированный запуск задачи, отменяющий иные;
  • Timestamp — работает только с задачами типа ‘Unoptimization’ и принимает значения типа данных DateTime. Отменяет оптимизацию файлов оптимизированных с указанной даты;
  • Volume — можно указать один или несколько томов. Можно указывать буквы формата ‘E:’, ID и GUID;
  • Wait — в фоне будет отображаться процесс задачи и ее результат. Пример ниже.

Пример отмены задач:

Get-DedupJob -Type Scrubbing | Stop-DedupJob # или Stop-DedupJob -Volume 'E:','C:'

Отмену дедупликации вы так же можете запустить задачей:

Start-DedupJob -Volume D: -Type Unoptimization -Memory 100 -Cores 100 -Priority High -Full

Статус дедупликации

Следующая команда вернет текущий статус дедупликации:

# Сокращенный вариант
Get-DedupStatus

# Полный отчет
Get-DedupStatus | select *

Предыдущая команда возвращает закэшированные данные, но если вы хотите получить наиболее актуальную информацию вы можете выполнить следующую команду:

# Для всех томов
Update-DedupStatus

# Для одного тома
Update-DedupStatus -Volume 'E:'

# Возвращение полной актуальной информации по тому
Update-DedupStatus -Volume 'E:' | SELECT *

Следующая команда вернет время последнего выполнения каждого из процессов дедупликации:

Get-DedupStatus -Volume 'E:' | select -Property "time" | fl

Эта команда вернет информацию по работе с файлами:

Get-DedupStatus -Volume 'E:' | select -Property "file",'srate' | fl

Где:

  • InPolicyFilesCount — количество файлов, которые подходят для оптимизации;
  • InPolicyFilesSize — общий размер файлов, которые подходят для оптимизации;
  • OptimizedFilesCount — количество файлов, которые были оптимизированы;
  • OptimizedFilesSavingRate — процент оптимизированных файлов относительно всех файлов которые подходят под установленные параметры;
  • OptimizedFilesSize — общий размер оптимизированных файлов.

Более точно эти данные отображаются после процесса сборки мусора и оптимизации.

Следующая команда вернет данные из базы дедупликации по определенному тому:

Get-DedupMetadata -Volume 'E:'

Если такой запрос завершится ошибкой, то скорее всего, в данный момент, происходит один из процессов дедупликации, который меняет эти метаданные.

По выводу мы можем увидеть:

  • DataChunkCount — количество чанков, размером 32-128 Кб на одном томе;
  • DataContainerCount — количество контейнеров;
  • DataChunkAverageSize — средний размер одного чанка (размер контейнера поделенный на количество чанков);
  • TotalChunkStoreSize — размер хранилища;
  • CorruptionLogEntryCount — количество ошибок на томе.

Свойства типа «Stream*» скорее всего показывают данные по открытым файлам или проходящие через Volume Shadow Copy. 

Если будет необходимость в освобождения места (переносом или удалением) подсчет потенциально освобождающегося пространства будет сложной задачей. Связано это с тем, что не ясно количество дедуплицированных файлов (они могут быть в трех, четырех копиях, в разных местах и т.д.). В этом случае можно использовать команду Measure-DedupFileMetadata:

Measure-DedupFileMetadata -Path 'E:New folder'

Где:

  • FilesCount — количество файлов на всем томе;
  • OptimizedFilesCount — количество оптимизированных файлов на всем томе;
  • Size — суммарный размер всех файлов;
  • DedupSize — итоговый размер дедуплицированных файлов в этой папке;

Восстановление дедуплицированных файлов

Команда Expand-DedupFile восстанавливает файл, который был оптимизирован в его исходное место. Такая операция может понадобится, когда стороннее приложение (например программы бэкапа) не могут корректно работать с файлом. Важным моментом восстановления таких файлов является достаточное количество места на диске. Следующим образом я восстановлю два файла в их исходное местоположение:

Expand-DedupFile -Path 'E:New folderOtchet2020.doc','E:New folder3285.wav'

Никакого вывода команда не выдает, но если файл не был дедуплицирован, то вы получите ошибку:

 Expand-DedupFile : MSFT_DedupVolume.Path='E:file1' - HRESULT 0x80070057, The parameter is incorrect.

При ошибке целого тома

PS C:Windowssystem32>  Expand-DedupFile -Path F:
Expand-DedupFile : MSFT_DedupVolume.Path='F:' - HRESULT 0x80070005, Access is denied.
At line:1 char:2
+  Expand-DedupFile -Path F:

Можно выполнить команду которая рекурсивно пройдет по всему тому и восстановит дедуплицированные файлы
Get-ChildItem F: -Recurse -Attributes !D | Expand-DedupFile

После выполнения данной команды , доступ к файлам через проводник зависнет на самом сервере, но для других файлы будут доступны!!!

Процент данных , также будет уменьшатся

После делаем команду
Update-DedupStatus

Отключение Deduplication

На томе отключаем дедупликацию

Восстанавливаем файлы
Get-ChildItem F: -Recurse -Attributes !D | Expand-DedupFile

Обновляем статус

Update-DedupStatus

Где найти логи Deduplication

Applications and services — logsMicrosoftWindowsDedupliation

Восстановление данных с HDD после дедупликации Windows Server

К примеру, если вышла из строя система Windows Server в которой,  выполнялась дедупликация одного из жестких дисков. Возможно, ли подключить этот диск к другому компьютеру и считать , восстановить эти данные?

Вся информация о дедупликации хранится на самом диске. Поэтому будет достаточно подключить диск/диски к другому ПК/Серверу с Windows Server , включить на нём дедупликацию и получить доступ к вашему старому диску.

Дедуплицированные папки весят 0 байт

Это означаем что по указанному пути файлы дедуплицированы

Дудуплицированные файлы весят 0 байт

Восстановите файл из бэкапа

Возможность дедупликации данных впервые появилась еще в Windows Server 2012. В Windows Server 2016 представлена уже третья версия компонента дедупликации, значительно переработанная и улучшенная. В этой статье мы поговорим о новых функциях дедупликации, ее настройках и отличиях от предыдущих реализаций.

    Содержание:

  • Новые возможности дедупликации данных в Windows Server 2016
  • Установка компонента дедупликации в Windows Server 2016
  • Включение и настройка дедупликации
  • Ручной запуск дедупликации
  • Просмотр состояния дедупликации
  • Как отключить дедупликацию

Новые возможности дедупликации данных в Windows Server 2016

    1. Многопоточность. Первое и самое важное изменение в дедупликации данных в Windows Server 2016 — введение многопоточности. Дедупликация в Windows Server 2012 R2 работала только в однопоточном режиме и не могла использовать более одного процессорного ядра для одного тома. Это сильно ограничивало производительность, и для обхода этого ограничения необходимо было разбивать диски на несколько томов меньшего размера. Максимальный размер тома не должен превышать 10 Тб.
      Обновленный движок дудупликации в Windows Server 2016 выполнять задания дедупликации в многопоточном режиме, причем каждый том использует несколько вычислительных потоков и очередей ввода-вывода. Введение многопоточности и других изменений в компоненте сказалось на ограничениях на размер файлов и томов. Поскольку многопоточная дедупликация повышает производительность и устраняет необходимость разбиения диска на несколько томов в Windows Server 2016, вы можете использовать дедупликацию для тома до 64 ТБ. Также увеличен максимальный размер файла, теперь поддерживается дедупликация файлов до 1 Тб.
    2. Поддержка виртуализированных приложений резервного копирования. В Windows Server 2012 был только один тип дедупликации, предназначенный в основном для обычных файловых серверов. Дедупликация непрерывно работающей ВМ не поддерживается, поскольку дедупликации не знает, как работать с открытыми файлами.
      Дедупликация в Windows Server 2012 R2 начала использовать VSS, соответственно, стала поддерживаться дедупликация виртуальных машин. Для таких задач использовался отдельный тип дедупликации.В Windows Server 2016 добавлен еще третий тип дедупликации, предназначенный специально для виртуализированных серверов резервного копирования (например, DPM).
    3. Поддержка Nano Server. Nano Server – эта технология позволяет развертывать операционную систему Windows Server 2016 с минимальным количеством установленных компонентов. Nano Server полностью поддерживает дедупликацию.
    4. Поддержка последовательного обновления кластера (Cluster OS Rolling Upgrade). Cluster OS Rolling Upgrade – это новая функция Windows Server 2016, которая может использоваться для обновления операционной системы на каждом узле кластера с Windows Server 2012 R2 до Windows Server 2016 без остановки кластера. Это возможно благодаря специальной смешанной работе кластера, когда узлы кластера одновременно могут работать под управлением Windows Server 2012 R2 и Windows Server 2016.Смешанный режим означает, что одни и те же данные могут быть расположены на узлах с разными версиями компонента дедупликации. Дедупликация в Windows Server 2016 поддерживает этот режим и обеспечивает доступ к дедуплицированным данным в процессе обновления кластера.

Установка компонента дедупликации в Windows Server 2016

Первое, что нужно сделать, чтобы включить дедупликацию — это установить соответствующую роль сервера. Запустите Server Role wizard и добавьте роль файлового сервера с компонентом «Data Deduplication».

Установка компонента Data Deduplication

Или выполните следующую команду PowerShell:

Install-WindowsFeature -Name FS-Data-Deduplication -IncludeAllSubfeature -IncludeManagementTools

Install-WindowsFeature -Name FS-Data-Deduplication -IncludeAllSubfeature -IncludeManagementTools

Включение и настройка дедупликации

После установки компонентов вам необходимо включить дедупликацию для определенного тома (или нескольких томов). Это можно сделать двумя способами: с помощью графического интерфейса или с помощью PowerShell.

Чтобы настроить компонент из GUI, откройте Server Manager, перейдите в File and storage services -> Volumes, выберите нужный том, щелкните правой кнопкой мыши и в меню выберите «Configure Data Deduplication».

Configure Data Deduplication

Затем выберите нужный тип дедупликации (например, General puprose file server) и нажмите «Применить». Кроме того, вы можете указать типы файлов, которые не должны подвергаться дедупликации, а также создать исключения для определенных каталогов (каталоги с мультимедиа файйлами, базами и т.д.).

настройка дедеупликации и исключений

Затем вам необходимо настроить расписание, по которому будет работать задание дедупликации. Нажмите кнопку Set Deduplication Schedule.

По умолчанию включена фоновая оптимизация (background optimization), и вы можете настроить две дополнительные задачи принудительной оптимизации (throughput optimization). Здесь есть несколько настроек — вы можете выбрать дни недели, время начала и продолжительность работы.

расписание дедупликации

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

Enable-DedupVolume -Name D: -UsageType HyperV

Список текущих заданий дедупликации:

Get-DedupSchedule

Как вы видите, в дополнении к фоновой задачи оптимизации есть задача приоритетной оптимизации (PriorityOptimization), а также задания по сбору мусора (GarbageCollection) и очистке (Scrubbing). Все эти задачи нельзя увидеть в графическом интерфейсе.

Get-DedupSchedule

PowerShell позволяет вам точно настроить параметры заданий дедупликации. Например, создадим такую задачу оптимизации: задача должна запускаться в 9 утра с понедельника по пятницу и работать 11 часов, с нормальным приоритетом, используя не более 20% ОЗУ и 20% CPU:

New-DedupSchedule -Name ThroughputOptimization -Type Optimization -Days @(1,2,3,4,5) -DurationHours 11 -Start (Get-Date ″20/05/2017 9:00 PM″) -Memory 20 -Cores 20 -Priority Normal

Отключим приоритетную оптимизацию:

Set-DedupSchedule -Name PriorityOptimization -Enabled $false

Ручной запуск дедупликации

При необходимости вы можете запустить задание дедупликации вручную. Например, запустим полную оптимизацию тома D: с наивысшим приоритетом:

Start-DedupJob -Volume D: -Type Optimization -Memory 75 -Cores 100 -Priority High -Full

Start-DedupJob -Volume D: -Type Optimization -Memory 75 -Cores 100 -Priority High -Full

Отслеживать выполнение заданий дедупликации можно с помощью команды Get-DedupJob. Заметим, что одновременно может выполняться только одна такая задача, остальные при этом находятся в очереди и ждут ее завершения.

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

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

Get-DedupVolume -Volume D: | fl

Таким образом, вы можете видеть основные параметры тома — общий размер тома, использованный и сохраненный объем, уровень сжатия и т.д.

Get-DedupVolume -Volume D: | fl

Чтобы проверить статус задания дедупликации, используйте команду:

Get-DedupStatus -Volume D: | fl

Get-DedupStatus -Volume D: | fl

Как отключить дедупликацию

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

Disable-DedupVolume -Name D:

Disable-DedupVolume -Name D:

Отключение дедупликации для тома отменяет все запланированные задачи, а также предотвращает выполнение любых задач дедупликации, кроме операций на чтение (таких команд, как Get и unoptimization). Данные при этом остаются в неизменном состоянии, останавливается лишь дедупликация новых файлов.

Чтобы вернуть данные в исходное состояние, используйте процедуру обратной дедупликации. Например, выполните следующую команду для выполнения дедупликации данных на диске D с максимально возможной скоростью:

Start-DedupJob -Volume D: -Type Unoptimization -Memory 100 -Cores 100 -Priority High -Full

Start-DedupJob -Volume D: -Type Unoptimization

Обратите внимание, что для выполнения раздедупликации потребуется дополнительное пространство. Если свободного места на томе недостаточно, процедура не будет выполнена.

Disclaimer

Please be aware that Windows Data Deduplication technology in Windows Server 2016 has had critical bugs, that were recently fixed. More details can be found in this discussion on Veeam Forums and in this official blog post, written by the Microsoft R&D team. To make a long story short, it’s strongly recommended to apply KB4013429 on your Windows Server 2016 installations as it resolves this issue and includes some other important fixes for general reliability. If you happen to run into “the volume bitmap is incorrect” on deduplicated Windows Server 2016 volumes, please follow this Veeam forum thread.

Intro

The amount of data we use grows every day. Everyone can notice this trend with the ever-expanding range of devices, all of which are collecting and storing data 24/7. In the IT world, these devices make up the Internet of Things (IOT). Microsoft says that by 2020, the amount of created information per person (sic!) will be just above 5 TB. With that said, everyone is participating in this trend but only a few must deal with it in their everyday work. It’s no secret that data management is an important part of a system administrator’s agenda. We are constantly looking to implement technologies and services that allow us to manage information flow better and let us store data efficiently without eating up our budget. There are many ways to achieve that but today I wanted to talk about one special example — Data Deduplication technology (often referred as “Dedup”), developed by the Microsoft Windows Server team. While the technology itself is interesting, it’s much more interesting to me if I can leverage it to save some space for my Veeam backup repository. So, this article should be useful for people who are considering data deduplication technology and would like to know its benefits as well as practical savings with specific Veeam scenarios.

Files, which are stored to a disk volume and left there for several days (to ensure it’s not fast-changing data), can be checked by a special process, splitting this data into small blocks, named chunks (32 KB – 128 KB) and then analyzed chunk by chunk. The system preserves unique blocks only, moving them into a chunk store and leaving references (reparse points) for those blocks that are used more than once. This allows you to have valuable storage savings if the said data is similar. The most important use cases include: Hyper-V VDI environment, backup storages and file servers. A Data Deduplication process runs one of four different task types: Optimization (splitting data into chunks and moving them into the chunk store), garbage collection (reclaiming space by removing obsolete chunks), integrity scrubbing (detecting corruption in the chunk store) or unoptimization (undoing optimization and disabling data deduplication on this volume).

Please refer to the Microsoft knowledge base for more details about Data Deduplication basics.

How to run Data Deduplication

Enabling Dedup is as easy as adding a new server feature via Server Manager (Figure 1). As an alternative, you are able to install Windows Server Data Deduplication by running a simple PowerShell cmdlet:

Install-WindowsFeature -Name FS-Data-Deduplication

Now, you can go to the list of disk volumes in Server Manager and enable Data Deduplication on NTFS volumes (ReFS is not supported yet), which are not system volumes (Figure 1) or again use PowerShell:

Enable-DedupVolume -Volume <Volume-Path> -UsageType <Default/HyperV/Backup>

Figure 1. Enabling Dedup on disk volume

Figure 1. Enabling Dedup on disk volume

Then, you will need to select the schedule for the data deduplication job and adjust the default settings if required. Now, the feature is running and you should be getting your results as scheduled. It’s helpful to use PowerShell cmdlets to get more insight on the process. Get-DedupSchedule lists information about all deduplication tasks are that are configured on a system. Get-DedupJob shows the running Dedup job and its progress. Get-DedupStatus allows to see the details of the task: Amount of saved space and number of processed files on a volume. (Figure 2)

Figure 2. Useful PowerShell cmdlets for Dedup

Figure 2. Useful PowerShell cmdlets for Dedup

How to use Dedup with Veeam backup repository

If you’re familiar with Veeam products, you know that Veeam Backup & Replication has an internal data deduplication mechanism. Veeam Proxy Server, a component which processes the data and pushes it from source to target, analyzes VM data blocks on the fly, calculates a unique hash for those blocks and saves identical blocks into the backup file only once, providing inline data deduplication.

But the most interesting case happens if the administrator wants to put Veeam backups in a repository which resides on a disk volume with Windows Data Deduplication enabled. For those cases, we have several important requirements to ensure these two technologies work together perfectly. An administrator must make Veeam aware of the upcoming Windows Data Deduplication so it behaves accordingly, not trying to do the whole job itself. It’s recommended to set up the Backup Job properly: Navigate to its settings in Storage -> Advanced -> Storage tab and make sure that inline data deduplication is enabled, compression level is set to “None”, storage optimization is selected with “LAN target” (Figure 3).

Figure 3. Veeam Backup Job settings for Dedup

Figure 3. Veeam Backup Job settings for data deduplicationAlso, go to backup repository settings and find “Advanced” settings on the Repository tab (Figure 4). Then, check “decompress backup data blocks before storing” and “align backup file data blocks,” so that Veeam will do its best before passing the task to Dedup. Consider enabling “per-VM backup files” if operating with large backup files (more than 1TB). For the full list of recommendations please refer to the official Veeam best practices document.
Figure 4. Backup repository settings to be used with Windows Dedup
Figure 4. Backup repository settings to be used with Windows Data Deduplication

Now comes the most interesting part — practice. I’ve configured a Veeam Backup Job containing 15 VMs, mostly Windows VMs with some applications I run for different tests and point this Veeam Job to a newly created 230GB NTFS repository in my lab. I followed Veeam best practices in terms of job settings and let it run for a couple of days. I’ve got approximately 150GB of backup data (two full backups and a bunch of incremental points) and then I turned on Windows Data Deduplication on this volume and let it run overnight

The results I’ve got were amazing, Dedup job processed the volume, taking 150 GB of initial data down to 60GB and giving me 60% space savings (Figure 5). Incredible, isn’t it?

Figure 5. Space savings on Dedup volume

Figure 5. Space savings on Dedup volume

With that in mind, I highly encourage you to read more about data deduplication and experiment with this technology if you’re interested in space savings. This doesn’t make it the ultimate solution, however, when used smartly it can give you great results. As a bonus, it doesn’t require any new investment and no need to convince your boss to pay for an expensive data deduplication storage appliance.

What is your experience with data deduplication? Feel free to share in the comments.

Helpful resources

  • Veeam Agent for Microsoft Windows
  • Veeam forums: Best practices for Windows Server 2012 Dedup
  • Veeam Backup & Replication Guide: Windows Deduplication
  • Backup and Disaster Recovery: What you need to know about data reduction techniques!
  • Deduplication, Compression & Encryption — What’s the difference?

Andrew Zhelezko

Andrew Zhelezko

Andrew, currently working as a Global Technologist on the Veeam Product Strategy team, is a certified IT professional with over a decade of industry experience. Initially doing technical support for various solutions, including Veeam Backup & Replication, he has got practical expertise, which helps him to speak the same language as Veeam community members.

You can always find him presenting at different offline/online events, where he loves to solve the challenges associated with data protection. His motto is to help others realize the beauty and power of virtualization, cloud and SaaS technologies. 

More about author

  • Disclaimer

  • Intro

  • What’s Data Deduplication in Windows Server 2016?

  • How to run Data Deduplication

  • How to use Dedup with Veeam backup repository

    • Helpful resources

Cheers for trusting us with the spot in your mailbox!

Now you’re less likely to miss what’s been brewing in our blog with this weekly digest.

OK

Eliminate Data Loss
Eliminate Ransomware

#1 Backup and Recovery

Data Deduplication is a Microsoft Windows Server feature, initially introduced in Windows Server 2012 edition. 

As a simple definition, we can tell, data deduplication is an elimination of redundant data in data set and storing only one copy of the same data. It is done by identifying double byte patterns through data analysis, removing double data and replacing it with reference pointed to stored, single piece of data. 

In 2017, according to IBM, an output of world data creation was 2.5 quintillions (1018) bytes a day. That fact shows that today’s servers handle huge portions of data in every aspect of human life. 

Definitely, some percentage drops on duplicated data in any form, and that data is nothing more than the unnecessary load on servers. 

Microsoft knew the trends, way back in 2012 when Data deduplication was introduced and kept developing it, so in Windows Server 2016 system, Data deduplication is more advanced, as more important. 

But let’s start with 2012, and understand the feature in its basic. 

Data Deduplication Characteristics: 

Usage –  Data deduplication is very easy to use. It can be enabled on a data volume in “one-click”, with no delays or impacts on a system functionality.  In simple words, if the user requests a file, he will get it, as usual, no matter is that file affected by deduplication process. 

Deduplication is made not to aim to all files. For example, files smaller than 32KB, encrypted files ( encrypted with a usage of EFS), and files that have Extended attributes, will not be affected by the deduplication process. 

If files have an alternate data stream, the only primary stream will be affected, but alternate, will not.  

Deduplication can be used on Primary data volumes without affecting files that are being written to until files get to certain age, which allows great performance of feature active files and saves on other files. It sorts files in categories by criteria, and those that are categorized as “in policy” files are affected with deduplication, while others are not. 

Deduplication does not change write-path of new files. It allows writing of new files directly to NTFS and evaluates them later through background monitoring process. 

When files get to a  certain age, MinimumFileAgeDays setting decides ( previously set up by admin), are the files eligible for deduplication. The default setting is 5 days, but it can be changed, to a minimum of 0 days, which processes it, no matter of age. 

Some file types can be excluded, like PNG or CAB file types, with compression, if it is decided, the system will not benefit much from mentioned file type processing. 

In need of backing up and restoring to another server, deduplication will not make problems. All settings are maintained on the volume, and in need of relocation, they will be relocated too, all except scheduled settings, that are not written on volume. If relocation is made to a server that does not use deduplication, a user will not be able to access files affected by the process. 

Resource Control 

The feature is made to follow server workload and adapt to system resources. Servers usually have roles to fill, and storage, as seen by admin is only necessary to store background data, so deduplication is adapting to that philosophy. If there are resources to deduplicate, the process will run, if not, the process will stand by and wait for resources to become available. 

A feature is designed to use low resources and reduce the Input/output operations per second ( IOPS) so it can scale large data and improve the performance, with index footprint of only 6 bytes of RAM per chunk (average size of 64 KB) and temporary partitioning.  

– As mentioned, deduplication works on “chunks” principle, it uses an algorithm with chunks a     file in a 64KB pieces, compresses it, and store in a hidden folder. If a user requests that file, it “regenerate” file from the pieces and serve it to the user. 

–  BranchCache:  the feature that sub-file chunking and indexing engine are shared with. It has an option to send, if needed,  already indexed chunk over the WAN to the branch office, and saves a lot of time and data. 

Is there a  Fragmentation, and what about data access? 

The question that is imposed when reading about deduplication, is fragmentation!? 

Is there a fragmentation on a hard drive, based on spreading chunks around your hard drive? 

Answer is no, deduplication ’s filter driver has a task to keep the sequence of unique chunks together on disk locality, so distribution doesn’t go randomly, plus, deduplication has its own cache, so in situation of multiple requests for a file in an organization, the access pattern will speed things up, and will not start multiple file “recovery” processes, and user will have the same “answer time” as with file without deduplication, and in need of copying one large file, we see end-to-end copy times that can be 1.5 times what it takes on a non-deduplicated volume. But real quality and savings are coming up when copying multiple large files at the same time. The time of copying, due to the cache can speed up to an amazing 30%. 

Deduplication Risks and solutions 

Of course, like all other features, this way of works has some risks. 

In cases of any type of data corruption, there are serious risks, but solutions too. 

There is possibility with errors caused by  disk anomalies, controller errors, firmware bugs or environmental factors, like radiation or disk vibrations, that chunks errors can cause major problems as multiple files loss., but with good admin organization, usage of backup tools,  on time corruption detection, redundancy copies and regular checkups can minimize risks of corrupted data, and loses. 

Deduplication in Windows Server 2016 

As with all other features, data deduplication went through some upgrades and new features in the latest edition of Microsoft Server. 

We will describe the most important ones, and show a way to enable and configure that feature in Microsoft Server 2016 environment. 

Multithreading  

Multithreading is flagged as a most important change in 2016 when compared with Windows Server 2012 R2. On Server 2012 R2, deduplication operates in a single-threaded mode, and it uses one processor core by the single volume. In Microsoft, they saw it as a performance limit, and in 2016, they introduced multi-threaded mode. Now each volume uses multiple threads and an I/O queues. It changed limits of size per file or volume. In Server 2012 R2, maximum volume size was 10 TB, and in 2016 edition, it changed to 64TB volumes, and 1 TB files, what represents a huge breakthrough. 

Virtualization Support 

In the first edition of deduplication feature ( Microsoft Windows Server 2012), there was a single type of deduplication, created only for standard file servers, with no support for constantly running VM’s. 

Windows Server 2012 R2 started using   Volume Shadow Copy Service (VSS)  in a way that deduplication with a usage of optimization jobs, optimizes data, and VSS captures and copies stable volume images for backup on running server systems. With the usage of VSS, Microsoft, in 2012 R2 system, introduced virtual machines deduplication support and a separate type of deduplication. 

Windows Server 2016, went one step further and introduced another type of deduplication, designed specifically for virtual backup servers (DPM). 

Nano server support  

Nano server is minimal component’s fully operational Windows Server 2016, similar to Windows Server Core editions, but smaller, and without GUI support, ideal for purpose-built, cloud-based apps, infrastructure services, or Virtual Clusters.  

Windows Server 2016, supports fully deduplication feature on that type of servers. 

Cluster OS Rolling Upgrade support 

Cluster OS Rolling upgrade is a Windows Server 2016 feature that allows upgrade of an operating system from Windows Server 2012 R2 cluster nodes to Windows Server 2016 without stopping Hyper V. It can be made by usage of so-called “mix mode” operation of the cluster. From deduplication angle, that means that same data can be located at nodes with different versions of deduplication. Windows Server 2016, supports mix mode and provides deduplicated data access while a process of cluster upgrade is ongoing. 

Installation and Setup of Data Deduplication on Windows Server 2016 

In this section, we will bring an overview of best practice installation and set up data deduplication on Windows Server 2016 system. 

As usual, everything starts with a role. 

In server manager, choose, Data deduplication ( Located in the drop-down menu of File and storage services), or with the usage of PowerShell cmdlet (as administrator) :  

Install-WindowsFeature -Name FS-Data-Deduplication 

Enabling And Configuring Data Deduplication on Windows Server 2016 

For Gui systems, deduplication can be enabled from Server manager – File and Storage services – Volumes, selection of volume, then right-click and Configure Data Deduplication. 

After selecting the wanted type of deduplication, it is possible to specify types of files or folders that will not be affected by the process. 

After it is needed to setup schedule, with a click on Set Deduplication Schedule button, which will allow selection of days, weeks, start time, and duration. 

Through PowerShell terminal, deduplication can be enabled with following command ( E: is an example volume letter) : 

Enable-DedupVolume -Name E:  -UsageType HyperV 

Jobs Can be listed with the command : 

Get-DedupSchedule 

And scheduled with following command (example – Garbage collection job) : 

Set-DedupSchedule -Name “OffHoursGC” -Type GarbageCollection -Start 08:00 -DurationHours 5 -Days Sunday -Priority Normal 

These are only basics of deduplication  PowerShell commands, it has a lot more different deduplication -specific cmdlets, and they can be found at the following link : 

 https://docs.microsoft.com/en-us/powershell/module/deduplication/?view=win10-ps 

Protect yourself and your clients against security leaks and get your free trial of the easiest and fastest NTFS Permission Reporter now!

Like this post? Please share to your friends:
  • Дедупликация данных в windows server 2008 r2
  • Дать локального админа пользователю windows 10
  • Девушка бежит по пляжу windows 10
  • Дать все права на папку windows
  • Деактивировать windows 10 установить на другой компьютер