Udostępnij za pomocą


Wdrożyć Storage Spaces Direct w systemie Windows Server

Ten artykuł zawiera instrukcje krok po kroku do wdrażania Storage Spaces Direct w systemie Windows Server. Aby wdrożyć Storage Spaces Direct w ramach Azure Local, sprawdź About Azure Local (Informacje o Azure Local).

Tip

Chcesz uzyskać infrastrukturę hiperkonwergentną? Firma Microsoft zaleca zakup zweryfikowanego sprzętu/oprogramowania lokalnego rozwiązania platformy Azure od naszych partnerów. Te rozwiązania są projektowane, montowane i weryfikowane względem naszej architektury referencyjnej w celu zapewnienia zgodności i niezawodności, dzięki czemu można szybko pracować. Aby zapoznać się z katalogiem rozwiązań sprzętowych/oprogramowania, które współpracują z usługą Azure Local, zobacz Azure Local Catalog.

Tip

Możesz użyć maszyn wirtualnych Hyper-V, w tym na platformie Microsoft Azure, aby ocenić bezpośrednie miejsca do magazynowania bez sprzętu. Warto również przejrzeć przydatne skrypty szybkiego wdrażania laboratorium systemu Windows Server, których używamy do celów szkoleniowych.

Przed rozpoczęciem

Zapoznaj się z wymaganiami sprzętowymi Storage Spaces Direct, aby poznać ogólne podejście, oraz ważne uwagi powiązane z niektórymi krokami.

Zbierz następujące informacje:

  • Opcja wdrożenia: Bezpośrednie miejsca do magazynowania obsługują dwie opcje wdrażania: hiperkonwergentne i zbieżne, znane również jako rozagregowane. Zapoznaj się z zaletami każdej z nich, aby zdecydować, która opcja jest odpowiednia dla Ciebie. Kroki 1–3 w tym artykule dotyczą obu opcji wdrażania. Krok 4 jest wymagany tylko w przypadku wdrożenia konwergentnego.

  • Nazwy serwerów: zapoznaj się z zasadami nazewnictwa organizacji dla komputerów, plików, ścieżek i innych zasobów. Należy aprowizować kilka serwerów, z których każda ma unikatowe nazwy.

  • Nazwa domeny: zapoznaj się z zasadami organizacji dotyczącymi nazewnictwa domen i dołączania do domeny. Przyłączasz serwery do domeny i musisz określić nazwę domeny.

  • Sieć RDMA: Istnieją dwa typy protokołów RDMA: iWarp i RoCE. Zwróć uwagę, które karty sieciowe są używane, a jeśli używają RoCE, zanotuj również wersję (v1 lub v2). W przypadku RoCE należy również zwrócić uwagę na model przełącznika top-of-rack.

  • Identyfikator sieci VLAN: Zanotuj identyfikator sieci VLAN do użycia na kartach sieciowych systemu operacyjnego zarządzania na serwerach, jeśli istnieje. Powinno być możliwe uzyskanie tych informacji od administratora sieci.

Krok 1. Wdrażanie systemu Windows Server

Krok 1.1. Instalowanie systemu operacyjnego

Najpierw zainstaluj system Windows Server na każdym serwerze w klastrze. Bezpośrednie przestrzenie dyskowe wymagają systemu Windows Server Datacenter Edition. Możesz użyć opcji instalacji Server Core lub Serwera ze środowiskiem pulpitu.

Podczas instalowania systemu Windows Server za pomocą Kreatora instalacji można wybrać między Windows Server w wersji Server Core i Windows Server z doświadczeniem użytkownika Desktop, co odpowiada opcji pełnej instalacji dostępnej w systemie Windows Server 2012 R2. Jeśli nie wybierzesz opcji, zostanie zainstalowana wersja Server Core. Aby uzyskać więcej informacji, zobacz Install Server Core.

Krok 1.2. Nawiązywanie połączenia z serwerami

