Windows10で重複排除(Dedup)を使う(Part1.導入編)
Windows10で重複排除(Dedup)を使う(Part2.設定編)
Windows10で重複排除(Dedup)を使う(Part3.運用編)
前回、Windows10に重複排除機能を追加しましたが、まだ有効になっていないので、有効にする必要があります。
サーバOSであれば、以下のようにサーバマネージャというGUIツールを利用して、ドライブの重複排除の有効化や各種設定、状況確認などができるのですが、Win10にはそのようなものはありませんので、すべてPowerShellから設定、状況確認をする必要があります。




では、コマンドを利用して有効化します。
対象は、ドライブ単位になります。
今回は D:\ドライブをReFS 3.4でフォーマットしていますので、こちらを有効化します。
一旦、以下の条件で、設定してます。
設定ドライブ D:    (ReFS 3.4フォーマット)
使用用途      Defualt(General purpose file Server)
(有効化)
Enable-DedupVolume -Volume “D:” -UsageType Default
(設定確認)
Get-DedupVolume –Volume “D:”
(詳細設定確認)
Get-DedupVolume –Volume “D:” | select *
なお、一部項目はすべて表示されない場合があるので、以下のように入力すると表示されます。(以下はNoCompressionFileTypeを表示する場合)
Get-DedupVolume -Volume “D:” | foreach-object NoCompressionFileType
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79  | 
						PS C:\WINDOWS\system32>Enable-DedupVolume -Volume "D:" -UsageType Default Enabled            UsageType          SavedSpace           SavingsRate          Volume -------            ---------          ----------           -----------          ------ True               Default            0 B                  0 %                  D: PS C:\WINDOWS\system32> get-DedupVolume -Volume "D:" Enabled            UsageType          SavedSpace           SavingsRate          Volume -------            ---------          ----------           -----------          ------ True               Default            0 B                  0 %                  D: PS C:\WINDOWS\system32> get-DedupVolume -Volume "D:" | select * ObjectId                 : \\?\Volume{cec30693-28e9-4130-84fa-386e17a18115}\ UsageType                : Default AutoStart                : False Capacity                 : 536669585408 ChunkIndexCacheVolume    : ChunkRedundancyThreshold : 100 DataAccessEnabled        : True Enabled                  : True ExcludeFileType          : ExcludeFileTypeDefault   : {edb, jrs} ExcludeFolder            : FreeSpace                : 533286092800 IdleTimeoutDefault       : 60 InputOutputScale         : 0 MinimumFileAgeDays       : 3 MinimumFileSize          : 32768 NearInlineMode           : False NoCompress               : False NoCompressionFileType    : {asf, mov, wma, wmv...} OptimizeInUseFiles       : False OptimizePartialFiles     : False SavedSpace               : 0 SavingsRate              : 0 UnoptimizedSize          : 3383492608 UsedSpace                : 3383492608 Verify                   : False Volume                   : D: VolumeId                 : \\?\Volume{cec30693-28e9-4130-84fa-386e17a18115}\ PSComputerName           : CimClass                 : ROOT/Microsoft/Windows/Deduplication:MSFT_DedupVolume CimInstanceProperties    : {AutoStart, Capacity, ChunkIndexCacheVolume, ChunkRedundancyThreshold...} CimSystemProperties      : Microsoft.Management.Infrastructure.CimSystemProperties PS C:\WINDOWS\system32> get-DedupVolume -Volume "D:" | foreach-object NoCompressionFileType asf mov wma wmv ace arj bhx bz2 cab gz gzip hpk lha lzh lzx pak pit rar sea sit tgz z zip zoo  | 
					
