Partager via


Déployer espaces de stockage direct sur Windows Server

Cet article fournit des instructions pas à pas pour déployer des espaces de stockage direct sur Windows Server. Pour déployer des espaces de stockage direct dans le cadre d’Azure Local, consultez À propos d’Azure Local.

Conseil

Vous souhaitez acquérir une Infrastructure hyperconvergée ? Microsoft recommande d’acheter une solution locale Azure matérielle/logicielle validée auprès de nos partenaires. Ces solutions sont conçues, assemblées et validées dans le respect de notre architecture de référence pour garantir compatibilité et fiabilité, ce qui vous permet d’être opérationnel rapidement. Pour parcourir un catalogue de solutions matérielles/logicielles qui fonctionnent avec Azure Local, consultez le Catalogue local Azure.

Conseil

Vous pouvez utiliser des machines virtuelles Hyper-V, y compris dans Microsoft Azure, pour évaluer les espaces de stockage direct sans matériel. Vous pouvez également passer en revue les pratiques scripts de déploiement rapide de Windows Server, que nous utilisons à des fins de formation.

Avant de commencer

Passez en revue la configuration matérielle requise des espaces de stockage direct pour vous familiariser avec l’approche globale et les notes importantes associées à certaines étapes.

Rassemblez les informations suivantes :

  • Option de déploiement : Les espaces de stockage direct prennent en charge deux options de déploiement : hyperconvergées et convergées, également appelées désagrégées. Familiarisez-vous avec les avantages de chacune d’entre elles pour décider de l’option qui vous convient. Les étapes 1 à 3 de cet article s’appliquent aux deux options de déploiement. L’étape 4 est nécessaire uniquement pour le déploiement convergé.

  • Noms de serveur : Familiarisez-vous avec les stratégies d’affectation de noms de votre organisation pour les ordinateurs, les fichiers, les chemins d’accès et d’autres ressources. Vous devez provisionner plusieurs serveurs, chacun avec des noms uniques.

  • Nom de domaine : familiarisez-vous avec les stratégies de votre organisation pour l’affectation de noms de domaine et la jonction de domaine. Vous joignez les serveurs à votre domaine et vous devez spécifier le nom de domaine.

  • Mise en réseau RDMA : il existe deux types de protocoles RDMA : iWarp et RoCE. Notez lequel est utilisé par vos cartes réseau et, si RoCE est utilisé, notez également la version (v1 ou v2). Pour RoCE, notez également le modèle de votre commutateur réseau en haut du rack.

  • ID de réseau local virtuel : notez l’ID de réseau local virtuel à utiliser pour les cartes réseau du système d’exploitation de gestion sur les serveurs, le cas échéant. Vous devez être en mesure d’obtenir ces informations auprès de votre administrateur réseau.

Étape 1 : Déployer Windows Server

Étape 1.1 : Installer le système d'exploitation

Tout d’abord, installez Windows Server sur chaque serveur du cluster. Les espaces de stockage direct nécessitent Windows Server Datacenter Edition. Vous pouvez utiliser l’option d’installation server Core ou Server avec Expérience de bureau.

Lorsque vous installez Windows Server à l’aide de l’Assistant Installation, vous pouvez choisir entre Windows Server (faisant référence à Server Core) et Windows Server (Server with Desktop Experience), qui est l’équivalent de l’option d’installation complète disponible dans Windows Server 2012 R2. Si vous ne choisissez pas, vous obtenez l’option d’installation server Core. Pour plus d’informations, voir Installer Server Core.

Étape 1.2 : Se connecter aux serveurs

Ce guide se concentre sur l’option d’installation server Core et le déploiement et la gestion à distance à partir d’un système de gestion distinct. Le système de gestion doit avoir :

  • Version de Windows Server ou De Windows 10 qui est au moins aussi nouvelle que les serveurs qu’il gère, avec les dernières mises à jour.
  • Connectivité réseau aux serveurs qu’elle gère.
  • Rattaché au même domaine ou à un domaine entièrement approuvé.
  • Outils d’administration de serveur distant et modules PowerShell pour Hyper-V et le clustering de basculement. Les Outils d’administration de serveur distant et les modules PowerShell sont disponibles sur Windows Server et peuvent être installés sans installer d’autres fonctionnalités. Vous pouvez également installer les Outils d’administration de serveur distant sur un PC de gestion Windows 10.