Ten przewodnik koncentruje się na opcji instalacji Server Core i wdrażaniu zdalnego zarządzania i zarządzaniu nim z oddzielnego systemu zarządzania. System zarządzania musi mieć:

  • Wersja systemu Windows Server lub Windows 10, która jest co najmniej tak nowa, jak serwery, którymi zarządza, z najnowszymi aktualizacjami.
  • Łączność sieciowa z serwerami, które zarządza.
  • Przyłączone do tej samej domeny lub w pełni zaufanej domeny.
  • Narzędzia administracji zdalnej serwera (RSAT) i moduły programu PowerShell dla Hyper-V i klastra przełączania awaryjnego. Narzędzia RSAT i moduły programu PowerShell są dostępne w systemie Windows Server i można je zainstalować bez instalowania innych funkcji. Można również zainstalować Narzędzia administracji zdalnej serwera na komputerze zarządzającym z systemem Windows 10.

W systemie zarządzania zainstaluj klaster przełączania awaryjnego i narzędzia do zarządzania Hyper-V. Można to zrobić w Menedżerze Serwera przy użyciu kreatora Dodaj role i funkcje. Na stronie Funkcje wybierz pozycję Narzędzia administracji zdalnej serwera, a następnie wybierz narzędzia do zainstalowania.

Wprowadź sesję programu PowerShell i użyj nazwy serwera lub adresu IP węzła, z którym chcesz nawiązać połączenie. Po wykonaniu tego polecenia zostanie wyświetlony monit o podanie hasła. Wprowadź hasło administratora określone podczas konfigurowania systemu Windows.

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

Oto przykład wykonywania tych samych czynności w sposób, który jest bardziej przydatny w skryptach:

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

Enter-PSSession -ComputerName $myServer1 -Credential $user

Tip

Jeśli wdrażasz zdalnie z systemu zarządzania, może wystąpić błąd, taki jak Usługa WinRM nie może przetworzyć żądania. Aby naprawić ten błąd, użyj programu Windows PowerShell, aby dodać każdy serwer do listy Zaufanych hostów na komputerze zarządzania:

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

Lista zaufanych hostów obsługuje symbole wieloznaczne, takie jak Server*.

  • Aby wyświetlić listę zaufanych hostów, wpisz Get-Item WSMAN:\Localhost\Client\TrustedHosts.
  • Aby opróżnić listę, wpisz Clear-Item WSMAN:\Localhost\Client\TrustedHost.

Krok 1.3. Dołączanie do domeny i dodawanie kont domeny

Aby zarządzać Storage Spaces Direct, należy przyłączyć serwery do domeny i użyć konta użytkownika domenowego usług Active Directory, które znajduje się w grupie Administratorzy na każdym z serwerów.

W systemie zarządzania otwórz konsolę programu PowerShell z uprawnieniami administratora. Użyj Enter-PSSession, aby nawiązać połączenie z każdym serwerem i uruchomić następujące polecenie cmdlet, podstawiając własną nazwę komputera, nazwę domeny i poświadczenia domeny:

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

Jeśli konto administratora magazynu nie jest członkiem grupy Administratorzy domeny, dodaj konto administratora magazynu do lokalnej grupy Administratorzy w każdym węźle lub dodaj grupę używaną dla administratorów magazynu. Aby wykonać ten krok, możesz użyć następującego polecenia lub utworzyć skrypt programu PowerShell. Aby uzyskać więcej informacji, zobacz Dodawanie użytkowników domeny do grupy lokalnej przy użyciu programu PowerShell.

Net localgroup Administrators <Domain\Account> /add

Krok 1.4. Instalowanie ról i funkcji

Następnym krokiem jest zainstalowanie ról serwera na każdym serwerze za pośrednictwem Centrum administracyjnego systemu Windows, Menedżera serwera lub programu PowerShell. Poniżej przedstawiono role do zainstalowania:

  • Klaster awaryjny
  • Hyper-V
  • Serwer plików (jeśli chcesz obsługiwać udostępnianie plików, np. podczas wdrożenia konwergentnego)
  • Data-Center-Bridging (jeśli używasz RoCEv2 zamiast kart sieciowych iWARP)
  • RSAT-Clustering-PowerShell
  • Hyper-V-PowerShell

