Delen via


Opslagruimten Direct implementeren op Windows Server

Dit artikel bevat stapsgewijze instructies voor het implementeren van Storage Spaces Direct- op Windows Server. Zie Over Azure Local als u Opslagruimten Direct wilt implementeren als onderdeel van Azure Local.

Tip

Wilt u een hypergeconvergeerde infrastructuur verkrijgen? Microsoft raadt u aan een gevalideerde hardware/software azure Local-oplossing van onze partners te kopen. Deze oplossingen zijn ontworpen, samengesteld en gevalideerd op basis van onze referentiearchitectuur om compatibiliteit en betrouwbaarheid te garanderen, zodat u snel aan de slag kunt. Als u een catalogus met hardware-/softwareoplossingen wilt gebruiken die met Azure Local werken, raadpleegt u de Lokale catalogus van Azure.

Tip

U kunt Hyper-V virtuele machines, waaronder in Microsoft Azure, gebruiken om Opslagruimten Direct te evalueren zonder hardware. Mogelijk wilt u ook de handige scripts voor snelle labimplementatie van Windows Server bekijken, die we gebruiken voor trainingsdoeleinden.

Voordat u begint

Bekijk de Hardwarevereisten voor Opslagruimten Direct om vertrouwd te raken met de algemene aanpak en belangrijke opmerkingen die zijn gekoppeld aan een aantal stappen.

Verzamel de volgende informatie:

  • Implementatieoptie: Opslagruimten Direct ondersteunt twee implementatieopties: hypergeconvergeerde en geconvergeerde, ook wel bekend als niet-geaggregeerd. Maak uzelf vertrouwd met de voordelen van elk om te bepalen welke optie geschikt is voor u. Stap 1-3 in dit artikel is van toepassing op beide implementatieopties. Stap 4 is alleen nodig voor geconvergeerde implementatie.

  • Servernamen: vertrouwd raken met het naamgevingsbeleid van uw organisatie voor computers, bestanden, paden en andere resources. U moet verschillende servers inrichten, elk met unieke namen.

  • Domeinnaam: vertrouwd raken met het beleid van uw organisatie voor domeinnamen en domeindeelname. U voegt de servers toe aan uw domein en u moet de domeinnaam opgeven.

  • RDMA-netwerken: Er zijn twee typen RDMA-protocollen: iWarp en RoCE. Noteer welk type uw netwerkadapters gebruiken, en als dat RoCE is, noteer dan ook de versie (v1 of v2). Let ook op het model van uw top-of-rack switch voor RoCE.

  • VLAN-id: Noteer de VLAN-id die wordt gebruikt voor de netwerkaansluitingen voor OS-beheer op de servers, indien van toepassing. U moet deze informatie van uw netwerkbeheerder kunnen verkrijgen.

Stap 1: Windows Server implementeren

Stap 1.1: Het besturingssysteem installeren

Installeer eerst Windows Server op elke server in het cluster. Voor Storage Spaces Direct is Windows Server Datacenter Edition vereist. U kunt de Server Core-installatieoptie of Server met Bureaubladervaring gebruiken.

Wanneer u Windows Server installeert met behulp van de installatiewizard, kunt u kiezen tussen Windows Server (verwijzend naar Server Core) en Windows Server (Server met Bureaubladervaring). Dit is het equivalent van de optie Volledige installatie die beschikbaar is in Windows Server 2012 R2. Als u niet kiest, krijgt u de Server Core-installatieoptie. Zie Server Core installerenvoor meer informatie.

Stap 1.2: Verbinding maken met de servers

Deze handleiding is gericht op de Server Core-installatieoptie en het extern implementeren en beheren van een afzonderlijk beheersysteem. Het beheersysteem moet het volgende hebben:

  • Een versie van Windows Server of Windows 10 die ten minste net zo nieuw is als de servers die worden beheerd, met de nieuwste updates.
  • Netwerkverbinding met de servers die het beheert.
  • Toegevoegd aan hetzelfde domein of een volledig vertrouwd domein.
  • RSAT-modules (Remote Server Administration Tools) en PowerShell-modules voor Hyper-V en Failover Clustering. RSAT-hulpprogramma's en PowerShell-modules zijn beschikbaar op Windows Server en kunnen worden geïnstalleerd zonder andere functies te installeren. U kunt ook de Remote Server Administration Tools installeren op een Windows 10-beheercomputer.

