Teil 5 von 6
Teil 5: SAN Storage anbinden
Externes SAN Storage in einen Hyper-V Failover Cluster einbinden. iSCSI, Fibre Channel, SAS.
Externer SAN-Storage wird als Cluster Shared Volume (CSV) in den Cluster eingebunden. Mit Multipath I/O (MPIO) werden mehrere redundante Pfade zum Storage-System genutzt. Fällt ein Pfad aus, übernimmt automatisch ein anderer ohne Unterbrechung des Betriebs.
Multipath I/O (MPIO)
MPIO auf allen Nodes, egal ob iSCSI, Fibre Channel oder SAS. Ohne MPIO kein redundanter Pfad.
Invoke-Command -ComputerName $servers -ScriptBlock { Install-WindowsFeature -Name Multipath-IO}MPIO Policy konfigurieren
Die MPIO-Einstellungen werden auf das verwendete Storage-System abgestimmt. Die Werte im ANPASSEN-Block sind für Dell PowerStore optimiert. Bei anderen Herstellern bitte die Empfehlungen aus der jeweiligen Herstellerdokumentation verwenden.
# ===================== ANPASSEN =====================
$PathVerificationPeriod = 30 # Sekunden zwischen Pfadprüfungen$PDORemovePeriod = 20 # Sekunden bis ein ausgefallener Pfad entfernt wird$RetryCount = 3 # Anzahl Wiederholungsversuche bei Pfadfehler$RetryInterval = 3 # Sekunden zwischen Wiederholungsversuchen$PathRecoveryInterval = 10 # Sekunden zwischen Pfad-Wiederherstellungsversuchen$DiskTimeout = 30 # Sekunden bis Disk-Timeout
# =================== NICHT ANPASSEN =================
Invoke-Command -ComputerName $servers -ScriptBlock { Set-MPIOSetting -NewPathVerificationState Enabled Set-MPIOSetting -NewPathVerificationPeriod $using:PathVerificationPeriod Set-MPIOSetting -NewPDORemovePeriod $using:PDORemovePeriod Set-MPIOSetting -NewRetryCount $using:RetryCount Set-MPIOSetting -NewRetryInterval $using:RetryInterval Set-MPIOSetting -CustomPathRecovery Enabled Set-MPIOSetting -NewPathRecoveryInterval $using:PathRecoveryInterval Set-MPIOSetting -NewDiskTimeout $using:DiskTimeout}Nach der MPIO-Konfiguration ist ein Neustart aller Nodes erforderlich, damit die Einstellungen wirksam werden.
Restart-Computer $servers -Protocol WSMan -Wait -For PowerShell -ForceLoad Balancing konfigurieren
Round Robin als Load-Balancing-Policy: I/O wird gleichmäßig auf alle aktiven Pfade aufgeteilt. Auch hier bitte die Empfehlungen des Storage-Herstellers beachten.
Invoke-Command -ComputerName $servers -ScriptBlock { Set-MSDSMGlobalDefaultLoadBalancePolicy -Policy RR}iSCSI
iSCSI Netzwerkadapter konfigurieren
Die dedizierten iSCSI-Adapter werden für den Storage-Traffic optimiert: IPv6 deaktivieren, Jumbo Frames aktivieren und das jeweilige Storage-VLAN setzen. Für jeden Adapter wird ein separates VLAN genutzt, um die Pfade zu trennen.
Jumbo Frames erfordern konsistente Konfiguration
Jumbo Frames (MTU 9014) müssen auf allen Beteiligten identisch konfiguriert sein. Andernfalls kann es zu sporadischen Verbindungsabbrüchen und schwer diagnostizierbaren Performance-Problemen führen.
Prüfen und konfigurieren:
- iSCSI-Adapter der Nodes (dieser Schritt)
- Storage-Ports des SAN-Systems (Herstellerdokumentation)
- Switch-Ports auf allen beteiligten Switches (MTU ≥ 9216 für Overhead)
# ===================== ANPASSEN =====================
$iSCSIAdapter1 = "NIC in Slot 4 Port 4-1" # Erster iSCSI-Adapter (Get-NetAdapter zur Ermittlung)$iSCSIAdapter2 = "NIC in Slot 10 Port 4-1" # Zweiter iSCSI-Adapter$iSCSIVLAN1 = "10" # VLAN für Adapter 1$iSCSIVLAN2 = "11" # VLAN für Adapter 2
# =================== NICHT ANPASSEN =================
Invoke-Command -ComputerName $servers -ScriptBlock {
# IPv6 deaktivieren Get-NetAdapter -Name $using:iSCSIAdapter1 | Disable-NetAdapterBinding -ComponentID "ms_tcpip6" Get-NetAdapter -Name $using:iSCSIAdapter2 | Disable-NetAdapterBinding -ComponentID "ms_tcpip6"
# Jumbo Frames (9014 Byte) Set-NetAdapterAdvancedProperty $using:iSCSIAdapter1 -RegistryKeyword "*JumboPacket" -RegistryValue 9014 Set-NetAdapterAdvancedProperty $using:iSCSIAdapter2 -RegistryKeyword "*JumboPacket" -RegistryValue 9014
# VLAN setzen Set-NetAdapterAdvancedProperty $using:iSCSIAdapter1 -RegistryKeyword VlanID -RegistryValue $using:iSCSIVLAN1 Set-NetAdapterAdvancedProperty $using:iSCSIAdapter2 -RegistryKeyword VlanID -RegistryValue $using:iSCSIVLAN2}MSiSCSI Service aktivieren
Der MSiSCSI-Dienst muss auf allen Nodes aktiv und dauerhaft als automatisch startend konfiguriert sein. Anschließend wird MPIO für iSCSI aktiviert und alle verfügbaren Pfade automatisch beansprucht.
Invoke-Command -ComputerName $servers -ScriptBlock {
Start-Service -Name MSiSCSI Set-Service -Name MSiSCSI -StartupType Automatic
# MPIO für iSCSI aktivieren Enable-MSDSMAutomaticClaim -BusType iSCSI
# Alle verfügbaren Pfade beanspruchen mpclaim.exe -r -i -a ""}iSCSI Initiator IQN ermitteln
Bevor Targets verbunden werden können, muss der IQN (Format: iqn.1991-05.com.microsoft:hostname) jedes Nodes im Storage-System registriert und dem Host zugewiesen werden.
Invoke-Command -ComputerName $servers -ScriptBlock { Get-InitiatorPort | Select-Object NodeAddress} | Select-Object PSComputerName, NodeAddress | Sort-Object PSComputerName | Format-Table -AutoSizeiSCSI Targets verbinden
Alle iSCSI-Target-Portale des Storage-Systems werden auf allen Nodes registriert. Anschließend werden alle verfügbaren Targets persistend und mit Multipath verbunden.
# ===================== ANPASSEN =====================
$iSCSITargets = "198.51.100.10","203.0.113.10","198.51.100.20","203.0.113.20" # IP-Adressen aller iSCSI-Portale
# =================== NICHT ANPASSEN =================
Invoke-Command -ComputerName $servers -ScriptBlock { foreach ($Target in $using:iSCSITargets) { New-IscsiTargetPortal -TargetPortalAddress $Target } Start-Sleep -Seconds 5 Get-IscsiTarget | Connect-IscsiTarget -IsPersistent $true -IsMultipathEnabled $true}Verbindung testen
Vor der Disk-Konfiguration sicherstellen, dass alle Nodes alle iSCSI-Portale auf Port 3260 erreichen. Alle Verbindungen müssen TcpTestSucceeded: True zeigen.
$Results = Invoke-Command -ComputerName $servers -ScriptBlock { foreach ($Target in $using:iSCSITargets) { Test-NetConnection -ComputerName $Target -Port 3260 }}$Results | Select-Object PSComputerName, ComputerName, RemotePort, TcpTestSucceeded | Sort-Object PSComputerName, ComputerName | Format-Table -AutoSizeSchlägt eine Verbindung fehl, Netzwerkrouting, VLAN-Konfiguration und das Storage-System prüfen.
Disks partitionieren und als CSV einbinden
Hinweis
Dieser Schritt wird nur auf einem einzigen Node ausgeführt. Der Failover Cluster stellt die Disks anschließend automatisch allen anderen Nodes bereit.
Alle vom Storage-System präsentierten LUNs werden initialisiert, mit NTFS formatiert und als Cluster Shared Volumes (CSVs) eingebunden.
# Nur auf einem Node ausführenGet-Disk | Where-Object PartitionStyle -eq RAW | ForEach-Object { Set-Disk -Number $_.Number -IsReadOnly $false Initialize-Disk -Number $_.Number -PartitionStyle GPT
$partition = New-Partition -DiskNumber $_.Number -UseMaximumSize Format-Volume -Partition $partition -FileSystem NTFS -Confirm:$false}
# Alle verfügbaren Cluster-Disks als CSV einbindenGet-ClusterAvailableDisk | Add-ClusterSharedVolumeDie CSVs sind anschließend auf allen Nodes unter C:\ClusterStorage\ verfügbar und bereit für die VM-Ablage.
Fibre Channel
In Arbeit
Dieser Abschnitt befindet sich noch in Bearbeitung und wird in Kürze ergänzt.
SAS (Serial Attached SCSI)
In Arbeit
Dieser Abschnitt befindet sich noch in Bearbeitung und wird in Kürze ergänzt.