Aby zainstalować role za pomocą programu PowerShell, użyj polecenia cmdlet Install-WindowsFeature . Można go używać na jednym serwerze w następujący sposób:

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

Aby uruchomić polecenie na wszystkich serwerach w klastrze w tym samym czasie, uruchom ten skrypt, który modyfikuje listę zmiennych na początku skryptu, aby dopasować je do środowiska.

# 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
}

Krok 2. Konfigurowanie sieci

Jeśli wdrażasz Storage Spaces Direct na maszynach wirtualnych, pomiń tę sekcję.

Bezpośrednie przestrzenie magazynowe wymagają sieci o wysokiej przepustowości i niskich opóźnieniach między serwerami w klastrze. Zaleca się co najmniej 10 GbE sieci, a zalecany jest zdalny bezpośredni dostęp do pamięci (RDMA). Można użyć iWARP lub RoCE tak długo, jak ma logo systemu Windows Server zgodne z wersją systemu operacyjnego, ale iWARP jest łatwiejsze do skonfigurowania.

Important

W zależności od sprzętu sieciowego, a zwłaszcza w przypadku usługi RoCE v2, może być konieczne skonfigurowanie przełącznika na górze stojaka. Prawidłowa konfiguracja przełącznika jest kluczowa, aby zagwarantować niezawodność i wydajność Storage Spaces Direct.

System Windows Server 2016 wprowadził osadzony zespół przełączników (SET) w ramach przełącznika wirtualnego Hyper-V. Ta funkcja umożliwia używanie tych samych fizycznych portów karty sieciowej (NIC) dla całego ruchu sieciowego podczas korzystania z funkcji RDMA, co zmniejsza liczbę wymaganych portów fizycznej karty sieciowej. Użyj grupowania wbudowanego w przełącznik dla funkcji Bezpośrednie Miejsca Magazynowania.

  • Przełączone: należy prawidłowo skonfigurować przełączniki sieciowe w celu obsługi przepustowości i typu sieci. Jeśli używasz funkcji RDMA, która implementuje protokół RoCE, konfiguracja urządzenia sieciowego i przełącznika jest jeszcze ważniejsza.
  • Bez przełącznika: węzły można łączyć za pomocą połączeń bezpośrednich, unikając korzystania z przełącznika. Każdy węzeł musi mieć bezpośrednie połączenie z każdym innym węzłem klastra.

Aby zapoznać się z instrukcjami dotyczącymi ustawienia sieci dla Storage Spaces Direct, zobacz Windows Server 2016 i 2019 RDMA Deployment Guide.

Krok 3. Konfigurowanie bezpośrednich miejsc do magazynowania

Wykonaj następujące kroki w systemie zarządzania z uruchomioną tą samą wersją co konfigurowane serwery. Nie uruchamiaj tych kroków zdalnie przy użyciu sesji programu PowerShell. Zamiast tego uruchom je w lokalnej sesji programu PowerShell w systemie zarządzania z uprawnieniami administracyjnymi.

Krok 3.1. Czyszczenie dysków

Przed włączeniem funkcji Bezpośrednie miejsca do magazynowania upewnij się, że dyski są puste bez starych partycji ani innych danych. Uruchom następujący skrypt, zamieniając nazwy komputerów, aby usunąć stare partycje lub inne dane.

Important

Ten skrypt trwale usuwa wszystkie dane na dyskach innych niż dysk rozruchowy systemu operacyjnego!

# 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
    }
}

Dane wyjściowe wyglądają podobnie jak w poniższym przykładzie, gdzie liczba to liczba dysków każdego modelu na każdym serwerze:

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

Krok 3.2. Weryfikowanie klastra

W tym kroku uruchomisz narzędzie do weryfikacji klastra, aby upewnić się, że węzły serwera są prawidłowo skonfigurowane do tworzenia klastra przy użyciu Storage Spaces Direct. Po uruchomieniu weryfikacji klastra (Test-Cluster) przed jego utworzeniem, testy sprawdzają, czy konfiguracja jest odpowiednia do działania jako klaster awaryjny (failover). Poniższy przykład używa bezpośrednio parametru -Include , a następnie określa określone kategorie testów. Takie podejście zapewnia, że testy specyficzne dla Storage Spaces Direct zostają uwzględnione w procesie weryfikacji.