Installeer op het beheersysteem de beheertools voor failoverclusters en de Hyper-V-beheerhulpprogramma's. U kunt dit doen via Serverbeheer met behulp van de wizard Functies en onderdelen toevoegen . Selecteer op de pagina Onderdelende optie Externe-serverbeheerprogramma's en selecteer vervolgens de hulpprogramma's die u wilt installeren.

Voer de PowerShell-sessie in en gebruik de servernaam of het IP-adres van het knooppunt waarmee u verbinding wilt maken. U wordt gevraagd om een wachtwoord nadat u deze opdracht hebt uitgevoerd. Voer het beheerderswachtwoord in dat u hebt opgegeven bij het instellen van Windows.

Enter-PSSession -ComputerName <myComputerName> -Credential LocalHost\Administrator

Hier volgt een voorbeeld van het doen van hetzelfde op een manier die nuttiger is in scripts:

$myServer1 = "myServer-1"
$user = "$myServer1\Administrator"

Enter-PSSession -ComputerName $myServer1 -Credential $user

Tip

Als u extern implementeert vanuit een beheersysteem, krijgt u mogelijk een foutmelding zoals WinRM kan de aanvraag niet verwerken. Als u deze fout wilt oplossen, gebruikt u Windows PowerShell om elke server toe te voegen aan de lijst met vertrouwde hosts op uw beheercomputer:

Set-Item WSMAN:\Localhost\Client\TrustedHosts -Value Server01 -Force

De lijst met vertrouwde hosts ondersteunt wildcards, zoals Server*.

  • Als u de lijst met vertrouwde hosts wilt weergeven, typt u Get-Item WSMAN:\Localhost\Client\TrustedHosts.
  • Als u de lijst wilt leegmaken, typt u Clear-Item WSMAN:\Localhost\Client\TrustedHost.

Stap 1.3: Lid worden van het domein en domeinaccounts toevoegen

Als u Opslagruimten Direct wilt beheren, moet u de servers toevoegen aan een domein en een Active Directory Domain Services-domeinaccount gebruiken dat zich in de groep Administrators op elke server bevindt.

Open vanuit het beheersysteem een PowerShell-console met beheerdersbevoegdheden. Gebruik Enter-PSSession om verbinding te maken met elke server en voer de volgende cmdlet uit, waarbij u uw eigen computernaam, domeinnaam en domeinreferenties vervangt:

Add-Computer -NewName "Server01" -DomainName "contoso.com" -Credential "CONTOSO\User" -Restart -Force

Als uw opslagbeheerdersaccount geen lid is van de groep Domeinadministrators, voegt u uw opslagbeheerdersaccount toe aan de lokale groep Administrators op elk knooppunt of voegt u de groep toe die u voor opslagbeheerders gebruikt. U kunt de volgende opdracht gebruiken of een PowerShell-script maken om deze stap uit te voeren. Zie PowerShell gebruiken om domeingebruikers toe te voegen aan een lokale groep voor meer informatie.

Net localgroup Administrators <Domain\Account> /add

Stap 1.4: Functies en onderdelen installeren

De volgende stap is het installeren van serverfuncties op elke server via Windows Admin Center, Serverbeheer of PowerShell. Dit zijn de rollen die moeten worden geïnstalleerd:

  • Failover-clusterbeheer
  • Hyper-V
  • Bestandsserver (als u bestandsshares wilt hosten, zoals voor een geconvergeerde implementatie)
  • Data-Center-Bridging (als u RoCEv2 gebruikt in plaats van iWARP-netwerkadapters)
  • RSAT-Clustering-PowerShell
  • Hyper-V-PowerShell

Als u rollen wilt installeren via PowerShell, gebruikt u de cmdlet Install-WindowsFeature . U kunt deze op één server als volgt gebruiken:

Install-WindowsFeature -Name "Hyper-V", "Failover-Clustering", "Data-Center-Bridging", "RSAT-Clustering-PowerShell", "Hyper-V-PowerShell", "FS-FileServer"

Als u de opdracht op alle servers in het cluster tegelijk wilt uitvoeren, voert u dit script uit waarmee de lijst met variabelen aan het begin van het script wordt gewijzigd om aan uw omgeving te voldoen.

# Fill in these variables with your values
$ServerList = "Server01", "Server02", "Server03", "Server04"
$FeatureList = "Hyper-V", "Failover-Clustering", "Data-Center-Bridging", "RSAT-Clustering-PowerShell", "Hyper-V-PowerShell", "FS-FileServer"