これで、D:ドライブが重複排除として設定されましたが、一部設定を変更することもできます。
なお、使用用途については、”Defualt(General purpose file Server)”をいったん設定しましたが、用途は、以下からセレクトできます。
(MSドキュメント)
| 用途 ________  | 設定値 _____  | 特徴 _______________________  | 動作________________________ | 
| 汎用ファイルサーバ | Default | 汎用ファイル サーバーでは、同じファイルの多くのコピーまたはバージョンを複数のユーザーが所有する傾向があるため、データ重複除去の有力候補です。 ソフトウェア開発用の共有は、多くのバイナリがビルドごとに基本的に変更されていないため、データ重複除去の恩恵を受けることになります。 | バックグラウンドの最適化 既定の最適化ポリシー:ファイルの最小経過期間 = 3 日 使用中のファイルの最適化 = なし 部分的なファイルの最適化 = なし  | 
| 仮想デスクトップ インフラストラクチャ (VDI) の展開 | HyperV | 仮想デスクトップ インフラストラクチャ (VDI) の展開: リモート デスクトップ サービスなどの VDI サーバーは、組織がユーザーにデスクトップをプロビジョニングするための軽量のオプションになります。 | バックグラウンドの最適化 既定の最適化ポリシー:ファイルの最小経過期間 = 3 日 使用中のファイルの最適化 = あり 部分的なファイルの最適化 = あり Hyper-V 相互運用のための「内部的」な調整  | 
| 仮想化されたバックアップ アプリケーションなどのバックアップ先 | Backup | バックアップ スナップショット間には大幅な重複があるため、Microsoft Data Protection Manager (DPM) などのバックアップ アプリケーションはデータ重複除去の有力候補です。(WinSV2016から設定可能) | 優先度の最適化 既定の最適化ポリシー:ファイルの最小経過期間 = 0 日 使用中のファイルの最適化 = あり 部分的なファイルの最適化 = なし DPM または DPM に似たソリューションとの相互運用のための「内部的」な調整  | 
変更コマンドは、以下の通りです。(初期の有効化時と同じコマンドです)
一部パラメータは、自動調整されます。
(Default)に再設定する場合
Enable-DedupVolume -Volume “D:” -UsageType Default
(HyperV)に再設定する場合
Enable-DedupVolume -Volume “D:” -UsageType HyperV
(Backup)に再設定する場合
Enable-DedupVolume -Volume “D:” -UsageType Backup
それでは、特定の設定項目を設定してみます。
ここでは、以下の条件で設定変更します(よく設定変更する項目)。
(その他項目は、MSドキュメントを参照ください。)
| 設定 _________________  | パラメータ名 ________________  | Default時 の初期値 _______  | 変更値 ______  | 
| ファイルが最適化のポリシー内であるとみなされる前にファイルが作成されてから経過した日数 | MinimumFileAgeDays | 3 | 0 | 
| ファイルが最適化のポリシー内であるとみなされる必要がある最小ファイル サイズ | MinimumFileSize | 32768 | 32768 | 
| 最適化から除外されるファイルの種類 | ExcludeFileType | なし | .tmp .temp  | 
| 最適化の対象としないフォルダーのパスの指定 | ExcludeFolder | なし | d:\TEMP | 
コマンド例(設定、確認)
Set-DedupVolume -Volume “D:” -MinimumFileAgeDays 0 -MinimumFileSize 32768
get-DedupVolume -Volume “D:” | select MinimumFileAgeDays,MinimumFileSize
Set-DedupVolume -Volume “D:” -ExcludeFileType @(“tmp”,”temp”)
get-DedupVolume -Volume “D:” | select ExcludeFileType
Set-DedupVolume -Volume “D:” -ExcludeFolder @(“\TEMP”)
get-DedupVolume -Volume “D:” | select ExcludeFolder
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112  | 
						PS C:\WINDOWS\system32> get-DedupVolume -Volume "D:" | select * ObjectId                 : \\?\Volume{cec30693-28e9-4130-84fa-386e17a18115}\ UsageType                : Default AutoStart                : False Capacity                 : 536669585408 ChunkIndexCacheVolume    : ChunkRedundancyThreshold : 100 DataAccessEnabled        : True Enabled                  : True ExcludeFileType          : ExcludeFileTypeDefault   : {edb, jrs} ExcludeFolder            : FreeSpace                : 533286092800 IdleTimeoutDefault       : 60 InputOutputScale         : 0 MinimumFileAgeDays       : 3 MinimumFileSize          : 32768 NearInlineMode           : False NoCompress               : False NoCompressionFileType    : {asf, mov, wma, wmv...} OptimizeInUseFiles       : False OptimizePartialFiles     : False SavedSpace               : 0 SavingsRate              : 0 UnoptimizedSize          : 3383492608 UsedSpace                : 3383492608 Verify                   : False Volume                   : D: VolumeId                 : \\?\Volume{cec30693-28e9-4130-84fa-386e17a18115}\ PSComputerName           : CimClass                 : ROOT/Microsoft/Windows/Deduplication:MSFT_DedupVolume CimInstanceProperties    : {AutoStart, Capacity, ChunkIndexCacheVolume, ChunkRedundancyThreshold...} CimSystemProperties      : Microsoft.Management.Infrastructure.CimSystemProperties PS C:\WINDOWS\system32> Set-DedupVolume -Volume "D:" -MinimumFileAgeDays 0 -MinimumFileSize 32768 PS C:\WINDOWS\system32> get-DedupVolume -Volume "D:" | select MinimumFileAgeDays,MinimumFileSize MinimumFileAgeDays MinimumFileSize ------------------ ---------------                  0           32768 PS C:\WINDOWS\system32> Set-DedupVolume -Volume "D:" -ExcludeFileType @("tmp","temp") PS C:\WINDOWS\system32> get-DedupVolume -Volume "D:" | select ExcludeFileType ExcludeFileType --------------- {tmp, temp} PS C:\WINDOWS\system32> get-DedupVolume -Volume "D:" | foreach-object ExcludeFileType tmp temp PS C:\WINDOWS\system32> Set-DedupVolume -Volume "D:" -ExcludeFolder @("\TEMP") PS C:\WINDOWS\system32> get-DedupVolume -Volume "D:" | select ExcludeFolder ExcludeFolder ------------- {\TEMP} PS C:\WINDOWS\system32> get-DedupVolume -Volume "D:" | foreach-object ExcludeFolder \TEMP PS C:\WINDOWS\system32> get-DedupVolume -Volume "D:" | select * ObjectId                 : \\?\Volume{cec30693-28e9-4130-84fa-386e17a18115}\ UsageType                : Default AutoStart                : False Capacity                 : 536669585408 ChunkIndexCacheVolume    : ChunkRedundancyThreshold : 100 DataAccessEnabled        : True Enabled                  : True ExcludeFileType          : {tmp, temp} ExcludeFileTypeDefault   : {edb, jrs} ExcludeFolder            : {\TEMP} FreeSpace                : 533286879232 IdleTimeoutDefault       : 60 InputOutputScale         : 0 MinimumFileAgeDays       : 0 MinimumFileSize          : 32768 NearInlineMode           : False NoCompress               : False NoCompressionFileType    : {asf, mov, wma, wmv...} OptimizeInUseFiles       : False OptimizePartialFiles     : False SavedSpace               : 0 SavingsRate              : 0 UnoptimizedSize          : 3382706176 UsedSpace                : 3382706176 Verify                   : False Volume                   : D: VolumeId                 : \\?\Volume{cec30693-28e9-4130-84fa-386e17a18115}\ PSComputerName           : CimClass                 : ROOT/Microsoft/Windows/Deduplication:MSFT_DedupVolume CimInstanceProperties    : {AutoStart, Capacity, ChunkIndexCacheVolume, ChunkRedundancyThreshold...} CimSystemProperties      : Microsoft.Management.Infrastructure.CimSystemProperties  | 
					
