こんばんはヽ(´ー`)ノ
ちょっとハマったことがあったのでメモ代わりに調べたことを残そうと思います。
背景
みんな大好きWindows Server 2012 R2には「重複除去」機能が付いてます。「重複除去」って何?
「重複除去」やら「重複排除」やらと呼ばれていますが、ちょっと賢いストレージ製品だと付いてることが多い機能です。
簡単に言うと、データをブロック単位に分割して"同じデータ"にあたる部分を、
それぞれのデータごとにストレージの記憶領域を使うのではなくて、
そういう"重複"データは、まとめて同じ記憶領域を使うことで、使用記憶領域を減らしましょう、
という、とても頭のいい機能です。
(詳しい仕組みは別のところで見てください!)
単純なデータストレージなら使わない手はないこの機能、
私ももちろん使っていたのですが、、、
どうも私の管理するシステムでは、OS(Windows Server)側で重複除去を仕掛けた状態で冗長構成をとった際に、
ファイルレベルで見ると稼動系と非稼動系でデータのアンマッチ、というかファイルとしてデータ復元できないという状況にハマってしまい、
泣く泣く、OSの重複除去を切るという決断をしました、、、
その際に、単純に重複除去をOFFにするだけではダメだったので、まとめておきます。
重複除去機能OFFの手順
まずは重複除去機能をOFFにします。①重複除去を実施しているWindows Server 2012 R2でPower Shellを起動します。
②ボリュームの重複除去状態を確認します。
Get-DedupVolume -Volume [ドライブレター]
節約された容量や節約率などが確認できます。
一番左の「Enable」がTrueなのが、重複除去機能が有効であることを示しています。
③重複除去をOFFにします。
Disable-DedupVolume -Volume [ドライブレター]
これで重複除去を無効にできます。
「Enable」がFalseになっていることが分かります。
ボリュームのプロパティから確認しても「無効」であることが確認できます。
実はこれで終わらないWindows Server 2012 R2
これで重複除去OFFになったからいいじゃん!と思いますよね。そうなんです、そうなんですが、
既に重複除去されたデータはこのままでは元に戻らないようです。
手動でそれらも重複除去されてないデータに戻してあげる必要があります。
重複除去されたデータを元に戻す
①重複除去を実施していたWindows Server 2012 R2でPower Shellを起動します。②非重複除去コマンドを打ちます。
Start-DedupJob -Volume [ドライブレター] -Type Unoptimization
非重複除去ジョブがキューイングされたのが確認できます。
そのうち実施されます。
③状況を確認したい場合は、下記コマンドを打ちます。
Get-DedupJob
Runningに変わりましたね。
あとは終わるまで待っているだけなのですが、この非重複除去ジョブ、
めっっっっっちゃ時間がかかります。
そりゃもちろんサーバスペックや重複除去されたデータ容量にも依りますが、
かなりの時間を要することを考慮しておいた方がいいです。
ちなみにこの処理中でもドライブ利用やデータ利用に影響はなさそうな感じでした。