トップ回答者
重複除去実行後にブロックストレージの容量が減らない

質問
-
Winodows2016サーバーのブロックストレージドライブに対して重複除去を設定して実行しました。
Windowsサーバー上からはドライブ容量の削減が確認できていますが、ブロックストレージで確認すると重複除去前よりも容量が増えて(チャンクストアにデータがコピーされたために増えたものと思われます)数日たっても減りません。
ブロックストレージはunmapをサポートしており、Windows2016サーバーもunmapが有効になっています。
ちなみに、Windowsサーバーでドライブの最適化(defrag /L)を行っても変化ありません。また重複除去前のファイルを削除するとその分の容量はブロックトレージの割り当て済み容量から削減されています。
Windowsサーバーのドライブの未使用領域(重複除去で削除された領域)に対してunmapコマンドを発行して、ブロックストレージのLUNから割り当て済み容量を開放するにはどうすればよいかご教授いただけますでしょうか。
- 編集済み SMRis 2020年1月9日 7:29
回答
-
チャブーンです。
この件ですが、先のMS資料をお伝えしたのは、こちらの認識では「ファイルストレージのディスク」と「VSSのディスク」は別にする、がベストプラクティスだと思っていて、それで試してどうですか?というところでした。
おっしゃる既存の問題はとくに公開されてもいないようで、もしかしたら何らかの不具合があるのかもしれません。まずは切り分けで、「適用されていない更新プログラム」があればすべて適用して確認し、修正されない場合、有償サポートに直接問い合わせることが適切だと思います。(裏でごにょごにょやってキレイに直す、という方法はないと思います)
どうしても無償で何とかしたい、のなら英語版フォーラムに質問するしかないと思いますが、情報の少なさから難しいと思います。
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
- 回答としてマーク Haruka6002Microsoft contingent staff, Owner 2020年3月19日 1:45
すべての返信
-
いろいろ試していて、ブロックストレージの割り当て済み容量を減らすことができる事象を見つけました。
対象のWindows2016サーバーの該当ドライブにVSSも設定していました。
VSSの設定を無効にして、Windowsサーバーでドライブの最適化を行ったところ(PowershellからOptimize -retrim)でブロックストレージ側の容量が減らせました。Windows2016サーバーの仕様として、VSSが有効のドライブに対しては、重複除去時に削減領域に対してブロックストレージへのunmapが発行されないということがありますでしょうか?
よろしくお願いします。
-
チャブーンです。
この件ですが、データ重複除去(dedup)とVSSを両方使う場合、そのままだと問題が起こるようです。設定変更する必要があるようですので、したの情報を確認してみてください。
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
-
チャブーンさん、いつもいろいろ参考にさせていただいています。ご回答ありがとうございます。
頂いた情報ですが、データ重複除去(dedup)とVSSを両方使う場合に起こるVSSのスナップショットが消えてしまう件についての回避策のように見えます。
ちなみに、こちらの情報ある回避策の一つ、VSSのボリュームを別に割り当てする構成はとっておりました。
VSS領域はかなり空きがあり、スナップショットも削除されることは今の所ありません。
現状、重複除去で削除された未使用領域がおそらくブロックストレージに認識されてない状態になっており
(重複除去の一連のタスクやDefrag /Lのretrim処理で発行されるべきunmapコマンドががなぜかブロックストレージにつたわらない。)
それを解決できる方法についての情報があればご教授いただけませんでしょうか。よろしくお願いします。
-
チャブーンです。
この件ですが、先のMS資料をお伝えしたのは、こちらの認識では「ファイルストレージのディスク」と「VSSのディスク」は別にする、がベストプラクティスだと思っていて、それで試してどうですか?というところでした。
おっしゃる既存の問題はとくに公開されてもいないようで、もしかしたら何らかの不具合があるのかもしれません。まずは切り分けで、「適用されていない更新プログラム」があればすべて適用して確認し、修正されない場合、有償サポートに直接問い合わせることが適切だと思います。(裏でごにょごにょやってキレイに直す、という方法はないと思います)
どうしても無償で何とかしたい、のなら英語版フォーラムに質問するしかないと思いますが、情報の少なさから難しいと思います。
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
- 回答としてマーク Haruka6002Microsoft contingent staff, Owner 2020年3月19日 1:45
-
チャブーンさん、ご回答ありがとうございます。
>「ファイルストレージのディスク」と「VSSのディスク」は別にする、がベストプラクティスだと思っていて、それで試してどうですか?
はい、 >ちなみに、こちらの情報ある回避策の一つ、VSSのボリュームを別に割り当てする構成はとっておりました。
この方法がそれに該当するものと思っておりました。具体的にはブロックストレージ側で通常のファイル共有(重複除去のチャンクストレージも含む)のLUNとは別にVSS用のLUNを作成して割当している構成で使っていました。>どうしても無償で何とかしたい、のなら英語版フォーラムに質問するしかないと思いますが、情報の少なさから難しいと思います。
早速、同じチームのメンバーが英語で探してくれたところ、今回のケースに該当するものが見つかりました。こちらに記載されているように、重複除去を設定する前にVSSを動かしていたので、古いVSSのバージョン履歴が残っていることが原因のようです。https://serverfault.com/questions/472671/mixing-volume-shadow-copy-and-data-deduplication-in-windows-server
古いVSSのバージョン履歴を削除して、最適化(retrim)を実行してみようと思います。
追記:
古いVSSのバージョン履歴を削除して、最適化(retrim)を実行してみたところ、ストレージの容量が回復していました。
解決の目処が立ちました。ありがとうございました。
-
その後、マイクロソフトサポートの方のブログ等でVSSの仕様について確認しましたので、備忘録的に記載します。
VSSの仕様として、
「スナップショットが作成された時点のボリューム上のデータをビットマップで監視する」そうなので、
「スナップショット実行後に削除された場合でも、ビットマップ上ではデータが存在していたブロックとして認識されている」
ため、ブロック・ストレージ上でのLUNでは空き領域として認識されません。
重複除去では、ファイルをチャンクストアにコピーして実体は削除しリンクだけ残すので、VSSのスナップショット後に重複除去されたファイルの領域は、データが存在したブロックとして認識されたままとなります。
ただ、削除されたファイルの領域はWindows上では空き領域として認識されているはずなので、そこに新たなファイルを書き込むことはできるはずです。その場合、LUN上ではデータが上書きされ、Windows上ではVSSによって差分となる元データ(重複除去で削除されたデータ)がVSSのDiffAreaに書き込まれるという動作になると思われます。
よってLUNの空き容量が少なく見えていたとしても、Windows上で空き領域として認識されている容量分は、新たなファイルの領域として使用できるはずです。ただ、VSSのDiffAreaがその分増えていき、枯渇するとVSSの古い世代から削除されていくことになるんでしょう。
なので、Windowsサーバー上で空き容量がある限り、VSSの古いデータ世代が確保できない可能性があるものの、ブロックストレージのLUNの容量が枯渇するということはなさそうです。(実運用としてはVSSの保管期間を短くする必要はあるかもしれません。)
しかし、私が使用しているようなストレージ自体のレプリケーション機能を使っている場合は、重複除去によるブロックの変更分もストレージのレプリケーションのスナップショットとしてもれなく作成されるため、ファイル作成時と重複除去時で最大ファイルサイズの2倍の容量がスナップショット(=レプリケーションデータ)として作成されてしまいます。今回の件で、VSSと重複除去を同時に利用する場合の運用時の注意点として
「VSSを設定する前に、初回の重複除去は完全に終わらせておく」
ということがわかりました。(もう遅いのですが)
あわせて、
「重複除去のフルガベージコレクションは実行されないように設定しておく」
ことも、ポイントです。
以下参考にさせていただいた記事のリンクです。
https://social.technet.microsoft.com/Forums/ja-JP/74a4ec71-2c1d-4c2b-a9d6-ec18060edbe1/1250812522125171254012512-12471125151248912454-124671250012540
https://docs.microsoft.com/ja-jp/archive/blogs/askcorejp/volsnap-33
https://www.haruru29.net/blog/volsnap-25-error-improvement/- 回答の候補に設定 flingminMicrosoft contingent staff, Moderator 2020年2月14日 7:07