2014/08/20

メモ: Windows Server 2012 R2 のインストール イメージを縮小するもう 1 つの方法

Windows Server 2012 以降は、一部の役割や機能のバイナリ (ペイロード) が削除され、オンデマンド機能化されています。オンデマンド機能のものは、インターネットからダウンロードするか、インストール ソースを指定してインストールします。インストールされていない役割や機能のバイナリは、Uninstall-WindowsFeature 機能名 -Remove で削除してちょっとだけ (数百 MB?)ディスク使用を節約できます。

Windows Server 2012 R2 からでは、オンデマンド機能 (Uninstall-WindowsFeature の -Remove) とは違う方法でディスク使用を節約できるようになったようです。そのための新しいオプション /StartComponentCleanup が DISM コマンドに追加されていました。

DISM /Online /Cleanup-Image /StartComponentCleanup /ResetBase

TechNet Blogs »  Server Core »  Server Core Blog: Minimizing Image Size with Features on Demand and Component Cleanup
[URL] http://blogs.technet.com/b/server_core/archive/2014/01/22/server-core-blog-minimizing-image-size-with-features-on-demand-and-component-cleanup.aspx

WinSxS フォルダーのクリーンアップ
[URL]  http://msdn.microsoft.com/ja-jp/library/dn251565.aspx

知らなかった。 

追記) Windows Server 2012 や Windows 8 にも /StartComponentCleanup ありました。R2 で追加されたのは、、上のブログでは言及されていない /ResetBase オプション。

DISM の新しい /StartCompnentCleanup オプションは、ペイロードを圧縮することでディスク使用を節約してくれるようです。オンデマンド機能化されるわけではないので、これを実行したからって役割や機能の追加時にインストール ソースが求められるようになることはありません。新たに追加された /ResetBase は、更新プログラムによって置き換えられ古くなったコンポーネントのベースを削除してさらにサイズを縮小するみたい。/ResetBase しちゃうと、更新プログラムのアンインストールできなくなるようなのでご注意。

タスク スケジューラにも登録されている (\Microsoft\Windows\Servicing\StartComponentCleanup) ので、手動で実行しなくても時間が経てば勝手にやってくれるみたいなので、仮想マシンのイメージを作成するときとか、Windows 展開サービスでイメージ展開する際のマスター イメージを作るときとかに利用するといいのかな?

オンデマンド機能化でかまわないというなら、Windows PowerShell で...

$targetFeatures = (Get-WindowsFeature | where {$_.InstallState -eq "Available"})
 ForEarch ForEach ($targetFeature in $targetFeatures) {
   UnInstall-WindowsFeature $targetFeature.Name -Remove
}

 出典『Windows Server 2012 R2 テクノロジ入門』 p.73 より (PR)

こちらは Windows Server 2012 R2 と Windows Server 2012 の両方で使えますし、徹底的に削除してくれます。





1 件のコメント:

匿名 さんのコメント...

ForEarch になってますね