# This part runs the Install-WindowsFeature cmdlet on all servers in $ServerList, passing the list of features into the script block with the "Using" scope modifier so you don't have to hard-code them here.
Invoke-Command ($ServerList) {
    Install-WindowsFeature -Name $Using:Featurelist
}

Stap 2: het netwerk configureren

Als u Opslagruimten Direct in virtuele machines implementeert, kunt u deze sectie overslaan.

Opslagruimten Direct vereist netwerken met hoge bandbreedte en lage latentie tussen servers in het cluster. U hebt ten minste 10 GbE-netwerken nodig en RDMA (Remote Direct Memory Access) wordt aanbevolen. U kunt iWARP of RoCE gebruiken zolang het het Windows Server-logo heeft dat overeenkomt met de versie van uw besturingssysteem, maar iWARP is eenvoudiger in te stellen.

Important

Afhankelijk van uw netwerkapparatuur, en met name met RoCE v2, moet u mogelijk de top-of-rack-switch configureren. De juiste switchconfiguratie is belangrijk om de betrouwbaarheid en prestaties van Opslagruimten Direct te garanderen.

Windows Server 2016 heeft switch-embedded teaming (SET) in de virtuele switch Hyper-V geïntroduceerd. Met deze functie kunt u dezelfde fysieke NIC-poorten (Network Interface Card) gebruiken voor al het netwerkverkeer terwijl u RDMA gebruikt, waardoor het aantal vereiste fysieke NIC-poorten wordt verminderd. Gebruik switch-geïntegreerde teaming voor Storage Spaces Direct.

  • Overgeschakeld: U moet netwerkswitches juist configureren om de bandbreedte en het netwerktype aan te kunnen. Als u RDMA gebruikt waarmee het RoCE-protocol wordt geïmplementeerd, is de configuratie van het netwerkapparaat en de switch nog belangrijker.
  • Schakelloos: U kunt knooppunten verbinden met behulp van directe verbindingen, waardoor het gebruik van een switch wordt vermeden. Elk knooppunt moet een directe verbinding hebben met elk ander knooppunt van het cluster.

Zie de Windows Server 2016 en 2019 RDMA Deployment Guidevoor instructies voor het instellen van netwerken voor Opslagruimten Direct.

Stap 3: Opslagruimten Direct configureren

Voer de volgende stappen uit op een beheersysteem waarop dezelfde versie wordt uitgevoerd als de servers die u configureert. Voer deze stappen niet op afstand uit met behulp van een PowerShell-sessie. Voer ze in plaats daarvan uit in een lokale PowerShell-sessie op het beheersysteem, met beheerdersmachtigingen.

Stap 3.1: Schijven opschonen

Voordat u Opslagruimten Direct inschakelt, moet u ervoor zorgen dat uw schijven leeg zijn en geen oude partities of andere gegevens bevatten. Voer het volgende script uit, waarbij u uw computernamen vervangt om oude partities of andere gegevens te verwijderen.

Important

Met dit script worden alle gegevens op andere stations dan het opstartstation van het besturingssysteem definitief verwijderd.

# Fill in these variables with your values
$ServerList = "Server01", "Server02", "Server03", "Server04"

foreach ($server in $serverlist) {
    Invoke-Command ($server) {
        # Check for the Azure Temporary Storage volume
        $azTempVolume = Get-Volume -FriendlyName "Temporary Storage" -ErrorAction SilentlyContinue
        If ($azTempVolume) {
            $azTempDrive = (Get-Partition -DriveLetter $azTempVolume.DriveLetter).DiskNumber
        }

        # Clear and reset the disks
        $disks = Get-Disk | Where-Object {
            ($_.Number -ne $null -and $_.Number -ne $azTempDrive -and !$_.IsBoot -and !$_.IsSystem -and $_.PartitionStyle -ne "RAW")
        }
        $disks | ft Number,FriendlyName,OperationalStatus
        If ($disks) {
            Write-Host "This action will permanently remove any data on any drives other than the operating system boot drive!`nReset disks? (Y/N)"
            $response = read-host
            if ( $response.ToLower() -ne "y" ) { exit }

            $disks | % {
            $_ | Set-Disk -isoffline:$false
            $_ | Set-Disk -isreadonly:$false
            $_ | Clear-Disk -RemoveData -RemoveOEM -Confirm:$false -verbose
            $_ | Set-Disk -isreadonly:$true
            $_ | Set-Disk -isoffline:$true
        }

        #Get-PhysicalDisk | Reset-PhysicalDisk


        }
        Get-Disk | Where-Object {
            ($_.Number -ne $null -and $_.Number -ne $azTempDrive -and !$_.IsBoot -and !$_.IsSystem -and $_.PartitionStyle -eq "RAW")
        } | Group -NoElement -Property FriendlyName
    }
}

