海婚活サークル


by pachifu

[Vol.07]“オンデマンド機能”の正体見たり!

ベータ版で変更された
インストールオプション
 昨年の記事、「徹底調査 Windows Server 8新機能ピックアップ“10”」(2011年10月17日)で紹介したように、Windows Server "8"のプレベータ版、「Windows Server Developer Preview」のときには、インストールオプションに「Features On Demand」というものが追加されていました。Windows Server "8" Betaではこのオプションはなくなり、「Server Coreインストール」と「GUI使用サーバー」の2つのオプションに変更されています(画面1)。
画面1:Windows Server "8" Betaのインストールオプションは、昨年9月のDeveloper Previewから変更されました
 Windows Server 2008 R2以前の「フルインストール」と「Server Coreインストール」の2つの選択肢とも呼び方が異なる点、そして既定の選択が「Server Coreインストール」になっている点に注目してください。実は、この変更、Windows Server "8"の役割と機能の管理に関する重要な変更になっています。そして、それこそが「Features On Demand」、日本語だと「オンデマンド機能」なのです。
・TechNetライブラリ > Windows Server 8 Beta > Windows Serverインストールオプション
[URL]technet.microsoft.com/ja-jp/library/hh831786.aspx
 これまでの「フルインストール」と「Server Core インストール」から名前が変わっただけと思われるかもしれませんが、実はまったく違います。Windows Server 2008 R2以前は、「フルインストール」と「Server Core インストール」は別物で、インストール時に選択して以降は、再インストールする以外に変更できませんでした。
 Windows Server "8"では、「GUI使用サーバー」(フルインストール相当)と「Server Coreインストール」を“行ったり来たり”できるようになります。そのため、選択を誤って「Server Coreインストール」を選択したとしても、あとから変更できるので何の問題もありません。そして、「Server Coreインストール」のほうは、インストール直後の状態で一部の機能が「Features On Demand」な状態になっています。
 インストールオプションの変更点と「Features On Demand」について理解するために、「Server Coreインストール」と「GUI使用サーバー」を実際に行き来してみましょう。
「Server Coreインストール」から
「GUI使用サーバー」へ
 次の画面(画面2)は、Windows Server "8" Betaを「Server Coreインストール」でインストールし、ネットワークとドメイン構成、コンピューター名を設定しただけのサーバー「WIN8SV01」のローカルコンソールです。Windows Server 2008 R2の「Server Coreインストール」と同様に、コマンドプロンプトウィンドウが1つあるだけの簡素なUI(GUI)です。ネットワークやドメイン構成、コンピューター名など、サーバーの初期設定は、従来と同じくテキストメニュー形式の「サーバー構成ツール」(Sconfig.exe)を使用します。
画面2:「Server Coreインストール」でインストールしたWindows Server "8"のコンソール。コマンドプロンプトで「Sconfig」を実行したところ
 「Sconfig」のメニューの中に「12)グラフィカルユーザーインターフェイス(GUI)の復元」という、わかりやすい項目がありますが、今回はこのメニューを使用せず、リモートの「サーバーマネージャー」から操作することにします。
 なお、リモートの「サーバーマネージャー」とは、フルインストールのWindows Server "8" Beta環境のもの、またはWindows 8 Consumer Previewにインストールした「Remote Server Administration Tools(RSAT:リモートサーバー管理ツール)」の「Server Manager」です。
・Remote Server Administration Tools for Windows 8 Consumer Preview(英語言語パックの追加で日本語環境にもインストール可能、ただしUIは英語)
[URL]www.microsoft.com/download/en/details.aspx?id=28972
 Windows Server "8" Betaの「サーバーマネージャー」は、複数台のWindows Server "8" Betaの管理を前提とした作りとなっており、管理対象のサーバーを追加することで、リモートから役割や機能を追加、削除したり、構成したりすることができます(画面3)。リモートの管理性が強化されたため、「Server Coreインストール」のサーバーの管理にも不自由しないようになっています。
画面3:Windows Server "8" Betaでは、複数のリモートサーバーに対して役割や機能を簡単に追加、削除できます
 では、「GUI使用サーバー」としてインストールしたリモートサーバーの「サーバーマネージャー」に、「Server Coreインストール」のサーバー「WIN8SV01」を追加し、「役割と機能の追加」ウィザードを実行して、サーバープールから「WIN8SV01」を選択します。
 「サーバーの役割」はスキップして、「機能」のページに進み、機能の一覧の「ユーザーインターフェイスとインフラストラクチャ」の下にある「グラフィカル管理ツールとインフラストラクチャ」と「サーバーグラフィックシェル」を選択します(画面4)。「サーバーグラフィックシェル」を選択すれば、「グラフィカル管理ツールとインフラストラクチャ」は自動的に選択されます。
画面4:「Server Coreインストール」のサーバーにGUIをインストールします
 「確認」ページで「必要に応じて対象サーバーを自動的に再起動する」をチェックし、「インストール」ボタンをクリックします。これで、「Server Coreインストール」のサーバーにGUIのコンポーネントがインストールされ、再起動後、GUIが利用可能になります(画面5、画面6)。
