Отправка VHD в Azure или копирование управляемого диска в другой регион с помощью Azure CLI

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

В этой статье объясняется, как с помощью AzCopy отправить виртуальный жесткий диск с локального компьютера на управляемый диск Azure или скопировать управляемый диск в другой регион. Этот процесс в виде прямой отправки позволяет передавать виртуальный жесткий диск размером до 32 ТиБ непосредственно на управляемый диск. В настоящее время прямая передача поддерживается для дисков категории "Ультра", SSD уровня "Премиум" версии 2, SSD уровня "Премиум", SSD уровня "Стандартный" и "Стандартный" HDD.

Если вы предоставляете решение по резервному копированию для виртуальных машин IaaS в Azure, то должны использовать прямую отправку для восстановления резервных копий клиентов на управляемые диски. При отправке виртуального жесткого диска из внешнего источника в Azure скорость передачи зависит от локальной пропускной способности. При отправке или копировании из виртуальной машины Azure пропускная способность будет такой же, как и для стандартных жестких дисков.

Безопасные отправки с помощью идентификатора Microsoft Entra

Если вы используете идентификатор Microsoft Entra для управления доступом к ресурсам, теперь его можно использовать для ограничения отправки управляемых дисков Azure. Эта функция доступна как общедоступное предложение во всех регионах. Когда пользователь пытается отправить диск, Azure проверяет удостоверение запрашивающего пользователя в идентификаторе Microsoft Entra и подтверждает, что у пользователя есть необходимые разрешения. На более высоком уровне системный администратор может задать политику на уровне учетной записи Или подписки Azure, чтобы убедиться, что удостоверение Microsoft Entra имеет необходимые разрешения для отправки перед отправкой диска или моментального снимка диска. Если у вас есть вопросы по защите отправки с помощью идентификатора Microsoft Entra, обратитесь к этой электронной почте: azuredisks@microsoft .com

Необходимые компоненты

Ограничения

  • Виртуальные жесткие диски нельзя передать в пустые моментальные снимки.
  • Azure Backup в настоящее время не поддерживает диски, защищенные с помощью идентификатора Microsoft Entra.
  • Azure Site Recovery в настоящее время не поддерживает диски, защищенные с помощью идентификатора Microsoft Entra.

Назначение роли RBAC

Чтобы получить доступ к управляемым дискам, защищенным с помощью идентификатора Microsoft Entra, запрашивающий пользователь должен иметь оператор данных для роли Управляемые диски или пользовательскую роль со следующими разрешениями:

  • Microsoft.Compute/disks/download/action
  • Microsoft.Compute/disks/upload/action
  • Microsoft.Compute/snapshots/download/action
  • Microsoft.Compute/snapshots/upload/action

Подробные инструкции по назначению роли см. в статье Назначение ролей Azure с помощью Azure CLI. Сведения о создании или обновлении настраиваемой роли см. в статье Создание или обновление настраиваемых ролей Azure с помощью Azure CLI.

Начало работы

Если вы предпочитаете отправлять диски через графический пользовательский интерфейс, это можно сделать с помощью Обозревателя службы хранилища Azure. Подробнее см. в статье Использование Обозревателя службы хранилища Azure для управления управляемыми дисками Azure.

Необходимые компоненты

  • Скачайте последнюю версию AzCopy v10.
  • Установка Azure CLI.
  • Если вы планируете отправить виртуальный жесткий диск (VHD) из локальной среды: требуется VHD фиксированного размера, который должен быть подготовлен для Azure и должен хранится локально.
  • Если вы планируете выполнить действие копирования, требуется управляемый диск в Azure.

Чтобы отправить виртуальный жесткий диск в Azure, необходимо создать пустой управляемый диск, настроенный для этого процесса отправки. Прежде чем создать его, необходимо ознакомиться с дополнительными сведениями о таких дисках.

Управляемый диск такого типа имеет два уникальных состояния:

  • ReadyToUpload — означает, что диск готов к получению отправки, однако для него не создан подписанный URL-адрес (SAS).
  • ActiveUpload — означает, что диск готов к получению отправки, и для него создан SAS.

Примечание.

В любом из этих состояний плата за управляемый диск будет взиматься по стандартному тарифу на HDD, независимо от фактического типа диска. Например, P10 будет оплачиваться как S10. Это справедливо до тех пор, пока на управляемом диске не будет вызван revoke-access, что необходимо для подключения диска к виртуальной машине.

Создание пустого управляемого диска

Перед созданием пустого стандартного жесткого диска для отправки вам потребуется размер файла виртуального жесткого диска, который требуется передать (в байтах). Чтобы получить это значение, можно использовать wc -c <yourFileName>.vhd или ls -al <yourFileName>.vhd. Это значение используется при указании параметра --upload-size-bytes.

Создайте пустой HDD (цен. категория "Стандартный") для отправки, указав для командлета disk create оба параметра -–for-upload и --upload-size-bytes.

Замените <yourdiskname>, <yourresourcegroupname>, <yourregion> значениями по своему выбору. Параметр --upload-size-bytes содержит пример значения 34359738880, замените его нужным вам значением.

Важно!

При создании диска ОС добавьте --hyper-v-generation <yourGeneration> в az disk create.

Если вы используете идентификатор Microsoft Entra для защиты отправки дисков, добавьте -dataAccessAuthmode 'AzureActiveDirectory'. При отправке на диск ценовой категории "Ультра" или SSD уровня "Премиум" версии 2 необходимо выбрать правильный размер сектора целевого диска. Если вы используете VHDX-файл с размером 4 кб логического сектора, целевой диск должен иметь значение 4k. Если вы используете VHD-файл с размером 512 логических секторов, целевой диск должен иметь значение 512.

Файлы VHDX с размером 512k не поддерживаются.

##For Ultra Disk or Premium SSD v2, add --logical-sector-size and specify either 512 or 4096, depending on if you're using a VHD or VHDX

az disk create -n <yourdiskname> -g <yourresourcegroupname> -l <yourregion> --os-type Linux --for-upload --upload-size-bytes 34359738880 --sku standard_lrs

Если вы хотите отправить другой тип диска, замените standard_lrs premium_lrs, premium_zrs, standardssd_lrs, standardssd_zrs, premiumv2_lrs или ultrassd_lrs.

(Необязательно) Предоставление доступа к диску

Если вы используете идентификатор Microsoft Entra для защиты отправки, вам потребуется назначить разрешения RBAC, чтобы предоставить доступ к диску и создать доступный для записи SAS.

az role assignment create --assignee "{assignee}" \
--role "{Data Operator for Managed Disks}" \
--scope "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceSubType}/{diskName}"

Создание SAS с доступом для записи

Теперь, когда вы создали пустой управляемый диск, настроенный для процесса отправки, вы можете отправить в него VHD. Чтобы отправить VHD на диск, потребуется записываемый SAS, чтобы можно было ссылаться на него как на место назначения для отправки.

Чтобы создать записываемый SAS для пустого управляемого диска, замените <yourdiskname> и <yourresourcegroupname>, а затем используйте следующие команды:

az disk grant-access -n <yourdiskname> -g <yourresourcegroupname> --access-level Write --duration-in-seconds 86400

Пример возвращаемого значения:

{
  "accessSas": "https://md-impexp-t0rdsfgsdfg4.blob.core.windows.net/w2c3mj0ksfgl/abcd?sv=2017-04-17&sr=b&si=600a9281-d39e-4cc3-91d2-923c4a696537&sig=xXaT6mFgf139ycT87CADyFxb%2BnPXBElYirYRlbnJZbs%3D"
}

Отправка VHD или VHDX

Теперь, когда у вас есть SAS для пустого управляемого диска, его можно использовать для задания управляемого диска в качестве места назначения для команды отправки.

Используйте AzCopy версии 10 для отправки локального VHD-файла или VHDX-файла на управляемый диск, указав созданный URI SAS.

Пропускная способность эквивалентна HDD (цен. категория "Стандартный"). Например, если размер равен S4, пропускная способность будет до 60 МиБ/с. Однако, если размер равен S70, пропускная способность будет до 500 МиБ/с.

AzCopy.exe copy "c:\somewhere\mydisk.vhd" "sas-URI" --blob-type PageBlob

После завершения отправки, когда вам больше не нужно записывать какие-либо данные на диск, отзовите SAS. Отзыв SAS изменит состояние управляемого диска и позволит подключить диск к виртуальной машине.

Замените <yourdiskname> и <yourresourcegroupname>, а затем выполните указанную ниже команду, чтобы сделать диск пригодным для использования:

az disk revoke-access -n <yourdiskname> -g <yourresourcegroupname>

Копирование управляемого диска

Прямая отправка также упрощает процесс копирования управляемого диска. Копирование можно выполнить в пределах одного и того же региона либо между регионами (скопировать в другой регион).

Следующий скрипт делает это автоматически. Процесс аналогичен описанному ранее порядку действий с некоторыми отличиями, так как вы работаете с существующим диском.

Важно!

При предоставлении размера управляемого диска в байтах из Azure необходимо добавить смещение в 512 байт. Это обусловлено тем, что при возврате диска в Azure опускается нижний колонтитул. Если этого не сделать, копирование завершится ошибкой. Следующий сценарий делает это автоматически.

Замените <sourceResourceGroupHere>, <sourceDiskNameHere>, <targetDiskNameHere>, <targetResourceGroupHere>, и <yourTargetLocationHere> (примером значения расположения будет uswest2) своими значениями, а затем выполните следующий сценарий, чтобы скопировать управляемый диск.

Совет

При создании диска ОС добавьте --hyper-v-generation <yourGeneration> в az disk create.

sourceDiskName=<sourceDiskNameHere>
sourceRG=<sourceResourceGroupHere>
targetDiskName=<targetDiskNameHere>
targetRG=<targetResourceGroupHere>
targetLocation=<yourTargetLocationHere>
#Expected value for OS is either "Windows" or "Linux"
targetOS=<yourOSTypeHere>

sourceDiskSizeBytes=$(az disk show -g $sourceRG -n $sourceDiskName --query '[diskSizeBytes]' -o tsv)

az disk create -g $targetRG -n $targetDiskName -l $targetLocation --os-type $targetOS --for-upload --upload-size-bytes $(($sourceDiskSizeBytes+512)) --sku standard_lrs

targetSASURI=$(az disk grant-access -n $targetDiskName -g $targetRG  --access-level Write --duration-in-seconds 86400 --query [accessSas] -o tsv)

sourceSASURI=$(az disk grant-access -n $sourceDiskName -g $sourceRG --duration-in-seconds 86400 --query [accessSas] -o tsv)

azcopy copy $sourceSASURI $targetSASURI --blob-type PageBlob

az disk revoke-access -n $sourceDiskName -g $sourceRG

az disk revoke-access -n $targetDiskName -g $targetRG

Следующие шаги

После успешной отправки VHD на управляемый диск можно подключить его в качестве диска данных либо диска ОС к имеющейся виртуальной машине, чтобы создать виртуальную машину.

Если у вас есть дополнительные вопросы, ознакомьтесь с разделом "Вопросы и ответы о передаче управляемого диска ".