Sur le système de gestion, installez le cluster de basculement et les outils de gestion Hyper-V. Vous pouvez le faire via le Gestionnaire de serveur à l’aide de l’Assistant Ajout de rôles et de fonctionnalités . Dans la page Fonctionnalités , sélectionnez Outils d’administration de serveur distant, puis sélectionnez les outils à installer.

Entrez la session PowerShell et utilisez le nom du serveur ou l’adresse IP du nœud auquel vous souhaitez vous connecter. Vous êtes invité à entrer un mot de passe après l’exécution de cette commande. Entrez le mot de passe administrateur que vous avez spécifié lors de la configuration de Windows.

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

Voici un exemple de faire la même chose d’une manière plus utile dans les scripts :

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

Enter-PSSession -ComputerName $myServer1 -Credential $user

Conseil

Si vous effectuez un déploiement à distance à partir d’un système de gestion, vous risquez d’obtenir une erreur telle que WinRM ne peut pas traiter la requête. Pour corriger cette erreur, utilisez Windows PowerShell pour ajouter chaque serveur à la liste Hôtes approuvés sur votre ordinateur de gestion :

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

La liste des hôtes de confiance prend en charge les caractères génériques, comme Server*

  • Pour voir votre liste Hôtes approuvés, tapez Get-Item WSMAN:\Localhost\Client\TrustedHosts.
  • Pour vider la liste, tapez Clear-Item WSMAN:\Localhost\Client\TrustedHost.

Étape 1.3 : Joindre le domaine et ajouter des comptes de domaine

Pour gérer les espaces de stockage direct, vous devez joindre les serveurs à un domaine et utiliser un compte de domaine Active Directory Domain Services qui se trouve dans le groupe Administrateurs sur chaque serveur.

Depuis le système de gestion, ouvrez une console PowerShell avec des privilèges d’administrateur. Utilisez Enter-PSSession pour vous connecter à chaque serveur, puis exécutez la cmdlet suivante, en remplaçant votre propre nom d’ordinateur, le nom du domaine et les informations d’identification du domaine :

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

Si votre compte d’administrateur de stockage n’est pas membre du groupe Administrateurs de domaine, ajoutez votre compte d’administrateur de stockage au groupe Administrateurs local sur chaque nœud ou ajoutez le groupe que vous utilisez pour les administrateurs de stockage. Vous pouvez utiliser la commande suivante ou créer un script PowerShell pour effectuer cette étape. Pour plus d’informations, consultez Utiliser PowerShell pour ajouter des utilisateurs de domaine à un groupe local.

Net localgroup Administrators <Domain\Account> /add

Étape 1.4 : Installer des rôles et des fonctionnalités

L’étape suivante consiste à installer des rôles serveur sur chaque serveur via Windows Admin Center, le Gestionnaire de serveur ou PowerShell. Voici les rôles à installer :

  • Clustering de basculement
  • Hyper-V
  • Serveur de fichiers (si vous souhaitez héberger des partages de fichiers, par exemple pour un déploiement convergé)
  • Data-Center-Bridging (si vous utilisez RoCEv2 au lieu de cartes réseau iWARP)
  • RSAT-Clustering-PowerShell
  • Hyper-V-PowerShell

Pour installer des rôles via PowerShell, utilisez l’applet de commande Install-WindowsFeature . Vous pouvez l’utiliser sur un serveur unique comme suit :

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

Pour exécuter la commande sur tous les serveurs du cluster en même temps, exécutez ce script qui modifie la liste des variables au début du script pour qu’il corresponde à votre environnement.

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

Étape 2 : Configurer le réseau

Si vous déployez les espaces de stockage direct à l’intérieur de machines virtuelles, ignorez cette section.

Les espaces de stockage direct nécessitent une mise en réseau à bande passante élevée et à faible latence entre les serveurs du cluster. Vous avez besoin d’au moins un réseau 10 GbE, et l’accès à la mémoire directe à distance (RDMA) est recommandé. Vous pouvez utiliser iWARP ou RoCE tant qu’il dispose du logo Windows Server qui correspond à votre version du système d’exploitation, mais iWARP est plus facile à configurer.

Importante

Selon votre équipement réseau, et en particulier avec RoCE v2, vous devrez peut-être configurer le commutateur haut de rack. La configuration correcte du commutateur est importante pour assurer la fiabilité et les performances des espaces de stockage direct.