Użyj następującego polecenia programu PowerShell, aby zweryfikować zestaw serwerów do użycia jako klaster bezpośrednich miejsc do magazynowania.

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

Krok 3.3. Tworzenie klastra

W tym kroku utworzysz klaster z węzłami, które zostały zweryfikowane pod kątem utworzenia klastra w poprzednim kroku, przy użyciu następującego polecenia cmdlet programu PowerShell.

Podczas tworzenia klastra zostanie wyświetlone ostrzeżenie informujące o problemach podczas tworzenia roli klastrowanej, która może uniemożliwić jego uruchomienie. Aby uzyskać więcej informacji, wyświetl poniższy plik raportu. Możesz bezpiecznie zignorować to ostrzeżenie. Wynika to z braku dysków dostępnych dla kworum klastra. Skonfiguruj świadka udziału plików lub świadka chmury po utworzeniu klastra.

Note

Jeśli serwery używają statycznych adresów IP, zmodyfikuj następujące polecenie, aby odzwierciedlić statyczny adres IP, dodając następujący parametr i określając adres IP: -StaticAddress <X.X.X.X>. W poniższym poleceniu zastąp symbol zastępczy ClusterName unikatową nazwą NetBIOS o długości nie większej niż 15 znaków.

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

Po utworzeniu klastra, może upłynąć trochę czasu, zanim wpis w systemie nazw domen (DNS) dla nazwy klastra zostanie powielony. Czas zależy od środowiska i konfiguracji replikacji DNS. Jeśli rozpoznawanie klastra nie powiedzie się, możesz użyć nazwy komputera węzła, który jest aktywnym elementem członkowskim klastra zamiast nazwy klastra.

Krok 3.4. Konfigurowanie świadka klastra

Skonfiguruj świadka dla klastra, aby klastry z co najmniej trzema serwerami mogły wytrzymać awarię lub brak dostępności dwóch serwerów. Wdrożenie dwóch serwerów wymaga świadka klastra; w przeciwnym razie, jeśli którykolwiek z serwerów przestanie działać, drugi serwer stanie się niedostępny. Dzięki tym systemom można użyć udziału plików jako świadka lub użyć świadka w chmurze. Aby uzyskać więcej informacji, zobacz Wdrażanie świadka kworum.

Krok 3.5. Włączanie Storage Spaces Direct

Po utworzeniu klastra użyj Enable-ClusterStorageSpacesDirect polecenia cmdlet programu PowerShell. Ten cmdlet wprowadza system pamięci masowej w tryb Storage Spaces Direct i automatycznie wykonuje następujące zadania:

  • Tworzy pulę: Tworzy jedną dużą pulę o nazwie takiej jak "S2D na Klasterze1".

  • Konfiguruje pamięci podręczne systemu Storage Spaces Direct: Jeśli dla systemu Storage Spaces Direct dostępne są różne typy nośników (dysków), wykorzystuje najszybsze z nich jako urządzenia pamięci podręcznej (do odczytu i zapisu w większości przypadków).

  • Tworzy dwie warstwy jako warstwy domyślne: jedna warstwa nosi nazwę "Pojemność", a druga jest nazywana "Wydajnością". Polecenie cmdlet analizuje urządzenia i konfiguruje każdą warstwę, uwzględniając różnorodność typów urządzeń oraz ich odporności.

W systemie zarządzania otwórz okno programu PowerShell z podwyższonym poziomem uprawnień i uruchom następujące polecenie. Nazwa klastra to nazwa klastra utworzonego w poprzednich krokach. Jeśli to polecenie jest uruchamiane lokalnie na jednym z węzłów, nie potrzebujesz parametru -CimSession .

Enable-ClusterStorageSpacesDirect -CimSession <ClusterName>

To polecenie włącza Storage Spaces Direct. Możesz użyć nazwy węzła zamiast nazwy klastra. Użycie nazwy węzła może być bardziej niezawodne, ponieważ opóźnienia replikacji DNS mogą wystąpić z nowo utworzoną nazwą klastra.