画面5:「Server Coreインストール」のサーバーにGUIを追加する場合、コンピューターの再起動が要求されます
画面6:コンピューターの再起動後、サーバー「WIN8SV01」にログオン(サインイン)すると、デスクトップとスタート画面を持つコンソールが表示され、「サーバーマネージャー」が自動的に起動します
再び、「Server Coreインストール」へ!
 「Server Coreインストール」のサーバーが「GUI使用サーバー」に変身しました。これをもう一度、「Server Coreインストール」の状態に戻してみたいと思います(画面7)。この操作は、リモートの「GUI使用サーバー」の「サーバーマネージャー」からでも、いまや「GUI使用サーバー」になったローカルの「サーバーマネージャー」のどちらからでも行えます。
画面7:「GUI使用サーバー」に変身したばかりですが、もう一度、GUIを削除して「Server Coreインストール」の状態に戻します
 「役割と機能の削除」ウィザードを実行し、対象サーバーとして「WIN8SV01」を選択して、機能の一覧の「ユーザーインターフェイスとインフラストラクチャ」から「グラフィカル管理ツールとインフラストラクチャ」と「サーバーグラフィックシェル」の選択を解除して削除を実行します(画面8)。
画面8:コンピューターの再起動後にログオン(サインイン)すると、デスクトップとスタート画面は消えてなくなりました(背景が黒になった理由は不明です)
 ところで、「Server Coreインストール」を「GUI使用サーバー」に変身させた状態は「GUI使用サーバー」としてインストールしたサーバーとまったく同じではありません。また、「GUI使用サーバー」に変身したサーバーから、再度GUIを削除した状態も、最初の「Server Coreインストール」直後の状態とは異なります。ここで、いよいよ「Features On Demand(オンデマンド機能)」の話が登場します。
Features On Demandは
バイナリがオンデマンド
 「Server Coreインストール」のサーバーで、「DISM /Online /Get-Features」を実行すると、「有効」「無効」のほかに、「ペイロードの削除によって無効」という新しい状態が追加されていることに気が付くでしょう。Windows PowerShell の「Get-WindowsFeature」では「Removed」と表示されます。
 Windows Server 2008以降では、役割や機能を有効化する際に、インストールメディアの挿入を求められません。これは、役割や機能の追加に必要なソースファイル(バイナリ)がローカルディスクにすべて用意されているからです。Windows Server 2008 R2以前の「Server Coreインストール」の場合も、Server Coreでサポートされる役割や機能のソースファイルを保持しています。
 Windows Server "8" Betaの「GUI使用サーバー」も同様にソースファイルを保持していますが、Windows Server "8"では新たにソースファイルを削除できるようになります。「Server Coreインストール」では、主要な役割を除いて、多くの機能のソースファイルが削除された状態でセットアップされます。そして、ソースファイルを持たない役割や機能は「ペイロードの削除によって無効」という状態で示されるのです(画面9)。
画面9:機能の状態が「ペイロードの削除によって無効」なものは、バイナリがローカルに存在しません
 例えば、「Server Coreインストール」の場合、 Hyper-Vの役割(Microsoft-Hyper-V およびMicrosoft-Hyper-V-Management-Clients)は、「無効」の状態であり、ソースファイルが存在します。そのため、次のいずれかのコマンドラインまたはPowerShellスクリプトをローカルで実行して有効化できます。
[Cmd.exeで実行する場合]
DISM /Online /Enable-Feature /FeatureName:Microsoft-Hyper-V /FeatureName:Microsoft-Hyper-V-Management-Clients
[PowerShell.exeで実行する場合]
Install-WindowsFeature Microsoft-Hyper-V,Microsoft-Hyper-V-Management-Clients
 では、「ペイロードの削除によって無効」な機能はどうかというと、条件によってDISMコマンドやInstall-WindowsFeatureコマンドが成功したり、失敗したりします。その条件とは、インターネット(Windows Update)に接続できるかどうか、あるいはソースファイルの明示的な指定です。
 ローカルにソースファイルが存在しない場合は、DISMコマンドまたはInstall-WindowsFeatureコマンドレットのSourceオプションを指定することで、別の場所のソースファイルを使用して役割や機能を有効化できます。ソースファイルを指定しなければ、Windows Updateからダウンロードしてインストールしてくれます(ダウンロード時間に注意)。つまり、インターネットと通信ができない環境の場合は、ソースファイルの場所を指定しないかぎり、「ペイロードの削除によって無効」な機能のインストールは失敗するということです(画面10)。