De uitvoer ziet eruit zoals in het onderstaande voorbeeld, waarbij Count het aantal schijven van elk model op elke server is.

Count Name                          PSComputerName
----- ----                          --------------
4     ATA SSDSC2BA800G4n            Server01
10    ATA ST4000NM0033              Server01
4     ATA SSDSC2BA800G4n            Server02
10    ATA ST4000NM0033              Server02
4     ATA SSDSC2BA800G4n            Server03
10    ATA ST4000NM0033              Server03
4     ATA SSDSC2BA800G4n            Server04
10    ATA ST4000NM0033              Server04

Stap 3.2: Het cluster valideren

In deze stap voert u het clustervalidatieprogramma uit om ervoor te zorgen dat de serverknooppunten correct zijn geconfigureerd om een cluster te maken met Opslagruimten Direct. Wanneer u clustervalidatie (Test-Cluster) uitvoert voordat u het cluster maakt, worden er tests uitgevoerd om te controleren of de configuratie geschikt is om te functioneren als failovercluster. In het -Include volgende voorbeeld wordt de parameter rechtstreeks gebruikt en worden vervolgens de specifieke testcategorieën opgegeven. Deze aanpak zorgt ervoor dat de specifieke tests van Opslagruimten Direct worden opgenomen in de validatie.

Gebruik de volgende PowerShell-opdracht om een set servers te valideren voor gebruik als een Storage Spaces Direct-cluster.

Test-Cluster -Node <MachineName1, MachineName2, MachineName3, MachineName4> -Include "Storage Spaces Direct", "Inventory", "Network", "System Configuration"

Stap 3.3: Het cluster maken

In deze stap maakt u een cluster met de knooppunten die u in de vorige stap hebt gevalideerd voor het maken van het cluster met behulp van de volgende PowerShell-cmdlet.

Wanneer u het cluster maakt, krijgt u een waarschuwing met de melding 'Er zijn problemen opgetreden tijdens het maken van de geclusterde rol waardoor deze mogelijk niet kan worden gestart. Bekijk het onderstaande rapportbestand voor meer informatie.' U kunt deze waarschuwing veilig negeren. Dit komt doordat er geen schijven beschikbaar zijn voor het clusterquorum. Configureer een bestandsdeelgetuige of cloudgetuige na het maken van het cluster.

Note

Als de servers statische IP-adressen gebruiken, wijzigt u de volgende opdracht om het statische IP-adres weer te geven door de volgende parameter toe te voegen en het IP-adres op te geven: -StaticAddress <X.X.X.X> Vervang in de volgende opdracht de ClusterName tijdelijke aanduiding door een NetBIOS-naam die uniek is en 15 tekens of minder.

New-Cluster -Name <ClusterName> -Node <MachineName1,MachineName2,MachineName3,MachineName4> -NoStorage

Nadat u het cluster hebt gemaakt, kan het even duren voordat de DNS-vermelding (Domain Name System) voor de clusternaam wordt gerepliceerd. De tijd is afhankelijk van de omgevings- en DNS-replicatieconfiguratie. Als het oplossen van het cluster niet lukt, kunt u de computernaam van een knooppunt gebruiken dat een actief lid is van het cluster in plaats van de clusternaam.

Stap 3.4: Een clusterwitness configureren

Configureer een witness voor het cluster, zodat clusters met drie of meer servers bestand zijn tegen twee servers die mislukken of offline zijn. Voor een implementatie met twee servers is een clusterwitness vereist; als een van beide servers offline gaat, is de andere server niet meer beschikbaar. Met deze systemen kunt u een bestandsshare als witness gebruiken of cloudwitness gebruiken. Zie Een quorumwitness implementerenvoor meer informatie.

Stap 3.5: Opslagruimten Direct inschakelen

