Compartir vía


Conexión de un disco a una VM 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, revise 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 Pruébelo 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
  • JIO del Oeste de la India
  • Norte de Europa
  • Oeste de Europa

Incorporació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

Initialize the disk

Después de agregar un disco vacío, debe inicializarlo. Para hacerlo, puede iniciar sesión en una VM y usar la administración de discos. Si habilitó WinRM y un certificado en la VM cuando la creó, puede usar PowerShell remoto para inicializar el disco. También puede utilizar una extensión de script personalizada:

    $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++
    }

Incorporación de un disco de datos existente a una VM

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