画面10:ネットワークを切断した状態で「Server Coreインストール」のサーバーから「TelnetServer」(ペイロードの削除によって無効な状態)を追加しようとしたところ。ソースファイルをダウンロードできずに失敗します
 リモートの「GUI使用サーバー」から役割や機能のインストールを実行した場合、「GUI使用サーバー」のローカルのソースファイルが使用されるように想像するかもしれませんが、そうはなりません。「確認」ページの下にある「代替ソースパスの指定」で対象サーバーからアクセス可能なソースファイルの場所を指定しないかぎり、Windows Updateからダウンロードしようとします。
 ソースファイルを指定する場合は、インストールメディアの「Sources¥Install.wim」をマウント(DISMコマンドでマウント)したドライブの「Windows¥WinSxS」を指定します。「GUI使用サーバー」のローカルの「Windows¥WinSxS」も使用できますが、いずれの場合も対象サーバーからネットワーク経由でアクセスできるように構成する必要があります。
 Windows Server "8" Beta のGUIコンポーネント(ServerCore-FullServer、Server-Gui-Shell、Server-Gui-Mgmt)は、「ペイロードの削除によって無効」となっているため、Sconfigの「12)グラフィカルユーザーインターフェイス(GUI)の復元」(前出の画面2)はインターネット接続がないと失敗します。「%Windir%¥System32¥ja-jp¥sconfig.vbs」の中身を見ると、次のコマンドを実行しようとします。「/Source」の指定がありません。
DISM /Online /Enable-Feature /FeatureName:ServerCore-FullServer /FeatureName:Server-Gui-Shell /FeatureName:Server-Gui-Mgmt
仮想ハードディスクは
Windows Updateできない
 Windows Server "8" Betaの「サーバーマネージャー」では、オンラインのサーバーだけでなく、オフラインの仮想ハードディスク(VHDやVHDX)に対して役割や機能をインストールすることもできます。Windows Server "8" Betaがインストールされた仮想マシンの仮想ハードディスクやVHDブートに構成したWindows Server "8" Betaの仮想ハードディスクです。
 仮想ハードディスクはオフラインである必要があり、マウントするサーバーと仮想ハードディスクを指定します。また、「Features On Demand(オンデマンド機能)」な状態の役割や機能を追加する場合は、ソースファイルの指定が必要です(画面11)。なぜなら、仮想ハードディスク内のWindows Server "8" Betaは、マウントしてもオフラインのままなので、自らWindows Updateでコンポーネントをダウンロードすることができないからです(画面12)。
画面11:「サーバーマネージャー」では、「確認」ページの「代替ソースパスの指定」でソースファイルの場所を指定できます
画面12:ソースファイルが存在せずに失敗した、仮想ハードディスクへの役割や機能のインストール
バイナリを削除して
オンデマンド機能化するには?
 GUIを有効化したあと、もう一度、GUIシェルを削除したサーバーで「DISM /Online /Get-Features」を実行してみると、「ServerCore-FullServer」「Server-Gui-Shell」「Server-Gui-Mgmt」がの状態が「ペイロードの削除によって無効」ではなく、「無効」になっています。ここが、インストール直後の「Server Coreインストール」との違うところです。ディスク(Cドライブ)の使用状況を見れば、違うことは一目瞭然です。
 ソースファイルが削除された状態にまで戻すには、次のPowerShellコマンドレットを実行します。
UnInstall-WindowsFeature Server-Gui-Shell,Server-Gui-Mgmt-Infra -Remove
 GUIを無効にして、ソースファイルを削除すると、約2.2GBのディスク領域を節約できます。これで「Server Coreインストール」直後の状態にほぼ戻ったことになります(画面13)。
画面13:GUIシェルのバイナリを削除して、ようやく最初の「Server Coreインストール」と同等の状態に戻ります
 ソースファイルの削除は、「GUI使用サーバー」からでもOKです。GUIを維持しながら、不要なソースファイルを削除することで、どんどんOSのイメージサイズを削減できるというわけです。サーバーの初期設定をGUIで完了させたあと、GUIを削除して運用を開始するということもできます。
 例えば、Telnetサーバーのソースファイルを削除するには、次のPowerShellコマンドレットを実行します(画面14)。なお、「有効」になっている役割や機能のバイナリを削除することはできません。
UnInstall-WindowsFeature Telnet-Server -Remove
画面14:「GUI使用サーバー」から、使用する予定のないTelnetサーバーのバイナリを削除してみた
 削除可能なバイナリは、「Get-WindowsFeature」コマンドレットの結果の「Install State」列が「Available」になっているものです。1つ1つ確認して削除するのは、結構たいへんな作業です。
 そこで、PowerShellスクリプトで一括削除できないかどうか考えてみました(画面15)。次のようなスクリプトでいかがでしょう(一部の最上位コンポーネントの削除でエラーが発生することもありますが、サブコンポーネントのほうで削除されるので問題ありません)。
$targetFeatures = (Get-WindowsFeature | where {$_.InstallState -eq "Available"})
ForEarch ($targetFeature in $targetFeatures) {
UnInstall-WindowsFeature $targetFeature.Name -Remove
}
画面15:PowerShellの簡単なスクリプトで、不要なバイナリを一括削除できます
(山市良)
[PR]
by pachifu | 2012-04-17 13:28