“Just enough server”: der “Removed”-Status in Windows 8

[For an ENGLISH version, click this line!]

Microsoft empfiehlt für Windows 8 die Installationsoption Server Core (“GUIs on servers are evil“). Diese Meinung mag man teilen, insbesonders dann, wenn es darum geht, (virtualisierte) Server aufzusetzen, die so spartanisch ausgestattet sein sollen wie möglich.

In Windows 8 haben dism.exe und seine neu eingeführten PowerShell Geschwister einen neuen Installationsstatus (“InstallState”) hinzubekommen, den “Removed“-Status. Entfernte Komponenten werden nicht im Windows “Side-by-Side”-Store unterhalb von “c:\windows\winsxs” zwischengespeichert. Will man eine solche Komponente installieren/aktiveren, muss man eine Installationsquelle angeben.

Zur Sache: hat man Windows Server 8 Core installiert so kann man die aktiven Rollen und Features mit Hilfe der PowerShell überprüfen. Hierzu tippt man zunächst einfach “powershell” in das Kommandofenster ein und ruft anschließend die neuen dism-Cmdlets auf:

Get-WindowsFeature

Inaktive (“Disabled”) Komponenten lassen sich leicht installieren/aktivieren:

Get-WindowsFeature wins | Add-WindowsFeature –r

Will man so viel Festplattenplatz wie irgendwie möglich sparen und damit gleichzeitig den Server härten, so kann man alle nicht verwendeten Komponenten entfernen:

Get-WindowsFeature | ? { $_.InstallState –like “available” } | % { Remove-WindowsFeature $_ .Name -remove }

Benötigt man später eine entfernte Komponente, so muss man zur Installation einen Quellpfad angeben. Dies kann eine DVD/ISO-Datei sein:

gwmi Win32_OperatingSystem | select Caption

Get-Windowsimage -ImagePath “d:\sources\install.wim”

Mount-WindowsImage -ImagePath “d:\sources\install.wim” -Index 4 -Path “c:\mnt” -ReadOnly

Add-WindowsFeature wins -r -s c:\mnt\windows\sxs

Dieses Beispiel unterstellt, dass “D:” das DVD-Laufwerk repräsentiert und das auf dem Server Abbild Nummer 4 installiert wurde. Das gwmi Cmdlet zeigt das installierte Betriebssystem, diesen Wert kann man vergleichen mit der Ausgabe von “Get-WindowsImage” und so den passenden Index ermitteln.

Macht das alles Sinn?

Glücklicherweise kann das jeder Administrator für sich selbst entscheiden. Sehen wir uns doch mal den verringerten Platzbedarf an:
$c = gwmi Win32_LogicalDisk | ? { $_.deviceid -match “c” }
($c.Size – $c.FreeSpace) /1GB
Ermitteln man den Platzbedarf des Startlaufwerks, so verbraucht ein Server Core anfänglich 5,7 GB Festplattenplatz. Entfernt man alle nicht verwendeten Features, reduziert sich dies auf 5 GB. Diese Angaben mögen im Einzelfall variieren, es ist jedoch zu unterstellen, dass die Ersparnis nicht so signifikat ist, als dass man allzu viel Zeit mit dieser Optimierung verbringen sollte. Wesentlich jedoch ist, dass man mit entfernten Komponenten umgehen kann, da sich ein Server Core ansonsten nicht in allen Belangen administrieren lässt.

Standard-Platzbedarf einer Core-Installation

Standard-Platzbedarf einer Core-Installation

Platzbedarf nach Enternen aller ungenutzen Komponenten

Platzbedarf nach Enternen aller ungenutzen Komponenten

Entfernte Komponenten können ohne Quellpfad nicht installiert werden

Entfernte Komponenten können ohne Quellpfad nicht installiert werden

Diese Informationen beziehen sich auf Windows 8 Build 8250, die im Februar 2012 veröffentlichte Vorabversion.
Quellen