Nadat u het cluster hebt gemaakt, gebruikt u de Enable-ClusterStorageSpacesDirect PowerShell-cmdlet. Met deze cmdlet wordt het opslagsysteem in de modus Opslagruimten Direct geplaatst en worden automatisch de volgende taken uitgevoerd:

  • Hiermee maakt u een pool: hiermee maakt u één grote pool met een naam als 'S2D op Cluster1'.

  • Hiermee configureert u de Opslagruimten Direct-caches: als er meer dan één type media (station) beschikbaar is voor gebruik met Opslagruimten Direct, worden de snelste typen in de meeste gevallen gebruikt als cacheapparaten voor lezen en schrijven.

  • Hiermee maakt u twee lagen als standaardlagen: de ene laag heet 'Capaciteit' en de andere laag heet 'Prestaties'. De cmdlet analyseert de apparaten en configureert elke laag met de combinatie van apparaattypen en tolerantie.

Open vanuit het beheersysteem een PowerShell-venster met verhoogde bevoegdheid en voer de volgende opdracht uit. De clusternaam is de naam van het cluster dat u in de vorige stappen hebt gemaakt. Als u deze opdracht lokaal uitvoert op een van de knooppunten, hebt u de -CimSession parameter niet nodig.

Enable-ClusterStorageSpacesDirect -CimSession <ClusterName>

Met deze opdracht schakelt u Opslagruimten Direct in. U kunt ervoor kiezen om de naam van het knooppunt te gebruiken in plaats van de clusternaam. Het gebruik van de naam van het knooppunt is mogelijk betrouwbaarder omdat er vertragingen in dns-replicatie kunnen optreden met de zojuist gemaakte clusternaam.

Wanneer deze opdracht is voltooid, wat enkele minuten kan duren, is het systeem klaar om volumes te maken.

Stap 3.6: Volumes maken

Gebruik de New-Volume cmdlet voor de snelste en meest eenvoudige ervaring. Met deze enkele cmdlet maakt u automatisch de virtuele schijf, partities en formatteert deze. Het volume wordt gemaakt met een overeenkomende naam en voegt het toe aan gedeelde clustervolumes, allemaal in één eenvoudige stap.

Zie Volumes maken in Opslagruimten Direct voor meer informatie.

Stap 3.7: De CSV-cache optioneel inschakelen

U kunt de CSV-cache (Cluster Shared Volume) inschakelen met behulp van het geheugen van het systeem (RAM) als een cache op blokniveau voor leesbewerkingen die niet worden opgeslagen in Windows CacheBeheer. Deze functie kan de prestaties voor toepassingen zoals Hyper-V verbeteren. De CSV-cache verbetert de prestaties van leesaanvragen en is ook handig voor Scale-Out bestandsserverscenario's.

Als u de CSV-cache inschakelt, vermindert u de hoeveelheid geheugen die beschikbaar is voor het uitvoeren van VM's op een hypergeconvergeerd cluster, zodat u de opslagprestaties moet verdelen met geheugen dat beschikbaar is voor VHD's.

Als u de grootte van de CSV-cache wilt instellen, opent u een PowerShell-sessie op het beheersysteem met een account met beheerdersmachtigingen voor het opslagcluster. Gebruik het volgende script en wijzig de $ClusterName variabelen $CSVCacheSize indien van toepassing (in dit voorbeeld wordt een CSV-cache van 2 GB per server ingesteld):

$ClusterName = "StorageSpacesDirect1"
$CSVCacheSize = 2048 #Size in MB

Write-Output "Setting the CSV cache..."
(Get-Cluster $ClusterName).BlockCacheSize = $CSVCacheSize

$CSVCurrentCacheSize = (Get-Cluster $ClusterName).BlockCacheSize
Write-Output "$ClusterName CSV cache size: $CSVCurrentCacheSize MB"

Voor meer informatie, zie Het gebruik van de CSV-leescache in het geheugen.

Stap 3.8: Virtuele machines implementeren voor hypergeconvergeerde implementaties

Als u een hypergeconvergeerd cluster implementeert, is de laatste stap het inrichten van virtuele machines in het Opslagruimten Direct-cluster.

Sla de bestanden van de virtuele machine op in de CSV-naamruimte van het systeem (bijvoorbeeld: c:\ClusterStorage\Volume1), net zoals geclusterde VM's op failoverclusters.

U kunt in-boxhulpmiddelen of andere hulpmiddelen gebruiken om de opslagcapaciteit en virtuele machines te beheren, zoals System Center Virtual Machine Manager.

Stap 4: Scale-Out bestandsserver implementeren voor geconvergeerde oplossingen

