Compartir a través de


Implementación de Espacios de almacenamiento directo en Windows Server

En este artículo se proporcionan instrucciones paso a paso para implementar Espacios de almacenamiento directo en Windows Server. Para implementar Espacios de almacenamiento directo como parte de Azure Local, consulte Acerca de Azure Local.

Sugerencia

¿Busca adquirir una infraestructura hiperconvergente? Microsoft recomienda comprar una solución local de Azure Local de hardware o software validada de nuestros asociados. Estas soluciones se diseñan, se ensamblan y se validan con nuestra arquitectura de referencia para garantizar la compatibilidad y la confiabilidad, de modo que pueda empezar a utilizarlas rápidamente. Para examinar un catálogo de soluciones de hardware y software que funcionan con Azure Local, consulte el catálogo local de Azure.

Sugerencia

Puede usar máquinas virtuales de Hyper-V, incluidas en Microsoft Azure, para evaluar Espacios de almacenamiento directo sin hardware. Es posible que también quiera revisar los útiles scripts de implementación rápida de Windows Server para laboratorios, que usamos para propósitos formativos.

Antes de empezar

Revisar los requisitos de hardware de Storage Spaces Direct para familiarizarse con el enfoque general y las notas importantes asociadas a algunos pasos.

Recopile la información siguiente:

  • Deployment option: Espacios de almacenamiento directo es compatible con dos opciones de implementación: hiperconvergente y convergente, también conocidas como desagregadas. Familiarícese con las ventajas de cada uno de ellos para decidir qué opción es adecuada para usted. Los pasos del 1 al 3 de este artículo se aplican a ambas opciones de implementación. El paso 4 solo es necesario para la implementación convergente.

  • nombres de servidor: familiarícese con las directivas de nomenclatura de su organización para equipos, archivos, rutas de acceso y otros recursos. Debe aprovisionar varios servidores, cada uno con nombres únicos.

  • Nombre de dominio: Familiarícese con las políticas de su organización para los nombres de dominios y la unión a dominios. Una los servidores a su dominio y especifique el nombre de dominio.

  • Redes RDMA: Hay dos tipos de protocolos RDMA: iWarp y RoCE. Observe cuál usa su adaptador de red y, si es RoCE, tenga en cuenta también la versión (v1 o v2). En el caso de RoCE, tenga en cuenta también el modelo del conmutador de la parte superior del rack.

  • Id. de VLAN: tenga en cuenta el identificador de VLAN que se va a usar para los adaptadores de red del sistema operativo de administración en los servidores, si los hay. Debería poder obtener esta información del administrador de red.

Paso 1: Implementar Windows Server

Paso 1.1: Instalación del sistema operativo

En primer lugar, instale Windows Server en todos los servidores del clúster. Espacios de almacenamiento directo requiere Windows Server Datacenter Edition. Puede usar la opción de instalación Server Core o Servidor con experiencia de escritorio.

Al instalar Windows Server mediante el asistente para instalación, puede elegir entre Windows Server (que hace referencia a Server Core) y Windows Server (Server con experiencia de escritorio), que es el equivalente a la opción de instalación completa disponible en Windows Server 2012 R2. Si no elige, obtendrá la opción de instalación Server Core. Para más información, consulte Instalación de Server Core.

Paso 1.2: Conexión a los servidores

Esta guía se centra en la opción de instalación Server Core e implementación y administración remota desde un sistema de administración independiente. El sistema de administración debe tener:

  • Una versión de Windows Server o Windows 10 que sea al menos tan nueva como los servidores que administra, con las actualizaciones más recientes.
  • Conectividad de red con los servidores que administra.
  • Unido al mismo dominio o a un dominio de plena confianza.
  • Herramientas de administración remota del servidor (RSAT) y módulos de PowerShell para Hyper-V y clústeres de conmutación por error. Las herramientas RSAT y los módulos de PowerShell están disponibles en Windows Server y pueden instalarse sin necesidad de instalar otras características. También puede instalar las Herramientas de administración remota del servidor en un equipo de administración de Windows 10.

En el sistema de administración, instale el clúster de conmutación por error y las herramientas de administración de Hyper-V. Puede hacerlo a través del Administrador del servidor mediante el Asistente para agregar roles y características . En la página Características , seleccione Herramientas de administración remota del servidor y, a continuación, seleccione las herramientas que desea instalar.

Escriba la sesión de PowerShell y use el nombre del servidor o la dirección IP del nodo al que desea conectarse. Se le pedirá una contraseña después de ejecutar este comando. Escriba la contraseña de administrador que especificó al configurar Windows.

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

Este es un ejemplo de cómo hacer lo mismo de una manera más útil en los scripts:

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

Enter-PSSession -ComputerName $myServer1 -Credential $user

Sugerencia

Si va a implementar de forma remota desde un sistema de administración, es posible que reciba un error como WinRM no puede procesar la solicitud. Para corregir este error, use Windows PowerShell para agregar cada servidor a la lista Hosts de confianza en el equipo de administración:

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

La lista de hosts de confianza admite caracteres comodín, como Server*.

  • Para ver la lista de hosts de confianza, escriba Get-Item WSMAN:\Localhost\Client\TrustedHosts.
  • Para vaciar la lista, escriba Clear-Item WSMAN:\Localhost\Client\TrustedHost.

Paso 1.3: Unirse al dominio y agregar cuentas de dominio

Para administrar Espacios de almacenamiento directo, debe unir los servidores a un dominio y usar una cuenta de dominio de Active Directory Domain Services que se encuentra en el grupo Administradores de cada servidor.

Desde el sistema de administración, abra una consola de PowerShell con privilegios de administrador. Use Enter-PSSession para conectarse a cada servidor y ejecute el siguiente cmdlet, sustituyendo su propio nombre de equipo, nombre de dominio y credenciales de dominio:

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

Si la cuenta de administrador de almacenamiento no es miembro del grupo Administradores de dominio, agregue la cuenta de administrador de almacenamiento al grupo administradores local de cada nodo o agregue el grupo que use para los administradores de almacenamiento. Puede usar el comando siguiente o crear un script de PowerShell para realizar este paso. Para obtener más información, consulte Uso de PowerShell para agregar usuarios de dominio a un grupo local.

Net localgroup Administrators <Domain\Account> /add

Paso 1.4: Instalación de roles y características

El siguiente paso es instalar roles de servidor en todos los servidores a través de Windows Admin Center, Administrador del servidor o PowerShell. Estos son los roles a instalar:

  • Clústeres de conmutación por error
  • Hyper-V
  • Servidor de archivos (si quiere alojar algún archivo compartido, como para una implementación convergente)
  • Data-Center-Bridging (si está utilizando RoCEv2 en lugar de adaptadores de red iWARP)
  • RSAT-Clustering-PowerShell
  • Hyper-V-PowerShell

Para instalar roles mediante PowerShell, use el cmdlet Install-WindowsFeature . Puede usarlo en un único servidor como este:

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

Para ejecutar el comando en todos los servidores del clúster al mismo tiempo, ejecute este script que modifica la lista de variables al principio del script para ajustarse a su entorno.

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

Paso 2: Configurar la red

Si va a implementar Espacios de almacenamiento directo dentro de máquinas virtuales, omita esta sección.

Storage Spaces Direct requiere redes de alto ancho de banda y baja latencia dentro del clúster de servidores. Necesita al menos redes de 10 GbE y se recomienda el acceso directo a memoria remota (RDMA). Puede usar iWARP o RoCE siempre que tenga el logotipo de Windows Server que coincida con la versión del sistema operativo, pero iWARP es más fácil de configurar.

Importante

Dependiendo del equipo de red, y especialmente con RoCE v2, es posible que tenga que configurar el conmutador de la parte superior del bastidor. La configuración correcta del conmutador es importante para garantizar la confiabilidad y el rendimiento de Espacios de almacenamiento directo.

Windows Server 2016 introdujo la agrupación de equipos integrada en conmutadores (SET) dentro del conmutador virtual de Hyper-V. Esta característica permite usar los mismos puertos de tarjeta de interfaz de red física (NIC) para todo el tráfico de red mientras usa RDMA, lo que reduce el número de puertos NIC físicos necesarios. Utilice el teaming integrado en conmutadores para Storage Spaces Direct.

  • Conmutador: debe configurar correctamente los conmutadores de red para gestionar el ancho de banda y el tipo de red. Si usa RDMA que implementa el protocolo RoCE, la configuración del dispositivo de red y del conmutador es aún más importante.
  • Sin conmutador: puede interconectar nodos mediante conexiones directas, evitando el uso de un conmutador. Cada nodo debe tener una conexión directa con todos los demás nodos del clúster.

Para obtener instrucciones sobre cómo establecer una red para Espacios de almacenamiento directo, consulte la Guía de implementación de RDMA de Windows Server 2016 y 2019.

Paso 3: Configurar Espacios de almacenamiento directo

Realice los pasos siguientes en un sistema de administración que ejecute la misma versión que los servidores que está configurando. No ejecute estos pasos de forma remota mediante una sesión de PowerShell. En su lugar, ejecútelos en una sesión local de PowerShell en el sistema de administración, con permisos administrativos.

Paso 3.1: Limpieza de unidades

Antes de habilitar Espacios de almacenamiento directo, asegúrese de que las unidades están vacías sin particiones antiguas u otros datos. Ejecute el siguiente script, sustituyendo los nombres de equipo de su computadora para eliminar las particiones antiguas u otros datos.

Importante

Este script quita permanentemente los datos de las unidades que no sean la unidad de arranque del sistema operativo.

# 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 salida es similar al ejemplo siguiente, donde Count es el número de unidades de cada modelo en cada servidor:

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

Paso 3.2: Validación del clúster

En este paso, ejecutará la herramienta de validación del clúster para asegurarse de que los nodos de servidor están configurados correctamente para crear un clúster mediante Espacios de almacenamiento directo. Al ejecutar la validación del clúster (Test-Cluster) antes de crear el clúster, ejecuta pruebas que comprueban que la configuración es adecuada para funcionar como un clúster de conmutación por error. En el ejemplo siguiente se usa directamente el -Include parámetro y, a continuación, se especifican las categorías específicas de pruebas. Este enfoque garantiza que las pruebas específicas de Espacios de almacenamiento directo se incluyan en la validación.

Utilice el siguiente comando de PowerShell para validar un conjunto de servidores para su uso como un clúster de Espacios de almacenamiento directo.

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

Paso 3.3: Creación del clúster

En este paso, creará un clúster con los nodos que validó para la creación del clúster en el paso anterior mediante el siguiente cmdlet de PowerShell.

Al crear el clúster, recibirá una advertencia que indica "Hubo problemas al crear el rol en clúster que puede impedir que se inicie. Para obtener más información, vea el archivo de informe siguiente". Puede omitir esta advertencia de forma segura. Se debe a que no hay discos disponibles para el quórum del clúster. Configure un testigo de compartición de archivos o un testigo en la nube después de crear el clúster.

Nota

Si los servidores usan direcciones IP estáticas, modifique el comando siguiente para reflejar la dirección IP estática agregando el parámetro siguiente y especificando la dirección IP: -StaticAddress <X.X.X.X>. En el siguiente comando, reemplace el ClusterName marcador de posición por un nombre NetBIOS único y de 15 caracteres o menos.

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

Después de crear el clúster, puede tardar tiempo para que la entrada del Sistema de Nombres de Dominio (DNS) del nombre del clúster se replique. El tiempo depende del entorno y de la configuración de replicación de DNS. Si la resolución del clúster no se realiza correctamente, puede usar el nombre de equipo de un nodo que sea miembro activo del clúster en lugar del nombre del clúster.

Paso 3.4: Configuración de un testigo de clúster

Configure un testigo para el clúster para que los clústeres con tres o más servidores puedan resistir dos servidores con errores o estar sin conexión. Una implementación de dos servidores requiere un testigo de clúster; De lo contrario, si cualquiera de los servidores se queda sin conexión, el otro servidor deja de estar disponible. Con estos sistemas puede usar un recurso compartido de archivos como testigo o utilizar un testigo en la nube. Para obtener más información, consulte Implementación de un testigo de cuórum.

Paso 3.5: Habilitar Espacios de almacenamiento directo

Después de crear el clúster, use el Enable-ClusterStorageSpacesDirect cmdlet de PowerShell. Este cmdlet coloca el sistema de almacenamiento en modo directo de Espacios de almacenamiento y realiza automáticamente las siguientes tareas:

  • Crea un grupo: crea un único grupo grande con un nombre como "S2D en Cluster1".

  • Configura las memorias caché de Storage Spaces Direct: si hay más de un tipo de medio (unidad) disponible para el uso con Storage Spaces Direct, habilita el más rápido como dispositivo de caché (lectura y escritura en la mayoría de los casos).

  • Crea dos niveles como niveles predeterminados: un nivel se denomina "Capacidad" y el otro nivel se denomina "Rendimiento". El cmdlet analiza los dispositivos y configura cada nivel con la combinación de tipos de dispositivo y resistencia.

En el sistema de administración, abra una ventana de PowerShell con privilegios elevados y ejecute el siguiente comando. El nombre del clúster es el nombre del clúster que creó en los pasos anteriores. Si ejecuta este comando localmente en uno de los nodos, no necesita el -CimSession parámetro .

Enable-ClusterStorageSpacesDirect -CimSession <ClusterName>

Este comando habilita Storage Spaces Direct. Puede optar por usar el nombre del nodo en lugar del nombre del clúster. El uso del nombre del nodo puede ser más confiable, ya que podría haber retrasos en la replicación de DNS con el nombre del clúster recién creado.

Cuando este comando finaliza, lo que puede tardar varios minutos, el sistema está listo para crear volúmenes.

Paso 3.6: Crear volúmenes

Use el New-Volume cmdlet para obtener la experiencia más rápida y sencilla. Este único cmdlet crea automáticamente el disco virtual, las particiones y lo da formato. Crea el volumen con un nombre coincidente y lo agrega a volúmenes compartidos de clúster, todo en un solo paso sencillo.

Para obtener más información, consulte Creación de volúmenes en Espacios de almacenamiento directo.

Paso 3.7: Habilitar opcionalmente la caché CSV

Puede habilitar la caché de volumen compartido de clúster (CSV) utilizando la memoria del sistema (RAM) como una caché de nivel de bloque de escritura directa para las operaciones de lectura que el administrador de caché de Windows no almacena en caché. Esta característica puede mejorar el rendimiento de las aplicaciones como Hyper-V. La caché CSV aumenta el rendimiento de las solicitudes de lectura y también resulta útil para escenarios de servidor de archivos de Scale-Out.

La habilitación de la caché CSV reduce la cantidad de memoria disponible para ejecutar máquinas virtuales en un clúster hiperconvergido, por lo que debe equilibrar el rendimiento del almacenamiento con la memoria disponible para los discos duros virtuales.

Para establecer el tamaño de la caché CSV, abra una sesión de PowerShell en el sistema de administración con una cuenta que tenga permisos de administrador en el clúster de almacenamiento. Use el siguiente script, cambiando las $ClusterName variables y $CSVCacheSize según corresponda (en este ejemplo se establece una caché CSV de 2 GB por servidor):

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

Para más información, consulte Uso de la caché de lectura en memoria de CSV.

Paso 3.8: Implementación de máquinas virtuales para implementaciones hiperconvergentes

Si está implementando un clúster hiperconvergente, el último paso consiste en aprovisionar máquinas virtuales en el clúster de Espacios de almacenamiento directo.

Almacene los archivos de la máquina virtual en el espacio de nombres CSV del sistema (por ejemplo: c:\ClusterStorage\Volume1), al igual que las máquinas virtuales agrupadas en clústeres de conmutación por error.

Puede usar las herramientas integradas u otras herramientas para administrar el almacenamiento y las máquinas virtuales, como System Center Virtual Machine Manager.

Paso 4: Implementación del Servidor de archivos de escalabilidad horizontal para soluciones convergentes

Si va a implementar una solución convergente, el siguiente paso consiste en crear una instancia del servidor de archivos Scale-Out y configurar los recursos compartidos de archivos.

Sugerencia

Si va a implementar un clúster hiperconvergido, ha terminado y no necesita esta sección.

Seleccione una de las siguientes pestañas para obtener instrucciones sobre cómo crear un rol de servidor de archivos expandible mediante el Administrador de Clúster de Conmutación por Error o PowerShell.

Para crear un rol de servidor de archivos de Scale-Out mediante el Administrador de clústeres de conmutación por error:

  1. En Administrador de clústeres de conmutación por error, seleccione el clúster, vaya a Roles y seleccione Configurar rol....
    Aparece el Asistente para alta disponibilidad.

  2. En la página Seleccionar rol, seleccione Servidor de archivos.

  3. En la página Tipo de servidor de archivos, seleccione Servidor de archivos de escalabilidad horizontal para datos de aplicación.

  4. En la página Punto de acceso de cliente, escriba un nombre para el Servidor de archivos de escalabilidad horizontal.

  5. Compruebe que el rol se configuró correctamente; para ello, vaya a Roles y confirme que la columna Estado muestra En ejecución junto al rol de servidor de archivos en clúster que creó, como se muestra en la figura 1.

    Captura de pantalla del Administrador de clústeres de conmutación por error mostrando el Servidor de archivos de escalabilidad horizontal

    Figura 1 El administrador de clústeres de conmutación por error muestra el servidor de archivos de escalabilidad horizontal con el estado En ejecución

Nota

Después de crear el rol en clúster, los retrasos en la propagación de red pueden impedir la creación de recursos compartidos en él durante unos minutos o incluso más.

Creación de recursos compartidos de archivos

Después de crear los discos virtuales y agregarlos a los CSV, cree compartir archivos en los discos virtuales. Cree una compartición de archivos por cada CSV por cada disco virtual. System Center Virtual Machine Manager (VMM) es la manera más fácil de realizar esta tarea porque controla los permisos para usted. Si no lo tiene en su entorno, puede usar Windows PowerShell para automatizar parcialmente la implementación.

Use los scripts incluidos en esta sección para automatizar parcialmente el proceso de creación de grupos y recursos compartidos. Los scripts se escriben para cargas de trabajo de Hyper-V. Si va a implementar otras cargas de trabajo, es posible que tenga que modificar la configuración o realizar pasos adicionales después de crear los recursos compartidos. Por ejemplo, si está usando Microsoft SQL Server, tiene que conceder permiso de control total sobre el recurso compartido y el sistema de archivos a la cuenta de servicio de SQL Server.

Nota

Debe actualizar la pertenencia a grupos al agregar nodos de clúster a menos que use System Center Virtual Machine Manager para crear los recursos compartidos.

Para crear recursos compartidos de archivos mediante scripts de PowerShell, realice los pasos siguientes:

  1. Expanda cada una de las secciones siguientes y guarde el contenido de cada uno como un archivo independiente .ps1 con el nombre correspondiente en la misma carpeta, como C:\Scripts\SetupSMBSharesWithHyperV, en uno de los nodos del clúster del servidor de archivos:

    Despliegue esta sección para 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)
    }
    
    Expanda esta sección para 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
    
    Expanda esta sección para 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. Abra una sesión de Windows PowerShell con credenciales de administrador de dominio en el sistema de administración. Use el script ADGroupSetup.ps1 para crear un grupo de Active Directory para los objetos de equipo Hyper-V. Cambie los valores de las variables según corresponda para su entorno:

    # 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. Use el script FileShareSetup.ps1 para crear recursos compartidos para cada CSV y conceder permisos administrativos para los recursos compartidos al grupo Administradores de dominio y al clúster de proceso.

    # 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. Habilite la delegación restringida de Kerberos para la gestión de entornos remotos y aumente la seguridad de Live Migration. En uno de los nodos del clúster de almacenamiento, use el script KCDSetup.ps1. Este es un pequeño contenedor para el script:

    $HyperVClusterName = "Compute01"
    $ScaleOutFSName = "SOFS"
    $ScriptFolder = "C:\Scripts\SetupSMBSharesWithHyperV"
    
    CD $ScriptFolder
    .\KCDSetup.ps1 -HyperVClusterName $HyperVClusterName -ScaleOutFSName $ScaleOutFSName -EnableLM
    
  5. Reinicie todos los nodos del clúster de Hyper-V para asegurarse de que la nueva configuración de delegación restringida de Kerberos surte efecto. Cuando los nodos vuelven a estar en línea, puede empezar a implementar máquinas virtuales en los recursos compartidos de archivos que creó.

Referencias adicionales