Отправка 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
, что необходимо для подключения диска к виртуальной машине.
Создание пустого управляемого диска
Прежде чем создать пустой стандартный HDD для отправки, вам потребуется размер файла виртуального жесткого диска, который требуется отправить, в байтах. Чтобы получить это значение, можно использовать 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. Для отправки виртуального жесткого диска на диск требуется доступный для записи SAS, чтобы вы могли ссылаться на него в качестве места назначения для отправки.
Внимание
15 февраля 2025 г. время доступа подписанного URL-адреса (SAS) для дисков и моментальных снимков будет ограничено не более 60 дней. Попытка создать SAS с истечением срока действия более 60 дней приводит к ошибке. Любой существующий диск или SAS моментального снимка, созданный с истечением срока действия более 60 дней, может перестать работать 60 дней после даты создания и приведет к ошибке 403 во время авторизации.
Если срок действия управляемого диска или sas моментального снимка превышает 60 дней, отмените доступ и создайте новый SAS, который запрашивает доступ в течение 60 дней (5 184 000 секунд) или меньше. Повышение общей безопасности с помощью SAS с более короткими датами окончания срока действия. Внесите эти изменения до 15 февраля 2025 г., чтобы предотвратить прерывание работы службы. Следующие ссылки можно использовать для поиска, отзыва и запроса нового SAS.
- Чтобы проверить, имеет ли диск активный SAS, можно использовать REST API, Azure CLI или модуль Azure PowerShell и проверить свойство DiskState .
- Чтобы отменить SAS, можно использовать REST API, Azure CLI или модуль Azure PowerShell.
- Чтобы создать SAS, можно использовать REST API, Azure CLI или модуль Azure PowerShell и задать длительность доступа в 5 184 000 секунд или меньше.
Чтобы создать записываемый 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 на управляемый диск можно подключить его в качестве диска данных либо диска ОС к имеющейся виртуальной машине, чтобы создать виртуальную машину.
Если у вас есть дополнительные вопросы, ознакомьтесь с разделом "Вопросы и ответы о передаче управляемого диска ".