上記のように項目を設定していくことができます。
これで、D:ドライブを重複排除ストレージとして使用できるようになりました。
このままDドライブにファイルを保存すれば、サーバのアイドル時に自動的に重複排除が行われます。
また、スケジュールされた時間帯に、ガーベージコレクションや整合性チェックも行われます。
この時点での状況を確認してみます。
Get-DedupProperties D          Dドライブの利用状況
Get-dedupjob         実行中の重複排除ジョブ
Get-dedupstatus       重複排除状況(ファイル数)
Get-DedupVolume      重複排除状況(重複排除による削減結果)
Get-DedupSchedule    設定されているスケジュール情報
Get-DedupMetadata      メタデータ情報
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65  | 
						PS C:\WINDOWS\system32> Get-DedupProperties D InPolicyFilesCount        : 0 InPolicyFilesSize         : 0 OptimizedFilesCount       : 0 OptimizedFilesSavingsRate : 0 OptimizedFilesSize        : 0 SavingsRate               : 0 SavingsSize               : 0 UnoptimizedSize           : 3586297692 PSComputerName            : PS C:\WINDOWS\system32> Get-DedupJob PS C:\WINDOWS\system32> Get-DedupStatus FreeSpace    SavedSpace   OptimizedFiles     InPolicyFiles      Volume ---------    ----------   --------------     -------------      ------ 496.66 GB    0 B          0                  0                  D: PS C:\WINDOWS\system32> Get-DedupVolume Enabled            UsageType          SavedSpace           SavingsRate          Volume -------            ---------          ----------           -----------          ------ True               Default            0 B                  0 %                  D: PS C:\WINDOWS\system32> Get-DedupSchedule Enabled    Type               StartTime              Days               Name -------    ----               ---------              ----               ---- True       Optimization                                                 BackgroundOptimization True       GarbageCollection  2:45                   Saturday           WeeklyGarbageCollection True       Scrubbing          3:45                   Saturday           WeeklyScrubbing PS C:\WINDOWS\system32> Get-DedupMetadata Volume                         : D: VolumeId                       : \\?\Volume{cec30693-28e9-4130-84fa-386e17a18115}\ StoreId                        : {00000000-0000-0000-0000-000000000000} DataChunkCount                 : 0 DataContainerCount             : 0 DataChunkAverageSize           : 0 B DataChunkMedianSize            : 0 B DataStoreUncompactedFreespace  : 0 B StreamMapChunkCount            : 0 StreamMapContainerCount        : 0 StreamMapAverageDataChunkCount : StreamMapMedianDataChunkCount  : StreamMapMaxDataChunkCount     : HotspotChunkCount              : 0 HotspotContainerCount          : 0 HotspotMedianReferenceCount    : CorruptionLogEntryCount        : 0 TotalChunkStoreSize            : 0 B  | 
					
次回は、運用編として、強制的に重複排除を実行するコマンド等、
特定のシナリオに従って、どのように動作するかを見てみたいと思います。