Compartir vía


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.

Menor latencia

En las regiones seleccionadas, se ha reducido la latencia de conexión de disco, por lo que verá una mejora de hasta un 15 %. Esto es útil si tiene conmutaciones por error planeadas o no planeadas entre máquinas virtuales, va a escalar la carga de trabajo o si ejecuta 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 pueda realizar implícitamente una conexión, 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.

Uso de discos administrados

$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

Uso de discos administrados en una zona de disponibilidad

Para crear un disco en una zona de disponibilidad, use New-AzDiskConfig con el parámetro -Zone. En el siguiente ejemplo se crea un disco en la zona 1.

$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 hacerlo, puede iniciar sesión en una máquina virtual y usar la administración de discos. Si habilitó WinRM y un certificado en la máquina virtual cuando la creó, puede usar PowerShell remoto para inicializar el disco. También puede utilizar una extensión de script personalizado:

    $location = "location-name"
    $scriptName = "script-name"
    $fileName = "script-file-name"
    Set-AzVMCustomScriptExtension -ResourceGroupName $rgName -Location $locName -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

También puede conectar un disco administrado existente a una máquina virtual como un disco de datos.

$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 en plantillas de Azure Resource Manager o la plantilla de inicio rápido para implementar varios discos de datos.