2014年11月6日木曜日

VHDファイルの圧縮

Windows VistaなどWindows 7より前のOSにディスク管理ツールでは、NTFSボリュームの真ん中付近に配置されている管理領域(MFT:Master File Table)を移動できないため、元のディスク・サイズの半分以下には縮小できない。

だがWindows 7/Windows Server 2008 R2では移動できるので、Windows 7以降のOSでボリューム縮小を実行した方がよい。

MFTの断片化はパフォーマンスの悪化に繋がるためNTFSは連続した領域をMFT専用として予約している。
この領域のことをMFT領域と呼び、アクセスプライオリティ上ユーザーファイルがMFT領域に書き込まれないようになっている。
しかし、この規則は絶対的ではなく、ファイルシステム容量が不足してくるとMFT領域にもユーザーファイルを保存する様になる。
MFT領域としてラベルされる領域のサイズはWindowsのバージョンによって異なる。
WindowsXP以前まではファイルシステムの12.5%が予約されていたが、WindowsVistaからは200MBをMFT領域として扱う。



●空き領域をゼロで埋めるツール
precompact.exe(which was part of a Virtual Server R2 Service Pack 2)
http://vpc.essjae.com/precompact.zip
以下のサイトで紹介されている。
Hyper-V How To: Shrink a VHD File
http://blogs.technet.com/b/tonyso/archive/2008/10/09/hyper-v-how-to-shrink-a-vhd-file.aspx

SDelete(Sysinternals)
http://technet.microsoft.com/ja-jp/sysinternals/bb897443.aspx
Microsoft公認?のSysinternals製ツール
仮想マシン用のコマンドラインオプションが変更にになっているので、ツールを実行する前に/?で確認した方がいい。

cipher /w(OS標準搭載)
OS標準搭載のcipher /wでも空き領域へのゼロ埋めができるという情報があるが、お勧めできない。
/wオプションは完全消去オプションであるため、空き領域に対して「0x00→0xff→ランダムデータ」の3回書き込む。
そのため、処理が遅く、最後はランダムデータであるため、本当に代用できるのか疑問が残る。
http://www.atmarkit.co.jp/fwin2k/win2ktips/273diskwipe/diskwipe.html




●vhdを圧縮する方法
Hyper-Vマネージャーのディスクの最適化

DISKPRT
SELECT VDISK FILE=”C:VHDOS.VHD”
COMPACT VDISK
DETAIL VDISK

Powershell 3.0(Optimize-VHD)
C:\VMs下のサブフォルダも含むすべての.vhd(.vhdx)ファイルを最適化することを実現します。
$vmsRoot = "C:\VMs"
Get-ChildItem -File -Path $vmsRoot -Filter *.vhd* -Recurse | Optimize-VHD  -Mode quick
用語:’Optimize-VHD’は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。
名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。

Add-WindowsFeature Hyper-V-PowerShell
Optimize-VHD xxxxxxxx.vhd -Mode Prezeroed




●VHD圧縮方法(情報元)
SE の雑記:仮想ハードディスクの拡張と縮小
http://engineermemo.wordpress.com/2010/03/21/%E4%BB%AE%E6%83%B3%E3%83%8F%E3%83%BC%E3%83%89%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AF%E3%81%AE%E6%8B%A1%E5%BC%B5%E3%81%A8%E7%B8%AE%E5%B0%8F/
[Windows] Hyper-Vの仮想ディスクの最適化でサイズが圧縮されない場合の対処
http://blog.dreamhive.co.jp/mkoba/?p=4033
Powershell 3.0でHyper-VのVHDファイルを最適化する
http://viewse.blogspot.jp/2012/12/powershell-30hyper-vvhd.html
仮想ディスク(VHD)のディスク・サイズを縮小する
http://www.atmarkit.co.jp/fwin2k/win2ktips/1390shrvhd/shrvhd.html

0 件のコメント:

コメントを投稿