Als u een geconvergeerde oplossing implementeert, is de volgende stap het maken van een Scale-Out bestandsserverexemplaar en het instellen van de bestandssharing.

Tip

Als u een hypergeconvergeerd cluster implementeert, bent u klaar en hebt u deze sectie niet nodig.

Selecteer een van de volgende tabbladen voor instructies over het maken van een Scale-Out bestandsserverfunctie met failoverclusterbeheer of PowerShell.

Een Scale-Out bestandsserverfunctie maken met failoverclusterbeheer:

  1. Selecteer in Failoverclusterbeheer het cluster, ga naar Rollen en selecteer vervolgens Rol configureren....
    De Hoge Beschikbaarheidswizard verschijnt.

  2. Op de Select Role pagina, selecteer Bestandsserver.

  3. Selecteer op de pagina bestandsservertypeScale-Out bestandsserver voor toepassingsgegevens.

  4. Typ op de pagina clienttoegangspunt een naam voor de Scale-Out bestandsserver.

  5. Controleer of de rol succesvol is ingesteld door naar Rollen te gaan en te bevestigen dat de kolom StatusRunning weergeeft naast de geclusterde bestandsserverrol die u hebt gemaakt, zoals wordt weergegeven in afbeelding 1.

    Schermopname van Failover Cluster Manager met de Scale-Out bestandsserver

    Afbeelding 1 Failoverclusterbeheer met de Scale-Out bestandsserver met de status Actief

Note

Nadat u de geclusterde rol hebt gemaakt, kunnen vertragingen in netwerkpropagatie voorkomen dat u enkele minuten of mogelijk langer bestandsdeling kunt maken.

Bestandsdeling(s) aanmaken

Nadat u uw virtuele schijven hebt gemaakt en deze hebt toegevoegd aan CSV's, maakt u er bestandsshares op. Maak één bestandsshare per CSV per virtuele schijf. System Center Virtual Machine Manager (VMM) is de eenvoudigste manier om deze taak uit te voeren, omdat deze machtigingen voor u afhandelt. Als u deze niet in uw omgeving hebt, kunt u Windows PowerShell gebruiken om de implementatie gedeeltelijk te automatiseren.

Gebruik de scripts in deze sectie om het proces van het maken van groepen en shares gedeeltelijk te automatiseren. De scripts worden geschreven voor Hyper-V workloads. Als u andere workloads implementeert, moet u mogelijk de instellingen wijzigen of extra stappen uitvoeren nadat u de shares hebt gemaakt. Als u bijvoorbeeld Microsoft SQL Server gebruikt, moet u volledige controle over de share en het bestandssysteem verlenen aan het SQL Server-serviceaccount.

Note

U moet het groepslidmaatschap bijwerken wanneer u clusterknooppunten toevoegt, tenzij u System Center Virtual Machine Manager gebruikt om uw shares te maken.