Po zakończeniu tego polecenia, co może potrwać kilka minut, system jest gotowy do utworzenia woluminów.

Krok 3.6. Tworzenie woluminów

Użyj cmdlet New-Volume dla najszybszego i najprostszego doświadczenia. To pojedyncze polecenie cmdlet automatycznie tworzy dysk wirtualny, partycje i formatuje go. Tworzy wolumin o pasującej nazwie i dodaje go do udostępnionych woluminów klastra — wszystko w jednym prostym kroku.

Aby uzyskać więcej informacji, zobacz Tworzenie woluminów w funkcji Storage Spaces Direct.

Krok 3.7. Opcjonalnie włącz pamięć podręczną CSV

Możesz włączyć pamięć podręczną udostępnionego woluminu klastra (CSV) używając pamięci systemowej (RAM) jako przepisywalnej pamięci podręcznej na poziomie bloków dla operacji odczytu, których nie buforuje menedżer pamięci podręcznej systemu Windows. Ta funkcja może zwiększyć wydajność aplikacji, takich jak funkcja Hyper-V. Pamięć podręczna CSV zwiększa wydajność żądań odczytu i jest również przydatna w scenariuszach serwera plików Scale-Out.

Włączenie pamięci podręcznej CSV zmniejsza ilość pamięci dostępnej do uruchamiania maszyn wirtualnych w klastrze hiperkonwergentnym, dlatego należy zrównoważyć wydajność magazynu z pamięcią dostępną dla dysków VHD.

Aby ustawić rozmiar pamięci podręcznej CSV, otwórz sesję programu PowerShell w systemie zarządzania przy użyciu konta z uprawnieniami administratora w klastrze magazynu. Użyj następującego skryptu, zmieniając odpowiednio zmienne $ClusterName i $CSVCacheSize (w tym przykładzie ustawiono pamięć podręczną CSV o rozmiarze 2 GB na serwer):

$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"

Aby uzyskać więcej informacji, zobacz Using the CSV in-memory read cache.

Krok 3.8. Wdrażanie maszyn wirtualnych na potrzeby wdrożeń hiperkonwergentnych

Jeśli wdrażasz hiperkonwergentny klaster, ostatnim krokiem jest prowizjonowanie maszyn wirtualnych w klastrze Storage Spaces Direct.

Przechowuj pliki maszyny wirtualnej w przestrzeni nazw CSV systemu (na przykład: c:\ClusterStorage\Volume1), podobnie jak klastrowane maszyny wirtualne w klastrach trybu failover.

Możesz używać narzędzi wbudowanych lub innych do zarządzania przechowywaniem i maszynami wirtualnymi, takimi jak System Center Virtual Machine Manager.

Krok 4. Wdrażanie serwera plików Scale-Out dla rozwiązań zbieżnych

W przypadku wdrażania rozwiązania konwergentnego następnym krokiem jest utworzenie instancji serwera plików Scale-Out i skonfigurowanie udziałów plikowych.

Tip

Jeśli wdrażasz hiperkonwergentny klaster, skończysz i nie potrzebujesz tej sekcji.

Wybierz jedną z poniższych kart, aby uzyskać instrukcje dotyczące tworzenia roli Scale-Out File Server z wykorzystaniem Menedżera klastrów trybu awaryjnego lub polecenia PowerShell.

  • Menedżer klastra przełączania awaryjnego
  • PowerShell

Aby utworzyć rolę serwera plików Scale-Out przy użyciu Menedżera Klastra Przełączania Awaryjnego:

  1. W Menedżerze klastra trybu failover wybierz klaster, przejdź do pozycji Role, a następnie wybierz pozycję Konfiguruj rolę....
    Zostanie wyświetlony Kreator wysokiej dostępności.

  2. Na stronie Wybieranie roli wybierz pozycję Serwer plików.

  3. Na stronie typu serwera plików wybierz serwer plików Scale-Out dla danych aplikacji.

  4. Na stronie punktu dostępu klienta wpisz nazwę serwera plików Scale-Out.

  5. Sprawdź, czy rola została pomyślnie skonfigurowana, przechodząc do pozycji Role i potwierdzając, że w kolumnie Stanobok utworzonej roli klastrowanego serwera plików, jak pokazano na rysunku 1.

    Zrzut ekranu Menedżera klastra trybu failover ukazujący serwer plików Scale-Out

    Rysunek 1 Menedżer klastra trybu failover przedstawiający serwer plików Scale-Out ze stanem Uruchomione

Note

Po utworzeniu roli klastrowanej opóźnienia propagacji sieci mogą uniemożliwić tworzenie na nim udziałów plików przez kilka minut lub potencjalnie dłużej.

Tworzenie udostępnień plików

Po utworzeniu dysków wirtualnych i dodaniu ich do woluminów CSV utwórz na nich udziały plików. Utwórz jeden udział plików na każdy CSV na każdy dysk wirtualny. Program System Center Virtual Machine Manager (VMM) jest najprostszym sposobem wykonania tego zadania, ponieważ obsługuje uprawnienia. Jeśli nie masz go w środowisku, możesz użyć programu Windows PowerShell, aby częściowo zautomatyzować wdrożenie.

Użyj skryptów zawartych w tej sekcji, aby częściowo zautomatyzować proces tworzenia grup i udziałów. Skrypty są napisane dla obciążeń Hyper-V. W przypadku wdrażania innych obciążeń może być konieczne zmodyfikowanie ustawień lub wykonanie dodatkowych kroków po utworzeniu udziałów. Jeśli na przykład używasz programu Microsoft SQL Server, musisz przyznać pełną kontrolę nad zasobem udostępnionym i systemem plików na konto usługi SQL Server.

Note

Należy zaktualizować członkostwo w grupie podczas dodawania węzłów klastra, chyba że używasz programu System Center Virtual Machine Manager do tworzenia udziałów.

Aby utworzyć udziały plików przy użyciu skryptów programu PowerShell, wykonaj następujące kroki:

  1. Rozwiń każdą z poniższych sekcji i zapisz zawartość każdego z nich jako oddzielny .ps1 plik o odpowiedniej nazwie w tym samym folderze, takim jak C:\Scripts\SetupSMBSharesWithHyperV, na jednym z węzłów klastra serwera plików:

    Rozwiń tę sekcję dla 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)
    }
    
    Rozwiń tę sekcję dla 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
    
    Rozwiń tę sekcję dla 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. Otwórz sesję programu Windows PowerShell z poświadczeniami administratora domeny w systemie zarządzania. Użyj skryptu ADGroupSetup.ps1 , aby utworzyć grupę usługi Active Directory dla obiektów komputera Hyper-V. Zmień wartości zmiennych zgodnie z potrzebami środowiska:

    # 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. Użyj skryptu FileShareSetup.ps1 aby utworzyć udziały dla każdego woluminu CSV oraz przyznać uprawnienia administracyjne dla udziałów grupie Administratorzy Domeny i klastrowi obliczeniowemu.

    # 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. Włącz ograniczone delegowanie protokołu Kerberos na potrzeby zdalnego zarządzania scenariuszami i zwiększone zabezpieczenia migracji na żywo. Z jednego z węzłów klastra przechowywania użyj skryptu KCDSetup.ps1. Opakowanie skryptu:

    $HyperVClusterName = "Compute01"
    $ScaleOutFSName = "SOFS"
    $ScriptFolder = "C:\Scripts\SetupSMBSharesWithHyperV"
    
    CD $ScriptFolder
    .\KCDSetup.ps1 -HyperVClusterName $HyperVClusterName -ScaleOutFSName $ScaleOutFSName -EnableLM
    
  5. Uruchom ponownie wszystkie węzły w klastrze Hyper-V, aby upewnić się, że nowe ustawienia ograniczonego delegowania Protokołu Kerberos zostaną zastosowane. Gdy węzły są z powrotem online, możesz rozpocząć uruchamianie maszyn wirtualnych na utworzonych udziałach plików.

Dodatkowe źródła