Bar

Windows Server 2012 R2 データ重複除去されたHDDを他環境へ引っ越すための方法

Windows Storage Server 2012 R2 Standardのサーバーに接続しているストレージ(HDD)の一部はデータ重複除去(Data Deduplication)を有効にしています。
Hyper-VのVMだと70%以上除去される場合があります。
データ重複除去のセットアップや運用方法のドキュメントはあるものの、データ重複除去されたHDDを他環境へ引っ越すための方法が見つけられなかったので実際に試してみた内容をメモ。

データ重複除去機能

動作および機能は下記URLをご覧ください。
https://technet.microsoft.com/ja-jp/library/hh831602.aspx
セットアップはこちら。
https://technet.microsoft.com/ja-JP/library/hh831434.aspx 

重複除去を無効にしただけではダメだった

訳あってデータ重複除去を止める場合はどうするのか?
試しに、あるHDDのデータ重複除去を無効にし、そのまま他の環境へ引っ越してみました。

クライアントから引っ越し先サーバーの共有フォルダーへアクセスすると、データの閲覧は出来ましたがコピー、削除は出来ませんでした。

ファイルのプロパティを見ると「ディスク上のサイズが0バイト」になっています。

PowerShellを使ってファイルを非最適化する

データ重複除去されたファイルを元に戻すにはどうすればよいのか?

ドキュメントを見つけられなかったためテスト環境で試した限り、データ重複除去されたファイルに対し非最適化処理を行わなければならないようです。

実際にPowerShellを使って非最適化したところ前述の問題(ファイルのコピー、削除)は解決できました。
なお、本作業はファイル破壊の可能性が考えられます。自己責任で作業に当たってください。
#対象ボリューム
$target = "e:"

#データ重複除去を無効にする
Disable-DedupVolume -Volume $target -DataAccess

#非最適化
Start-DedupJob -Volume $target -Type Unoptimization

#ジョブ確認
Get-DedupJob -Type Unoptimization

作業時間

今回行った環境は以下の通り。
  • ストレージ(Eドライブ)
    • WD MyBook 4TB(外付けUSB3.0 4TB)
  • データ サイズ
    • 1.76TB
  • ファイル数
    • 11,250
  • 重複除去状況
    • 除去率 18%
    • 節約量 363GB

00:54に開始したジョブは10時間経過した時点で52%。

リソース モニターをチェックするとディスクI/Oが70-140MBpsで推移しており、全力でストレージにアクセスしています。
特にChunkStore内のファイルへ読み書きしている時のディスクI/Oは非常に高く、Max140MBpsで処理していました。

同日13時過ぎには完了したので処理時間は約12時間といったところです。
処理完了後、Get-DedupVolumeとGet-DedupStatusを確認した結果が以下の通りです。

データ重複除去の非最適化が完了したので引っ越し先のサーバー上にストレージをアタッチ、クライアントから共有フォルダーへアクセスすると問題なくファイルのコピー、削除が出来るようになりました。


以上からデータ重複除去の非最適化が完了するまでの時間は
  1. 重複除去による節約量
  2. ストレージの接続規格
  3. ファイルのサイズ
  4. ファイルの数
によって変動する事が分かります。
※Start-DedupJob コマンドレットに限った話ではないですが

今回のようにデータ重複除去中のストレージを非最適化するシナリオはあまりないと思います。
といっても、予想よりも効果がないため取り止めるケースはなくはないと思います。
その際に本記事が参考になれば幸いです。
データ重複除去 PowerShell 関連サイト