Windows Server 2016 a introduit le teaming intégré au commutateur (SET) dans le commutateur virtuel Hyper-V. Cette fonctionnalité vous permet d’utiliser les mêmes ports de carte réseau physique pour tout le trafic réseau lors de l’utilisation de RDMA, ce qui réduit le nombre de ports de carte réseau physique requis. Utilisez le regroupement intégré au commutateur pour Storage Spaces Direct.

  • Commutateur : vous devez configurer correctement les commutateurs réseau pour gérer la bande passante et le type de réseau. Si vous utilisez RDMA qui implémente le protocole RoCE, la configuration de l’appareil réseau et du commutateur est encore plus importante.
  • Sans commutateur : vous pouvez interconnecter des nœuds à l’aide de connexions directes, ce qui évite l’utilisation d’un commutateur. Chaque nœud doit avoir une connexion directe avec chaque autre nœud du cluster.

Pour obtenir des instructions sur la configuration de la mise en réseau pour espaces de stockage direct, consultez le Guide de déploiement rdMA Windows Server 2016 et 2019.

Étape 3 : Configurer les espaces de stockage direct

Effectuez les étapes suivantes sur un système de gestion qui exécute la même version que les serveurs que vous configurez. N’exécutez pas ces étapes à distance à l’aide d’une session PowerShell. Au lieu de cela, exécutez-les dans une session PowerShell locale sur le système de gestion, avec des autorisations d’administration.

Étape 3.1 : Nettoyer les lecteurs

Avant d’activer les espaces de stockage direct, vérifiez que vos lecteurs sont vides sans partitions anciennes ou d’autres données. Exécutez le script suivant, en remplaçant les noms de votre ordinateur pour supprimer les anciennes partitions ou d’autres données.

Importante

Ce script supprime définitivement toutes les données sur les lecteurs autres que le lecteur de démarrage du système d’exploitation !

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

La sortie ressemble à l’exemple suivant, où Count correspond au nombre de lecteurs de chaque modèle dans chaque serveur :

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

Étape 3.2 : Valider le cluster

Dans cette étape, vous exécutez l’outil de validation de cluster pour vous assurer que les nœuds de serveur sont configurés correctement pour créer un cluster à l’aide d’espaces de stockage direct. Lorsque vous exécutez la validation du cluster (Test-Cluster) avant de créer le cluster, il exécute des tests qui vérifient que la configuration convient pour fonctionner en tant que cluster de basculement. L’exemple suivant utilise directement le -Include paramètre, puis spécifie les catégories spécifiques de tests. Cette approche garantit que les tests spécifiques aux espaces de stockage direct sont inclus dans la validation.

Utilisez la commande PowerShell suivante pour valider un ensemble de serveurs à utiliser comme cluster d’espaces de stockage direct.

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

Étape 3.3 : Créer le cluster

Dans cette étape, vous créez un cluster avec les nœuds que vous avez validés pour la création du cluster à l’étape précédente à l’aide de l’applet de commande PowerShell suivante.

Lorsque vous créez le cluster, vous recevez un avertissement indiquant qu’il y a eu des problèmes lors de la création du rôle en cluster qui peut l’empêcher de démarrer. Pour plus d’informations, consultez le fichier de rapport ci-dessous. » Vous pouvez ignorer cet avertissement en toute sécurité. Cela est dû au fait qu’aucun disque n’est disponible pour le quorum du cluster. Configurez un témoin de partage de fichiers ou un témoin cloud après avoir créé le cluster.

Remarque

Si les serveurs utilisent des adresses IP statiques, modifiez la commande suivante pour refléter l’adresse IP statique en ajoutant le paramètre suivant et en spécifiant l’adresse IP : -StaticAddress <X.X.X.X>. Dans la commande suivante, remplacez l’espace ClusterName réservé par un nom NetBIOS unique et de 15 caractères ou moins.

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

Après avoir créé le cluster, l'inscription du nom de celui-ci dans le système DNS (Domain Name System) peut prendre du temps à se répliquer. Le temps dépend de l’environnement et de la configuration de la réplication DNS. Si la résolution du cluster ne réussit pas, vous pouvez utiliser le nom de l’ordinateur d’un nœud qui est un membre actif du cluster au lieu du nom du cluster.

Étape 3.4 : Configurer un témoin de cluster

Configurez un témoin pour le cluster afin que les clusters avec trois serveurs ou plus puissent résister à deux serveurs défaillants ou hors connexion. Un déploiement à deux serveurs nécessite un témoin de cluster ; sinon, si l’un ou l’autre serveur est hors connexion, l’autre serveur devient indisponible. Avec ces systèmes, vous pouvez utiliser un partage de fichiers en tant que témoin, ou utiliser un témoin de cloud. Pour plus d’informations, consultez Déployer un témoin de quorum.

Étape 3.5 : Activer les espaces de stockage direct

Après avoir créé le cluster, utilisez l’applet Enable-ClusterStorageSpacesDirect de commande PowerShell. Cette cmdlet place le système de stockage en mode Storage Spaces Direct et effectue automatiquement les tâches suivantes :

  • Crée un pool : crée un pool volumineux avec un nom tel que « S2D sur cluster1 ».

  • Configures les caches Storage Spaces Direct : si plusieurs types de supports (lecteurs) sont disponibles pour l’utilisation de Storage Spaces Direct, il active les appareils les plus rapides en tant que dispositifs de cache (lecture et écriture dans la plupart des cas).

  • Crée deux niveaux en tant que niveaux par défaut : un niveau est appelé « Capacité » et l’autre niveau est appelé « Performances ». L’applet de commande analyse les périphériques et configure chaque niveau avec la combinaison des types de périphériques et de la résilience.

À partir du système de gestion, ouvrez une fenêtre PowerShell avec élévation de privilèges et exécutez la commande suivante. Le nom de cluster est celui du cluster que vous avez créé aux étapes précédentes. Si vous exécutez cette commande localement sur l’un des nœuds, vous n’avez pas besoin du -CimSession paramètre.

Enable-ClusterStorageSpacesDirect -CimSession <ClusterName>

Cette commande active les espaces de stockage direct. Vous pouvez choisir d’utiliser le nom du nœud au lieu du nom du cluster. L’utilisation du nom de nœud peut être plus fiable, car les retards de réplication DNS peuvent se produire avec le nom du cluster nouvellement créé.

Une fois cette commande terminée, ce qui peut prendre plusieurs minutes, le système est prêt pour la création de volumes.

Étape 3.6 : Créer des volumes

Utilisez le cmdlet New-Volume pour la manière la plus rapide et la plus simple. Cette applet de commande unique crée automatiquement le disque virtuel, les partitions et les met en forme. Il crée le volume avec un nom correspondant et l’ajoute aux volumes partagés de cluster, tout en une étape simple.

Pour plus d’informations, consultez Création de volumes dans les espaces de stockage direct.

Étape 3.7 : Activer le cache CSV de manière facultative

Vous pouvez activer le cache de volume partagé de cluster (CSV) en utilisant la mémoire système (RAM) comme cache en mode écriture directe au niveau bloc pour les opérations de lecture que le gestionnaire de cache Windows ne met pas en cache. Cette fonctionnalité peut améliorer les performances des applications telles que Hyper-V. Le cache CSV améliore les performances des demandes de lecture et est également utile pour Scale-Out scénarios de serveur de fichiers.

L’activation du cache CSV réduit la quantité de mémoire disponible pour exécuter des machines virtuelles sur un cluster hyperconvergé. Vous devez donc équilibrer les performances de stockage avec la mémoire disponible pour les disques durs virtuels.

Pour définir la taille du cache CSV, ouvrez une session PowerShell sur le système de gestion avec un compte disposant d’autorisations d’administrateur sur le cluster de stockage. Utilisez le script suivant, en modifiant les $ClusterName variables $CSVCacheSize selon les besoins (cet exemple montre comment définir un cache CSV de 2 Go par serveur) :

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

Pour plus d’informations, consultez Utilisation du cache de lecture en mémoire CSV.

Étape 3.8 : Déployer des machines virtuelles pour des déploiements hyperconvergés

Si vous déployez un cluster hyperconvergé, la dernière étape consiste à approvisionner des machines virtuelles sur le cluster espaces de stockage direct.

Stockez les fichiers de la machine virtuelle sur l’espace de noms CSV du système (exemple : c :\ClusterStorage\Volume1) exactement comme les machines virtuelles en clusters sur les clusters de basculement.

Vous pouvez utiliser les outils fournis ou d’autres outils pour gérer le stockage et les machines virtuelles, notamment System Center Virtual Machine Manager.

Étape 4 : Déployer Scale-Out File Server pour les solutions convergées

Si vous déployez une solution convergée, l’étape suivante consiste à créer une instance de serveur de fichiers Scale-Out et à configurer les partages de fichiers.

Conseil

Si vous déployez un cluster hyperconvergé, vous avez terminé et n’avez pas besoin de cette section.

Sélectionnez l'un des onglets suivants pour des instructions sur la création d'un rôle de serveur de fichiers extensible à l'aide du Gestionnaire de cluster de basculement ou de PowerShell.

Pour créer un rôle de serveur de fichiers en Scale-Out à l’aide du Gestionnaire de cluster de basculement :

  1. Dans Failover Cluster Manager, sélectionnez le cluster, allez dans Rôles, puis sélectionnez Configurer le rôle...
    L'Assistant haute disponibilité s'affiche.

  2. Dans la page Sélectionner un rôle , sélectionnez Serveur de fichiers.

  3. Dans la page Type de serveur de fichiers, sélectionnez Scale-Out Serveur de fichiers pour les données d’application.

  4. À la page Point d’accès client, tapez un nom pour le serveur de fichiers avec montée en puissance parallèle.

  5. Vérifiez que le rôle a été correctement configuré en accédant à Rôles et en confirmant que la colonne État indique En cours d’exécution en regard du rôle de serveur de fichiers en cluster que vous avez créé, comme illustré dans la figure 1.

    Capture d’écran du Gestionnaire du cluster de basculement indiquant le serveur de fichiers avec montée en puissance parallèle

    Figure 1 Le gestionnaire de cluster de basculement affiche le serveur de fichiers scale-out avec l'état « en cours d'exécution ».

Remarque

Après avoir créé le rôle en cluster, les retards de propagation du réseau peuvent vous empêcher de créer des partages de fichiers sur celui-ci pendant quelques minutes ou plus longtemps.

Créer des partages de fichiers

Une fois que vous avez créé vos disques virtuels et que vous les avez ajoutés aux CSV, créez des partages de fichiers sur ceux-ci. Créez un partage de fichiers par csv par disque virtuel. System Center Virtual Machine Manager (VMM) est le moyen le plus simple d’effectuer cette tâche, car il gère les autorisations pour vous. Si vous ne l’avez pas dans votre environnement, vous pouvez utiliser Windows PowerShell pour automatiser partiellement le déploiement.

Utilisez les scripts inclus dans cette section pour automatiser partiellement le processus de création de groupes et de partages. Les scripts sont écrits pour les charges de travail Hyper-V. Si vous déployez d’autres charges de travail, vous devrez peut-être modifier les paramètres ou effectuer des étapes supplémentaires après avoir créé les partages. Par exemple, si vous utilisez Microsoft SQL Server, vous devez accorder un contrôle total sur le partage et le système de fichiers au compte de service SQL Server.

Remarque

Vous devez mettre à jour l’appartenance au groupe lorsque vous ajoutez des nœuds de cluster, sauf si vous utilisez System Center Virtual Machine Manager pour créer vos partages.

Pour créer des partages de fichiers à l’aide de scripts PowerShell, procédez comme suit :

  1. Développez chacune des sections suivantes et enregistrez le contenu de chacun sous la forme d’un fichier distinct .ps1 portant le nom approprié dans le même dossier, par C:\Scripts\SetupSMBSharesWithHyperVexemple, sur l’un des nœuds du cluster de serveurs de fichiers :

    Développez cette section pour 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)
    }
    
    Développez cette section pour 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
    
    Développez cette section pour 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. Ouvrez une session Windows PowerShell avec les informations d’identification de l’administrateur de domaine sur le système de gestion. Utilisez le script ADGroupSetup.ps1 pour créer un groupe Active Directory pour les objets d’ordinateur Hyper-V. Modifiez les valeurs des variables selon les besoins de votre environnement :

    # 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. Utilisez le script FileShareSetup.ps1 pour créer des partages pour chaque csv et accorder des autorisations d’administration pour les partages au groupe Administrateurs du domaine et au cluster de calcul.

    # 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. Activez la délégation Kerberos contrainte pour la gestion de scénarios à distance et une migration dynamique sécurisée. À partir de l’un des nœuds de cluster de stockage, utilisez le KCDSetup.ps1 script. Voici une petite enveloppe pour le script :

    $HyperVClusterName = "Compute01"
    $ScaleOutFSName = "SOFS"
    $ScriptFolder = "C:\Scripts\SetupSMBSharesWithHyperV"
    
    CD $ScriptFolder
    .\KCDSetup.ps1 -HyperVClusterName $HyperVClusterName -ScaleOutFSName $ScaleOutFSName -EnableLM
    
  5. Redémarrez tous les nœuds du cluster Hyper-V pour vous assurer que les nouveaux paramètres de délégation Kerberos contraints prennent effet. Lorsque les nœuds sont de nouveau en ligne, vous pouvez commencer à déployer des machines virtuelles sur les partages de fichiers que vous avez créés.

Références supplémentaires