iSCSI Storage an einen Windows Hyper-V Server hängen

In meinem heutigen Artikel möchte ich mich einmal damit beschäftigen wie man iSCSI Storage an einen Windows Hyper-V Server hängen kann. Das übliche Szenario für ein solches Unterfangen ist, dass man in einem Hyper-V Cluster ein LUN auf einem SAN oder NAS per iSCSI an einen der Knoten anbindet. Grundsätzlich ist dies über den iSCSI-Initiator relativ einfach. Beim Windows Hyper-V Server kann man das aber leider nicht mit diesem kleinen hilfreichen Programm machen, da ein Windows Hyper-V Server nun mal keine GUI hat, d.h. wir müssen das in diesem Fall über PowerShell bewerkstelligen. Auch das ist nicht so kompliziert wie es sich anhört wenn man weiß was zu tun ist.

Als erstes müssen wir mal checken ob der iSCSI-Dienst unter dem jeweiligen Server überhaupt ausgeführt wird. Nur dann ist es überhaupt möglich eine Verbindung mit einem iSCSI-Target aufzubauen. Standardmäßig ist dieser Dienst auf einem Windows Server deaktiviert.

Der Befehl

Get-Service -Name MSiSCSI

gibt über den Zustand des Dienstes Auskunft. In meinem Beispiel läuft der Dienst noch nicht:

iscsi-1

Das ändern wir mit den folgenden beiden Befehlen

Start-Service MSiSCSI
Set-Service -Name MSiSCSI -StartupType Automatic

Die erste Zeile startet den Service einfach und die zweite Zeile setzt den Starttyp auf „Automatic“ damit der Dienst auch nach einem Neustart des Hyper-V Servers wieder gestartet wird und die auf dem Server ausgeführten Virtuellen Maschinen auch ihre Festplatten wiederfinden. Bei meiner Maschine sieht das dann so aus

iscsi-2

Über Get-Service (siehe oben) können wir uns dann noch einmal anschauen ob der Dienst jetzt auch wirklich läuft. In meinem Fall tut er das.

iscsi-3

Als nächstes müssen wir ein so genanntes iSCSI-Target Portal anlegen. Das ist sozusagen die Adresse des SANs im Netzwerk. Auf einem iSCSI-Target Portal können mehr als ein LUN zur Verfügung gestellt werden. Mein SAN heißt sehr fantasielos einfach san.geislers.net, d.h. ich trage diese Adresse ein.

New-iSCSITargetPortal -TargetPortalAddress san.geislers.net

Kann sich der Server mit dem iSCSI-Target Portal verbinden, so sieht man die folgende Ausgabe

iscsi-4

Was noch ganz wichtig ist damit dieser Schritt überhaupt funktioniert ist, dass der zugreifende Server (also in unserem Fall hyperv010.geislers.net) auch im iSCSI-Target registriert ist. Ist der Server nicht registiert, so wird ihm der Zugriff auf das iSCSI-Target verwehrt. Zur Registrierung benötigt man den IQN des Servers, in meinem Beispiel ist das IQN:iqn.1991-05.com.microsoft:hyperv010.geislers.net.

Über den Befehl

Get-iSCSITarget

Werden alle verfügbaren iSCSI-Targets angezeigt. Auf meinem Server sieht das wie folgt aus

iscsi-5

Wir wollen im Beispiel den Storage für unseren Hyper-V Knoten hyperv010.geislers.net anhängen, das können wir über den Befehl

Connect-iSCSITarget -NodeAddress iqn.2004-04.com.qnap:ts-1263u-rp:iscsi.hyperv010.fa650f

erreichen. Auch wieder auf meiner Maschine gibt es die folgende Rückmeldung

iscsi-6

Der Wert true bei der Eigenschaft IsConnected lässt es schon vermuten – wir haben unser iSCSI-Target jetzt an den Server angehängt. Das können wir auch mit dem Befehl

Get-iSCSIConnection

überprüfen, was die folgende Ausgabe ergibt

iscsi-7

Offensichtlich verfügen wir nun über eine Verbindung zum iSCSI-Target. Wenn man sich die Ausgabe des Connect-iSCSITarget Befehls weiter oben noch einmal genauer ansieht erkennt man dass momentan die Eigenschaft IsPersistent auf False steht. Das ist natürlich nicht optimal, da wir die Verbindung zum iSCSI-Target ja auch gerne behalten würden wenn der Server mal durchgebootet wird, das können wir darüber erreichen dass wir die Session registrieren.

Get-iSCSISession | Register-iSCSISession

iscsi-8

Der Befehl selbst gibt keine Rückmeldung (zumindest kein Fehler – auch das ist eine Rückmeldung ;-)), mit dem Befehl

Get-iSCSISession

kann man sich Infos zur Session anzeigen lassen. Und nun wird bei IsPersistent auch true angezeigt. Damit sind wir hier soweit fertig, müssen jetzt aber natürlich noch die Disk einrichten und formatieren. Momentan ist ja lediglich ein komplett leeres LUN angehängt. Um weiterarbeiten zu können benötigen wir die Disk-Nummer der neu angehängten iSCSI-Disk. Diese können wir mit dem folgenden Befehl ermitteln:

Get-Disk | Where-Object BusType -eq "iSCSI"

iscsi-9

Im Screenshot kann man sehen, dass die Disk-Nummer 2 ist. Das nutzen wir jetzt dazu um die Disk Online zu schalten zu initialisieren und zu Formatieren. Hierzu hängen wir ein paar PowerShell Befehle hintereinander.

Initialize-Disk -Number 2 -PartitionStyle GPT -PassThru | ´ 
   New-Partition -AssignDriveLetter -UseMaximumSize | ´
   Format-Volume

Ganz wichtig ist hier, dass man auch wirklich die richtige Disk-Nummer angibt, weil man ansonsten möglicherweise eine falsche Disk neu partitioniert und formatiert. Da PowerShell ein Profi-Tool ist wird vor so einer Aktion auch nicht groß nachgefragt sondern das wird einfach gemacht.

iscsi-10

Ob die neue Festplatte im Server nun auch wirklich zur Verfügung steht können wir über den Befehl

Get-Partition

herausfinden.

iscsi-11

Hier wird angezeigt dass die neue Platte unter dem Laufwerksbuchstaben D zur Verfügung steht. Das können wir auch leicht überprüfen indem wir auf die Platte wechseln und uns einmal das Verzeichnis auflisten lassen.

iscsi-12

Wie erwartet ist in diesem Verzeichnis natürlich noch nichts drin.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

%d Bloggern gefällt das: