Подключение диска данных к виртуальной машине Windows с помощью PowerShell

Область применения: ✔️ Виртуальные машины Windows ✔️ Гибкие масштабируемые наборы

В этой статье демонстрируется подключение нового и существующего дисков к виртуальной машине Windows с помощью PowerShell.

Во-первых, ознакомьтесь со следующими советами:

В этом руководстве используется интерфейс PowerShell в среде Azure Cloud Shell, которая постоянно обновляется до последней версии. Чтобы открыть Cloud Shell, выберите Попробовать в верхнем углу любого блока кода.

более низкую задержку;

В некоторых регионах задержка подключения диска сократилась, поэтому вы увидите улучшение до 15 %. Это полезно, если возникают запланированные или незапланированные отработки отказа между виртуальными машинами, если вы масштабируете рабочую нагрузку или выполняете высокомасштабную рабочую нагрузку с отслеживанием состояния, например Службу Azure Kubernetes. Однако это улучшение распространяется только на команду явного подключения диска — Add-AzVMDataDisk. При вызове команды, которая может неявно выполнить подключение, например Update-AzVM, улучшения производительности не будет. Вам не нужно предпринимать никаких действий, кроме вызова явной команды подключения, чтобы увидеть это улучшение.

В настоящее время низкая задержка доступна во всех общедоступных регионах, за исключением следующих:

  • Центральная Канада
  • Центральная часть США
  • Восточная часть США
  • восточная часть США 2
  • Центрально-южная часть США
  • западная часть США 2
  • Северная Германия
  • Западная Индия (Jio)
  • Северная Европа
  • Западная Европа

Добавление пустого диска данных в виртуальную машину

В этом примере показано, как добавить пустой диск данных в существующую виртуальную машину.

Использование управляемых дисков

$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

Использование управляемых дисков в зоне доступности

Чтобы создать диск в зоне доступности, запустите командлет New-AzDiskConfig с параметром -Zone. В следующем примере создается диск в зоне 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

Инициализировать диск

После добавления пустого диска его необходимо инициализировать. Чтобы инициализировать этот диск, можно войти в содержащую его виртуальную машину и использовать средство управления дисками. Если при создании виртуальной машины вы установили на нее WinRM и сертификат, то вы можете инициализировать диск удаленно с помощью PowerShell. Можно также использовать расширение пользовательского сценария.

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

Файл сценария может содержать код для инициализации дисков, например:

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

Подключение существующего диска данных к виртуальной машине

Можно подключить существующий управляемый диск к виртуальной машине как диск данных.

$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

Дальнейшие действия

Вы также можете развернуть управляемые диски с помощью шаблонов. Для получения дополнительных сведений см. статью Использование дисков в шаблонах Azure Resource Manager или шаблон быстрого запуска для развертывания нескольких дисков данных.