Voer de volgende stappen uit om bestandsshares te maken met behulp van PowerShell-scripts:

  1. Vouw elk van de volgende secties uit en sla de inhoud van elk bestand op als een afzonderlijk .ps1 bestand met de relevante naam in dezelfde map, zoals C:\Scripts\SetupSMBSharesWithHyperVop een van de knooppunten van het bestandsservercluster:

    Vouw deze sectie uit voor ADGroupSetup.ps1.
    Param(
        [Parameter(Mandatory=$true)]
        [string]
        $HyperVClusterName,
        [Parameter(Mandatory=$true)]
        [string]
        $HyperVObjectADGroupSamName
    )
    
    # Add and import needed features
    if ((Get-WindowsFeature | ? Name -Like "RSAT-AD-PowerShell") | ? InstallState -NotLike Installed)
    {
        Install-WindowsFeature "RSAT-AD-PowerShell"
    }
    if ((Get-WindowsFeature | ? Name -Like "RSAT-Clustering-PowerShell") | ? InstallState -NotLike Installed)
    {
        Install-WindowsFeature "RSAT-Clustering-PowerShell"
    }
    Import-Module -Name ActiveDirectory
    Import-Module -Name FailoverClusters
    
    # Check for group and create if necessary
    $adGroup = @()
    $adGroup = Get-ADGroup -Filter {samAccountName -eq $HyperVObjectADGroupSamName}
    if ($adGroup.Count -ne 1)
    {
        $adGroup = New-ADGroup -DisplayName $HyperVObjectADGroupSamName -Name $HyperVObjectADGroupSamName -SamAccountName $HyperVObjectADGroupSamName -GroupScope Global -GroupCategory Security -PassThru
    }
    
    # Build array of Hyper-V servers
    $HyperVNodes = (Get-ClusterNode -Cluster $HyperVClusterName).Name | Get-ADComputer
    
    # Add nodes to group if not already members
    for ($i = 0; $i -lt $HyperVNodes.Count; $i++)
    {
        if (!(Get-ADGroupMember $adGroup | ? Name -ieq $HyperVNodes[$i].Name))
        {
            Add-ADGroupMember $adGroup -Members $HyperVNodes[$i]
        }
    }
    
    # Add Hyper-V cluster object to group if not already present
    if (!(Get-ADGroupMember $adGroup | ? Name -ieq $HyperVClusterName))
    {
        Add-ADGroupMember $adGroup -Members (Get-ADComputer $HyperVClusterName)
    }
    
    Vouw deze sectie uit voor FileShareSetup.ps1.
    Param(
        [Parameter(Mandatory=$true)]
        [string]
        $HyperVClusterName,
        [Parameter(Mandatory=$true)]
        [string]
        $ScaleOutFSName,
        [Parameter(Mandatory=$true)]
        [string]
        $ShareName,
        [Parameter(Mandatory=$true)]
        [string]
        $HyperVObjectADGroupSamName,
        [int]
        $CSVVolumeNumber = 1,
        [string]
        $VHDFolderName = "VHDs",
        [string]
        $VMFolderName = "VMs"
    )
    
    # Create the share folder
    New-Item -ItemType Directory -Path C:\ClusterStorage\Volume$CSVVolumeNumber\$ShareName
    
    # Create folders in share
    New-Item -ItemType Directory -Path "C:\ClusterStorage\Volume$CSVVolumeNumber\$ShareName\$VHDFolderName"
    New-Item -ItemType Directory -Path "C:\ClusterStorage\Volume$CSVVolumeNumber\$ShareName\$VMFolderName"
    
    # Get the domain name
    $DomainName = Get-Content env:userdnsdomain
    
    # Grant the Hyper-V group permission
    $cmdString = "ICACLS.EXE C:\ClusterStorage\Volume$CSVVolumeNumber\$ShareName  --% /Grant $DomainName\$HyperVObjectADGroupSamName"
    $cmdString += ':(CI)(OI)F'
    Invoke-Expression -Command $cmdString
    
    # Grant domain admins permission
    $DomainAdmins = "Domain Admins"
    $cmdString = "ICACLS.EXE C:\ClusterStorage\Volume$CSVVolumeNumber\$ShareName"
    $cmdString += '  --% /Grant "'
    $cmdString += "$DomainName\$DomainAdmins"
    $cmdString += ':(CI)(OI)F"'
    Invoke-Expression -Command $cmdString
    
    # Remove inheritance (optional)
    ICACLS.EXE C:\ClusterStorage\Volume$CSVVolumeNumber\$ShareName  /Inheritance:R
    
    # Create new share and set matching Share permissions
    $FullAccess = ("$DomainName\$HyperVObjectADGroupSamName","$DomainName\Domain Admins")
    New-SmbShare -Name $ShareName -Path C:\ClusterStorage\Volume$CSVVolumeNumber\$ShareName  -FullAccess $FullAccess
    
    Vouw deze sectie uit voor KCDSetup.ps1.
    Param(
        [Parameter(Mandatory=$true)]
        [string]
        $HyperVClusterName,
        [Parameter(Mandatory=$true)]
        [string]
        $ScaleOutFSName,
        [switch]
        $EnableLM = $true
    )
    
    # Add and import needed features
    if ((Get-WindowsFeature | ? Name -Like "RSAT-AD-PowerShell") | ? InstallState -NotLike Installed)
    {
        Install-WindowsFeature "RSAT-AD-PowerShell"
    }
    if ((Get-WindowsFeature | ? Name -Like "RSAT-Clustering-PowerShell") | ? InstallState -NotLike Installed)
    {
        Install-WindowsFeature "RSAT-Clustering-PowerShell"
    }
    Import-Module -Name ActiveDirectory
    
    # Build array of Hyper-V servers
    $HyperVNodes = (Get-ClusterNode -Cluster $HyperVClusterName).Name
    
    # Enable LM and CD 
    $SMBServerAD = Get-ADComputer -Filter {Name -eq $ScaleOutFSName}
    $AllowedToDelegateToSMB = @( 
        ("cifs/"+$SMBServerAD.Name), 
        ("cifs/"+$SMBServerAD.DNSHostName))
    
    for ($serverCounter = 0; $serverCounter -lt $HyperVNodes.Count; $serverCounter++) 
    { 
        $AllowedToDelegateTo = $AllowedToDelegateToSMB 
        if ($EnableLM) 
        { 
            for ($delegateCounter = 0; $delegateCounter -lt $HyperVNodes.Count; $delegateCounter++) 
            { 
                if ($delegateCounter -ne $serverCounter) 
                { 
                    $delegationServer = $HyperVNodes[$delegateCounter] | Get-ADComputer 
                    $AllowedToDelegateTo += @( 
                        ("Microsoft Virtual System Migration Service/"+$delegationServer.Name), 
                        ("Microsoft Virtual System Migration Service/"+$delegationServer.DNSHostName))       
                } 
            } 
        } 
        ($HyperVNodes[$serverCounter] | Get-ADComputer) | Set-ADObject -Add @{"msDS-AllowedToDelegateTo"=$AllowedToDelegateTo} 
    }
    
  2. Open een Windows PowerShell-sessie met domeinbeheerdersreferenties op het beheersysteem. Gebruik het script ADGroupSetup.ps1 om een Active Directory-groep te maken voor de Hyper-V computerobjecten. Wijzig de waarden voor de variabelen die geschikt zijn voor uw omgeving:

    # Replace the values of these variables
    $HyperVClusterName = "Compute01"
    $HyperVObjectADGroupSamName = "Hyper-VServerComputerAccounts" <#No spaces#>
    $ScriptFolder = "C:\Scripts\SetupSMBSharesWithHyperV"
    
    # Start of script itself
    CD $ScriptFolder
    .\ADGroupSetup.ps1 -HyperVObjectADGroupSamName $HyperVObjectADGroupSamName -HyperVClusterName $HyperVClusterName
    
  3. Gebruik het script FileShareSetup.ps1 om shares te maken voor elke CSV en beheerdersmachtigingen te verlenen voor de shares aan de groep Domeinadministrators en het rekencluster.

    # Replace the values of these variables
    $StorageClusterName = "StorageSpacesDirect1"
    $HyperVObjectADGroupSamName = "Hyper-VServerComputerAccounts" <#No spaces#>
    $SOFSName = "SOFS"
    $SharePrefix = "Share"
    $ScriptFolder = "C:\Scripts\SetupSMBSharesWithHyperV"
    
    # Start of the script itself
    CD $ScriptFolder
    Get-ClusterSharedVolume -Cluster $StorageClusterName | ForEach-Object {
        $ShareName = $SharePrefix + $_.SharedVolumeInfo.friendlyvolumename.trimstart("C:\ClusterStorage\Volume")
        Write-host "Creating share $ShareName on "$_.name "on Volume: " $_.SharedVolumeInfo.friendlyvolumename
        .\FileShareSetup.ps1 -HyperVClusterName $StorageClusterName -CSVVolumeNumber $_.SharedVolumeInfo.friendlyvolumename.trimstart("C:\ClusterStorage\Volume") -ScaleOutFSName $SOFSName -ShareName $ShareName -HyperVObjectADGroupSamName $HyperVObjectADGroupSamName
    }
    
  4. Schakel beperkte Kerberos-delegering in voor beheer van externe scenario's en verbeterde beveiliging voor Live Migration. Gebruik het KCDSetup.ps1 script vanuit een van de opslagclusterknooppunten. Hier volgt een kleine wrapper voor het script:

    $HyperVClusterName = "Compute01"
    $ScaleOutFSName = "SOFS"
    $ScriptFolder = "C:\Scripts\SetupSMBSharesWithHyperV"
    
    CD $ScriptFolder
    .\KCDSetup.ps1 -HyperVClusterName $HyperVClusterName -ScaleOutFSName $ScaleOutFSName -EnableLM
    
  5. Start alle knooppunten in het Hyper-V-cluster opnieuw om ervoor te zorgen dat de nieuwe instellingen voor beperkte Kerberos-delegering van kracht worden. Wanneer de knooppunten weer online zijn, kunt u beginnen met het implementeren van virtuele machines op de bestandsshares die u hebt gemaakt.

Aanvullende verwijzingen