Homelab Server
Mein Homelab im März 2025 - ausgelegt auf:
- ausreichende Performance
- genügeng RAM und Festplattenspeicher
- schnelles Netzwerk
- 2x ASUS NUC NUC13ANB-M
- Intel i7-1360P 13th Generation
- 64 GB RAM
- 256 GB OS SSD mit Windows Server 2025 - Hyper-V
- 1 TB NVMe für S2D (Storage Spaces Direct)
- Thunderbolt Kabel als 20GBit Direktverbindung zwischen den beiden NUCs
- TrueNAS
- Intel Core i5
- 128GB RAM
- 2x 16TB
- 2x 10GBit SFP+
- SMB und ISCSI Freigaben nach Bedarf
- Zyxel XGS1210-12 Switch
- 8x 1 GBit
- 2x 2.5 GBit (Anschluss für die NUCs)
- 2x 10 GBit SFP+ (Anschluss für das NAS)
Gelernte Lektionen
Über das ein oder andere Problem stolpert man dann beim Aufbau eines Testlabs…
- Der erste Versuch lief mit Proxmox - aber auf Proxmox virtualisierte Windows Server können aufgrund eines Treiber Problems nicht S2D Server werden - damit musste ich von Proxmox auf Windows Hyper-V wechseln
- Eine Domäne sollte immer direkt am Anfang vorhanden sein (CNO - Cluster Name Objects) möchte man nicht händisch anlegen und reparieren müssen –> sonst scheitert unter anderem die Live Migration von Failover Cluster aktivierten VMs
- Ein eigenes Netzwerk für Live-Migration und am besten ein eigenes für den Hyper-Converged S2D Storage
- Man kann nie genug Netzwerkbandbreite für den Storage haben (so ein einzelener swappender Server ist schon böse - mehere sind dann richtig übel) –> 20 GBit Storage Netzwerk über Thunderbolt
- IPv6 durch Telekom SpeedPort Router stören DNS und damit die Domain (für Lab Umgebung entweder eigenes Netzwerk oder IPv6 deaktivieren)
Grundsätzliche Einrichtung von Hyper-V
Ich gehe hier nur grob darauf ein - dafür gibt es zu viele Möglichkeiten und Abhängigkeiten von der Hardware.
Der Ablauf ist wie folgt:
- Installation eines Windows Servers mit Domaincontroller und DNS (das ist auch auf einem Hyper-V Server möglich - aber nur für Homelabs, niemals produktiv!)
- Installation von Windows als Core oder Desktopdarstellungsvariante
- Feste IP Adresse setzen
- DNS auf den Domain Controller verweisen lassen
- IPv6 entweder richtig konfigurieren oder auf den Homelab Servern deaktivieren
- Domain Join
- Installieren der notwendigen Serverrollen
- Hyper-V
- File-Services
- Failover-Clustering
- RSAT-Clustering-MGMT
- Einrichtung des Failover Clusters
- Einrichtung des Storage Spaces Direct Clusters
Script zum erstellen der Hyper-V Server
Dieses Skript führt man am Besten von einem domain gejointen Computer aus, der während der Installation der Server nicht selbst neu gestartet wird. Nur in der Region Konfiguration müssen Anpassungen vorgenommen werden.
Wenn man manuell Kontrolle über die Schritte haben möchte führt man diese am Besten manuell aus.
#region Konfiguration
# Konfiguration nur in diesem Bereich
$HypervServers = 'HV-01', 'HV-02' # Namen der Hyper-V Server
$NetworkadapterName = "Ethernet" # Name der primären Netzwerkkarte
$ClusterName = "HV-S2D-Cluster" # aka CNO = Cluster Name Object
$ClusterIP = "192.168.2.10"
$S2DCNO = "S2D-SOFS" # S2D Storage File Server Name
$VirtualHardDiskPath = 'C:\ClusterStorage\CSV\irtual Hard Disks'
$VirtualMachinePath = 'C:\ClusterStorage\CSV\Virtual Machines'
$S2DStoragePoolName = 'S2DStoragePool'
$S2DSize = 500GB # Größe des Cluster Shared Volumes im S2D Pool
#endregion
# Installieren der Hyper-V Rolle
Invoke-Command -ComputerName $HypervServers -ScriptBlock {
Install-WindowsFeature -Name Hyper-V -IncludeAllSubFeature -IncludeManagementTools
# Optional - wenn S2D Storage Spaces Direct verwenden möchte
Install-WindowsFeature -Name 'File-Services', 'Failover-Clustering', 'RSAT-Clustering-MGMT' -IncludeManagementTools
Enable-NetFirewallRule -Group "@FirewallAPI.dll,-28502" # SMB erlauben
}
# Neustarten und auf die Server warten
Restart-Computer -ComputerName $HypervServers -Wait
Invoke-Command -ComputerName $HypervServers -ScriptBlock {
# Neue VMSwitches anlegen
# Extern (LAN Seite)
New-VMSwitch -Name Extern -NetAdapterName $using:NetworkadapterName
#-EnableEmbeddedTeaming $true # Optional, wenn mit SET mehrere Netzwerkkarten gebündelt werden sollen
#-EnableIov $true # Optional für Iov/RDMA Karten
# Intern (isoliertes Netzwerk für Gäste)
New-VMSwitch -Name Intern
}
#region Cluster
# Cluster Einrichtung testen
Invoke-Command -ComputerName $HypervServers[0] -ScriptBlock { Test-Cluster $using:HypervServers }
# ACHTUNG - hier ggf. auf die Ergebnisse reagieren - das erspart viel Ärger
Invoke-Command -ComputerName $HypervServers[0] -ScriptBlock { New-Cluster -Name $using:ClusterName -node $using:HypervServers -staticAddress $using:ClusterIP -NoStorage }
#endregion
#region S2D
# S2D aktivieren
Invoke-Command -ComputerName $HypervServers[0] -ScriptBlock { Enable-ClusterS2D -CacheState Disabled -AutoConfig:0 -Confirm:$false }
# Storage pool erstellen
Invoke-Command -ComputerName $HypervServers[0] -ScriptBlock { New-StoragePool -StorageSubSystemName $using:ClusterName -FriendlyName $using:S2DStoragePoolName -ProvisioningTypeDefault Fixed -ResiliencySettingNameDefault Mirror -PhysicalDisk (Get-StorageSubSystem -Name $using:ClusterName | Get-PhysicalDisk) }
# Virtual disk erstellen
Invoke-Command -ComputerName $HypervServers[0] -ScriptBlock { New-Volume -StoragePoolFriendlyName $using:S2DStoragePoolName -FriendlyName 'CSV' -FileSystem CSVFS_ReFS -Size $using:S2DSize }
# Storage file server erstellen
Invoke-Command -ComputerName $HypervServers[0] -ScriptBlock { New-StorageFileServer -StorageSubSystemName $using:ClusterName -FriendlyName $using:S2DCNO -HostName S2D-SOFS -Protocols SMB }
# Firewall auf allen Cluster Knoten anpassen (Live Migration und Replikation erlauben)
Invoke-Command -ComputerName $HypervServers[0] -ScriptBlock { Get-ClusterNode | ForEach-Object {Invoke-command -computername $_.name -scriptblock {Enable-NetFirewallRule -DisplayGroup 'Hyper-V-Replikat - HTTP'; Enable-NetFirewallRule -DisplayGroup 'Hyper-V-Replikat - HTTPS'; Enable-NetFirewallRule -DisplayGroup 'Hyper-V (MIG-TCP eingehend)'}}}
#endregion
Active Directory Domain Computer Konten für Hyper-V
So sehen die bei mir angelegten Server und CNO im Active Directory aus:
Windows Firewall Einstellungen auf den Hyper-V Servern
So sehen die Windows Firewall Konfigurationen auf den Hyper-V Servern aus:
Failover Cluster
So sieht der Failover Cluster aus:
S2D Cluster Pool
So sieht der S2D Clusterpool aus: