Conexión de un disco a una máquina virtual Windows con PowerShell

Se aplica a: ✔️ Máquinas virtuales Windows ✔️ Conjuntos de escalado flexibles

En este artículo se explica cómo conectar discos nuevos y existentes a una máquina virtual Windows con PowerShell.

En primer lugar, consulte estas sugerencias:

En este artículo se usa PowerShell dentro de Azure Cloud Shell, que se actualiza constantemente a la versión más reciente. Para abrir Cloud Shell, seleccione Probarlo en la esquina superior de cualquier bloque de código.

Reducir la latencia al adjuntar discos de datos

En las regiones seleccionadas, se reduce la latencia de conexión de disco, por lo que verá una mejora de hasta 15%. Esta mejora es útil si tiene conmutaciones por error planeadas o no planeadas entre máquinas virtuales, escalará la carga de trabajo o si ejecutará una carga de trabajo con estado a gran escala, como Azure Kubernetes Service. Sin embargo, esta mejora se limita al comando explícito de conexión de disco , Add-AzVMDataDisk. No verá la mejora del rendimiento si llama a un comando que podría realizar una vinculación de forma implícita, como Update-AzVM. No es necesario realizar otra acción además de llamar al comando de conexión explícito para ver esta mejora.

La menor latencia está disponible actualmente en todas las regiones públicas, excepto en:

  • Centro de Canadá
  • Centro de EE. UU.
  • Este de EE. UU.
  • Este de EE. UU. 2
  • Centro-sur de EE. UU.
  • Oeste de EE. UU. 2
  • Norte de Alemania
  • India occidental
  • Norte de Europa
  • Oeste de Europa

Adición de un disco de datos vacío a una máquina virtual

En este ejemplo se muestra cómo agregar un disco de datos vacío a una máquina virtual existente.

Creación y conexión de un disco administrado

Establezca valores para el grupo de recursos, la máquina virtual, la ubicación, el tipo de almacenamiento y el nombre del disco de datos. El cmdlet New-AzDiskConfig crea una configuración para un disco administrado vacío de 128 GiB y New-AzDisk crea el disco. A continuación, Get-AzVM obtiene la configuración de la máquina virtual, Add-AzVMDataDisk agrega el disco a ella y Update-AzVM aplica la configuración actualizada a la máquina virtual.

$rgName = 'myResourceGroup'
$vmName = 'myVM'
$location = 'East US'
$storageType = 'Premium_LRS'
$dataDiskName = $vmName + '_datadisk1'

$diskConfig = New-AzDiskConfig -SkuName $storageType -Location $location -CreateOption Empty -DiskSizeGB 128
$dataDisk1 = New-AzDisk -DiskName $dataDiskName -Disk $diskConfig -ResourceGroupName $rgName

$vm = Get-AzVM -Name $vmName -ResourceGroupName $rgName
$vm = Add-AzVMDataDisk -VM $vm -Name $dataDiskName -CreateOption Attach -ManagedDiskId $dataDisk1.Id -Lun 1

Update-AzVM -VM $vm -ResourceGroupName $rgName

Creación y conexión de un disco administrado en una zona de disponibilidad

Establezca valores para el grupo de recursos, la máquina virtual, la ubicación, el tipo de almacenamiento y el nombre del disco de datos. Para crear un disco administrado en una zona de disponibilidad, use New-AzDiskConfig con el -Zone parámetro . En el ejemplo siguiente se crea un disco administrado vacío de 128 GiB en la zona 1, se agrega a la configuración de la máquina virtual y se aplica la configuración actualizada a la máquina virtual.

$rgName = 'myResourceGroup'
$vmName = 'myVM'
$location = 'East US 2'
$storageType = 'Premium_LRS'
$dataDiskName = $vmName + '_datadisk1'

$diskConfig = New-AzDiskConfig -SkuName $storageType -Location $location -CreateOption Empty -DiskSizeGB 128 -Zone 1
$dataDisk1 = New-AzDisk -DiskName $dataDiskName -Disk $diskConfig -ResourceGroupName $rgName

$vm = Get-AzVM -Name $vmName -ResourceGroupName $rgName
$vm = Add-AzVMDataDisk -VM $vm -Name $dataDiskName -CreateOption Attach -ManagedDiskId $dataDisk1.Id -Lun 1

Update-AzVM -VM $vm -ResourceGroupName $rgName

Inicialización del disco

Después de agregar un disco vacío, debe inicializarlo. Para inicializar el disco, inicie sesión en una máquina virtual y use la administración de discos. Si habilita WinRM y un certificado en la máquina virtual al crearlo, puede usar PowerShell remoto para inicializar el disco.

También puede usar el cmdlet Set-AzVMCustomScriptExtension para agregar una extensión de script personalizado a la máquina virtual. En el ejemplo siguiente se usan el grupo de recursos y los nombres de máquina virtual del procedimiento de datos adjuntos, junto con valores para la ubicación de la máquina virtual, el nombre de extensión, el archivo de script de inicialización, el nombre de la cuenta de almacenamiento, la clave de cuenta de almacenamiento y el nombre del contenedor. Almacene el script en el contenedor de Azure Storage especificado antes de ejecutar el comando:

    $location = "location-name"
    $scriptName = "script-name"
    $fileName = "script-file-name"
    Set-AzVMCustomScriptExtension -ResourceGroupName $rgName -Location $location -VMName $vmName -Name $scriptName -TypeHandlerVersion "1.4" -StorageAccountName "mystore1" -StorageAccountKey "primary-key" -FileName $fileName -ContainerName "scripts"

El archivo de script puede contener código para inicializar los discos, por ejemplo:

Nota

El script de ejemplo usa el estilo de partición MBR. Si el disco es de dos tebibytes (TiB) o más grande, debe usar la creación de particiones GPT. Si es menor de dos TiB, puede usar MBR o GPT.

    $disks = Get-Disk | Where partitionstyle -eq 'raw' | sort number

    $letters = 70..89 | ForEach-Object { [char]$_ }
    $count = 0
    $labels = "data1","data2"

    foreach ($disk in $disks) {
        $driveLetter = $letters[$count].ToString()
        $disk |
        Initialize-Disk -PartitionStyle MBR -PassThru |
        New-Partition -UseMaximumSize -DriveLetter $driveLetter |
        Format-Volume -FileSystem NTFS -NewFileSystemLabel $labels[$count] -Confirm:$false -Force
	$count++
    }

Conexión de un disco de datos existente a una máquina virtual

Establezca valores para el grupo de recursos, la máquina virtual y el nombre del disco administrado existente. Use Get-AzDisk para obtener el disco administrado y Get-AzVM para obtener la configuración de la máquina virtual. A continuación, use Add-AzVMDataDisk para agregar el disco existente a la configuración de la máquina virtual y Update-AzVM aplicar la configuración actualizada a la máquina virtual.

$rgName = "myResourceGroup"
$vmName = "myVM"
$dataDiskName = "myDisk"
$disk = Get-AzDisk -ResourceGroupName $rgName -DiskName $dataDiskName

$vm = Get-AzVM -Name $vmName -ResourceGroupName $rgName

$vm = Add-AzVMDataDisk -CreateOption Attach -Lun 0 -VM $vm -ManagedDiskId $disk.Id

Update-AzVM -VM $vm -ResourceGroupName $rgName

Pasos siguientes

También puede implementar discos administrados mediante plantillas. Para más información, consulte Uso de discos administrados en plantillas de Azure Resource Manager o la plantilla de inicio rápido para implementar varios discos de datos.