Получение ошибки при создании управляемого диска из файла VHD в учетной записи хранения в той же подписке с CLI

Возникла проблема при создании управляемого диска из файла VHD в учетной записи хранения в той же подписке с интерфейсом командной строки.

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


#Provide the name of your resource group where snapshot is created
sourceResourceGroupName=""
drSnapshotResourceGroupName=""

#Provide storage account name where you want to copy the snapshot.
drSnapshotStorageAccountName=""

#Name of the storage container where the downloaded snapshot will be stored
storageContainerName=""

#Provide Shared Access Signature (SAS) expiry duration in seconds e.g. 3600.
#Know more about SAS here: https://docs.microsoft.com/en-us/azure/storage/storage-dotnet-shared-access-signature-part-1
sasExpiryDuration=36000

#Provide the key of the storage account where you want to copy snapshot.
storageAccountKey=$(az storage account keys list -g $drSnapshotResourceGroupName -n $drSnapshotStorageAccountName --query [0].value -otsv)

SNAPSHOT_NAMES=$(az snapshot list -g $sourceResourceGroupName --query "[?tags.COMPONENT== 'database'].name" --output tsv)

for snapshot_name in $SNAPSHOT_NAMES
do
        #Provide the snapshot name
        snapshotName=$snapshot_name

        #Provide the name of the VHD file to which snapshot will be copied.
        destinationVHDFileName="$snapshot_name.vhd"

     
        sas=$(az snapshot grant-access --resource-group $sourceResourceGroupName --name $snapshotName \
                --duration-in-seconds $sasExpiryDuration --query [accessSas] -o tsv)

        az storage blob incremental-copy start --destination-blob $destinationVHDFileName \
        --destination-container $storageContainerName --account-name $drSnapshotStorageAccountName \
        --account-key $storageAccountKey --source-uri $sas
done

Я пытаюсь создать управляемый диск из скопированного vhd в восточном регионе, используя az cli, используя приведенный ниже сценарий.

#Provide the name of your resource group where snapshot is created
drSnapshotResourceGroupName=""

#Provide the name of your resource group.
#Ensure that resource group is already created
drResourceGroupName=""

#Provide storage account name where you want to copy the snapshot.
drSnapshotStorageAccountName=""

#Name of the storage container where the downloaded snapshot will be stored
storageContainerName=""

#Provide the name of the Managed Disk
diskName=disknametocreatefromvhd

#Provide the size of the disks in GB. It should be greater than the VHD file size.
diskSize=512


#Provide the URI of the VHD file that will be used to create Managed Disk.
# VHD file can be deleted as soon as Managed Disk is created.
# e.g. https://contosostorageaccount1.blob.core.windows.net/vhds/contosovhd123.vhd
vhdUri=https://xxxxxxxxxxxxxxxxxx.blob.core.windows.net/asdf/abcd.vhd

#Provide the storage type for the Managed Disk. Premium_LRS or Standard_LRS.
storageType=Premium_LRS

#Provide the Azure location (e.g. westus) where Managed Disk will be located.
location=eastus

echo "Creating managed disk from the VHD file"

#Create the Managed disk from the VHD file
az disk create --resource-group ${drResourceGroupName} --name ${diskName} \
                --sku $storageType --location $location \
                --size-gb $diskSize --source $vhdUri

Получение ниже упомянутой ошибки в z disk create.

request failed: Error occurred in request., RetryError: HTTPSConnectionPool(host='management.azure.com', port=443): Max retries exceeded with url: /subscriptions/32d45ca1-b2dc-4370-a618-85e7756da78f/resourceGroups/DR02-Recovery/providers/Microsoft.Compute/disks/draas-snapshot-database-vm0-osdisk-asdf?api-version=2019-11-01 (Caused by ResponseError('too many 500 error responses',))

Добавляем сюда полный вывод отладки.

Command arguments: ['disk', 'create', '--resource-group', 'RG_NAME', '--name', 'abcd-osdisk', '--sku', 'Premium_LRS', '--location', 'eastus', '--size-gb', '512', '--source', 'https://storageaccountname.blob.core.windows.net/asdf/abcd-osdisk.vhd', '--debug']
Event: Cli.PreExecute []
Event: CommandParser.OnGlobalArgumentsCreate [<function CLILogging.on_global_arguments at 0x7fa05b4d5d90>, <function OutputProducer.on_global_arguments at 0x7fa05b2aad90>, <function CLIQuery.on_global_arguments at 0x7fa05b052048>]
Event: CommandInvoker.OnPreCommandTableCreate []
Installed command modules ['acr', 'acs', 'advisor', 'ams', 'apim', 'appconfig', 'appservice', 'aro', 'backup', 'batch', 'batchai', 'billing', 'botservice', 'cdn', 'cloud', 'cognitiveservices', 'configure', 'consumption', 'container', 'cosmosdb', 'deploymentmanager', 'dla', 'dls', 'dms', 'eventgrid', 'eventhubs', 'extension', 'feedback', 'find', 'hdinsight', 'interactive', 'iot', 'iotcentral', 'keyvault', 'kusto', 'lab', 'managedservices', 'maps', 'monitor', 'natgateway', 'netappfiles', 'network', 'policyinsights', 'privatedns', 'profile', 'rdbms', 'redis', 'relay', 'reservations', 'resource', 'role', 'search', 'security', 'servicebus', 'servicefabric', 'signalr', 'sql', 'sqlvm', 'storage', 'util', 'vm']
Loaded module 'acr' in 0.007 seconds.
Loaded module 'acs' in 0.008 seconds.
Loaded module 'advisor' in 0.001 seconds.
Event: CommandLoader.OnLoadCommandTable []
Loaded module 'ams' in 0.006 seconds.
Loaded module 'apim' in 0.002 seconds.
Loaded module 'appconfig' in 0.003 seconds.
Loaded module 'appservice' in 0.223 seconds.
Loaded module 'aro' in 0.005 seconds.
Loaded module 'backup' in 0.004 seconds.
Event: CommandLoader.OnLoadCommandTable []
Loaded module 'batch' in 0.028 seconds.
Loaded module 'batchai' in 0.003 seconds.
Loaded module 'billing' in 0.001 seconds.
Loaded module 'botservice' in 0.003 seconds.
Event: CommandLoader.OnLoadCommandTable []
Loaded module 'cdn' in 0.005 seconds.
Loaded module 'cloud' in 0.001 seconds.
Loaded module 'cognitiveservices' in 0.002 seconds.
Loaded module 'configure' in 0.001 seconds.
Loaded module 'consumption' in 0.002 seconds.
Loaded module 'container' in 0.002 seconds.
Loaded module 'cosmosdb' in 0.008 seconds.
Loaded module 'deploymentmanager' in 0.002 seconds.
Loaded module 'dla' in 0.004 seconds.
Loaded module 'dls' in 0.003 seconds.
Loaded module 'dms' in 0.002 seconds.
Loaded module 'eventgrid' in 0.002 seconds.
Loaded module 'eventhubs' in 0.004 seconds.
Loaded module 'extension' in 0.001 seconds.
Loaded module 'feedback' in 0.001 seconds.
Loaded module 'find' in 0.001 seconds.
Loaded module 'hdinsight' in 0.002 seconds.
Loaded module 'interactive' in 0.000 seconds.
Loaded module 'iot' in 0.005 seconds.
Loaded module 'iotcentral' in 0.001 seconds.
Loaded module 'keyvault' in 0.006 seconds.
Loaded module 'kusto' in 0.002 seconds.
Loaded module 'lab' in 0.003 seconds.
Loaded module 'managedservices' in 0.002 seconds.
Loaded module 'maps' in 0.001 seconds.
Loaded module 'monitor' in 0.009 seconds.
Loaded module 'natgateway' in 0.001 seconds.
Event: CommandLoader.OnLoadCommandTable []
Loaded module 'netappfiles' in 0.003 seconds.
Loaded module 'network' in 0.035 seconds.
Loaded module 'policyinsights' in 0.003 seconds.
Loaded module 'privatedns' in 0.005 seconds.
Loaded module 'profile' in 0.001 seconds.
Loaded module 'rdbms' in 0.008 seconds.
Loaded module 'redis' in 0.002 seconds.
Loaded module 'relay' in 0.003 seconds.
Loaded module 'reservations' in 0.002 seconds.
Loaded module 'resource' in 0.011 seconds.
Loaded module 'role' in 0.004 seconds.
Loaded module 'search' in 0.001 seconds.
Loaded module 'security' in 0.004 seconds.
Loaded module 'servicebus' in 0.005 seconds.
Loaded module 'servicefabric' in 0.003 seconds.
Loaded module 'signalr' in 0.002 seconds.
Loaded module 'sql' in 0.011 seconds.
Loaded module 'sqlvm' in 0.002 seconds.
Event: CommandLoader.OnLoadCommandTable []
Loaded module 'storage' in 0.042 seconds.
Loaded module 'util' in 0.001 seconds.
Loaded module 'vm' in 0.042 seconds.
Loaded all modules in 0.560 seconds. (note: there's always an overhead with the first module loaded)
Event: CommandInvoker.OnPreCommandTableTruncate [<function AzCliLogging.init_command_file_logging at 0x7fa05aa09950>]
az_command_data_logger : command args: disk create --resource-group {} --name {} --sku {} --location {} --size-gb {} --source {} --debug
metadata file logging enabled - writing logs to '/home/Test/.azure/commands'.
Event: CommandInvoker.OnPreArgumentLoad [<function register_global_subscription_argument.<locals>.add_subscription_parameter at 0x7fa05aa2cae8>]
Event: CommandInvoker.OnPostArgumentLoad []
Event: CommandInvoker.OnPostCommandTableCreate [<function register_ids_argument.<locals>.add_ids_arguments at 0x7fa05a9e1bf8>, <function register_cache_arguments.<locals>.add_cache_arguments at 0x7fa05a9e1d08>]
Event: CommandInvoker.OnCommandTableLoaded []
Event: CommandInvoker.OnPreParseArgs [<function _documentdb_deprecate at 0x7fa05898b1e0>]
Event: CommandInvoker.OnPostParseArgs [<function OutputProducer.handle_output_argument at 0x7fa05b2aae18>, <function CLIQuery.handle_query_parameter at 0x7fa05b0520d0>, <function register_ids_argument.<locals>.parse_ids_arguments at 0x7fa05a9e1c80>, <function handler at 0x7fa0587e6bf8>]
Getting management service client client_type=ComputeManagementClient
msrest.universal_http.requests : Configuring retry: max_retries=4, backoff_factor=0.8, max_backoff=90
urllib3.connectionpool : Starting new HTTP connection (1): localhost:50342
urllib3.connectionpool : http://localhost:50342 "POST /oauth2/token HTTP/1.1" 200 2054
msrestazure.azure_active_directory : MSI: Retrieving a token from http://localhost:50342/oauth2/token, with payload {'resource': 'https://management.core.windows.net/'}
urllib3.connectionpool : Starting new HTTP connection (1): localhost:50342
urllib3.connectionpool : http://localhost:50342 "POST /oauth2/token HTTP/1.1" 200 2054
msrestazure.azure_active_directory : MSI: Retrieving a token from http://localhost:50342/oauth2/token, with payload {'resource': 'https://management.core.windows.net/'}
msrest.http_logger : Request URL: 'https://management.azure.com/subscriptions/32d45ba1-b2dc-4370-a618-85e7756da78f/resourceGroups/RG_NAME/providers/Microsoft.Compute/disks/abcd-osdisk?api-version=2019-11-01'
msrest.http_logger : Request method: 'PUT'
msrest.http_logger : Request headers:
msrest.http_logger :     'Accept': 'application/json'
msrest.http_logger :     'Content-Type': 'application/json; charset=utf-8'
msrest.http_logger :     'accept-language': 'en-US'
msrest.http_logger :     'Content-Length': '461'
msrest.http_logger :     'User-Agent': 'python/3.6.10 (Linux-4.15.0-1089-azure-x86_64-with-debian-stretch-sid) msrest/0.6.9 cloud-shell/1.0 msrest_azure/0.6.3 azure-mgmt-compute/12.0.0 Azure-SDK-For-Python AZURECLI/2.8.0 (DEB)'
msrest.http_logger : Request body:
msrest.http_logger : {"location": "eastus", "tags": {}, "sku": {"name": "Premium_LRS"}, "properties": {"hyperVGeneration": "V1", "creationData": {"createOption": "Import", "storageAccountId": "/subscriptions/32d45ba1-b2dc-4370-a618-85e7756da78f/resourceGroups/RG_NAME/providers/Microsoft.Storage/storageAccounts/storageaccountname", "sourceUri": "https://storageaccountname.blob.core.windows.net/asdf/abcd-osdisk.vhd"}, "diskSizeGB": 512}}
msrest.universal_http : Configuring redirects: allow=True, max=30
msrest.universal_http : Configuring request: timeout=100, verify=True, cert=None
msrest.universal_http : Configuring proxies: ''
msrest.universal_http : Evaluate proxies against ENV settings: True
urllib3.connectionpool : Starting new HTTPS connection (1): management.azure.com:443
urllib3.connectionpool : https://management.azure.com:443 "PUT /subscriptions/32d45ba1-b2dc-4370-a618-85e7756da78f/resourceGroups/RG_NAME/providers/Microsoft.Compute/disks/abcd-osdisk?api-version=2019-11-01 HTTP/1.1" 500 125
urllib3.util.retry : Incremented Retry for (url='/subscriptions/32d45ba1-b2dc-4370-a618-85e7756da78f/resourceGroups/RG_NAME/providers/Microsoft.Compute/disks/abcd-osdisk?api-version=2019-11-01'): Retry(total=3, connect=4, read=4, redirect=None, status=None)
urllib3.connectionpool : Retry: /subscriptions/32d45ba1-b2dc-4370-a618-85e7756da78f/resourceGroups/RG_NAME/providers/Microsoft.Compute/disks/abcd-osdisk?api-version=2019-11-01
urllib3.connectionpool : Resetting dropped connection: management.azure.com
urllib3.connectionpool : https://management.azure.com:443 "PUT /subscriptions/32d45ba1-b2dc-4370-a618-85e7756da78f/resourceGroups/RG_NAME/providers/Microsoft.Compute/disks/abcd-osdisk?api-version=2019-11-01 HTTP/1.1" 500 125
urllib3.util.retry : Incremented Retry for (url='/subscriptions/32d45ba1-b2dc-4370-a618-85e7756da78f/resourceGroups/RG_NAME/providers/Microsoft.Compute/disks/abcd-osdisk?api-version=2019-11-01'): Retry(total=2, connect=4, read=4, redirect=None, status=None)

urllib3.connectionpool : Retry: /subscriptions/32d45ba1-b2dc-4370-a618-85e7756da78f/resourceGroups/RG_NAME/providers/Microsoft.Compute/disks/abcd-osdisk?api-version=2019-11-01
urllib3.connectionpool : Resetting dropped connection: management.azure.com
urllib3.connectionpool : https://management.azure.com:443 "PUT /subscriptions/32d45ba1-b2dc-4370-a618-85e7756da78f/resourceGroups/RG_NAME/providers/Microsoft.Compute/disks/abcd-osdisk?api-version=2019-11-01 HTTP/1.1" 500 125
urllib3.util.retry : Incremented Retry for (url='/subscriptions/32d45ba1-b2dc-4370-a618-85e7756da78f/resourceGroups/RG_NAME/providers/Microsoft.Compute/disks/abcd-osdisk?api-version=2019-11-01'): Retry(total=1, connect=4, read=4, redirect=None, status=None)

urllib3.connectionpool : Retry: /subscriptions/32d45ba1-b2dc-4370-a618-85e7756da78f/resourceGroups/RG_NAME/providers/Microsoft.Compute/disks/abcd-osdisk?api-version=2019-11-01
urllib3.connectionpool : Resetting dropped connection: management.azure.com
urllib3.connectionpool : https://management.azure.com:443 "PUT /subscriptions/32d45ba1-b2dc-4370-a618-85e7756da78f/resourceGroups/RG_NAME/providers/Microsoft.Compute/disks/abcd-osdisk?api-version=2019-11-01 HTTP/1.1" 500 125
urllib3.util.retry : Incremented Retry for (url='/subscriptions/32d45ba1-b2dc-4370-a618-85e7756da78f/resourceGroups/RG_NAME/providers/Microsoft.Compute/disks/abcd-osdisk?api-version=2019-11-01'): Retry(total=0, connect=4, read=4, redirect=None, status=None)


urllib3.connectionpool : Retry: /subscriptions/32d45ba1-b2dc-4370-a618-85e7756da78f/resourceGroups/RG_NAME/providers/Microsoft.Compute/disks/abcd-osdisk?api-version=2019-11-01
urllib3.connectionpool : Resetting dropped connection: management.azure.com
urllib3.connectionpool : https://management.azure.com:443 "PUT /subscriptions/32d45ba1-b2dc-4370-a618-85e7756da78f/resourceGroups/RG_NAME/providers/Microsoft.Compute/disks/abcd-osdisk?api-version=2019-11-01 HTTP/1.1" 500 125
msrest.exceptions : Error occurred in request., RetryError: HTTPSConnectionPool(host='management.azure.com', port=443): Max retries exceeded with url: /subscriptions/32d45ba1-b2dc-4370-a618-85e7756da78f/resourceGroups/RG_NAME/providers/Microsoft.Compute/disks/abcd-osdisk?api-version=2019-11-01 (Caused by ResponseError('too many 500 error responses',))


cli.azure.cli.core.util : request failed: Error occurred in request., RetryError: HTTPSConnectionPool(host='management.azure.com', port=443): Max retries exceeded with url: /subscriptions/32d45ba1-b2dc-4370-a618-85e7756da78f/resourceGroups/RG_NAME/providers/Microsoft.Compute/disks/abcd-osdisk?api-version=2019-11-01 (Caused by ResponseError('too many 500 error responses',))
request failed: Error occurred in request., RetryError: HTTPSConnectionPool(host='management.azure.com', port=443): Max retries exceeded with url: /subscriptions/32d45ba1-b2dc-4370-a618-85e7756da78f/resourceGroups/RG_NAME/providers/Microsoft.Compute/disks/abcd-osdisk?api-version=2019-11-01 (Caused by ResponseError('too many 500 error responses',))
Event: Cli.PostExecute [<function AzCliLogging.deinit_cmd_metadata_logging at 0x7fa05aa09b70>]
az_command_data_logger : exit code: 1
telemetry.save : Save telemetry record of length 5618 in cache
telemetry.check : Returns Positive.
telemetry.main : Begin creating telemetry upload process.
telemetry.process : Creating upload process: "/opt/az/bin/python3 /opt/az/lib/python3.6/site-packages/azure/cli/telemetry/__init__.py /home/vinayak/.azure"
telemetry.process : Return from creating process
telemetry.main : Finish creating telemetry upload process.
Command ran in 725.683 seconds (init: 0.048, invoke: 725.635)


person Vinayak Shinde    schedule 23.06.2020    source источник
comment
Не могли бы вы добавить --debug, чтобы получать сообщение об ошибке?   -  person Jim Xu    schedule 24.06.2020
comment
Я пытаюсь создать управляемый диск из файла VHD, источником которого является диск ОС. Также я хочу создать управляемый диск с данными из источника файла VHD - это диск данных.   -  person Vinayak Shinde    schedule 24.06.2020
comment
@JimXu Добавлены итоги полной отладки.   -  person Vinayak Shinde    schedule 24.06.2020
comment
Согласно моему исследованию, если мы используем Incremental Copy Blob для копирования API, большой двоичный объект может не получить контент. Таким образом, мы не можем использовать BLOB-объект для создания диска. Дополнительные сведения см. На сайте docs.microsoft.com / ru-ru / rest / api / storageservices /   -  person Jim Xu    schedule 29.06.2020
comment
@Jim Xu Как проверить, получил ли blob контент или нет? Я мог видеть успешное копирование статуса в свойствах большого двоичного объекта.   -  person Vinayak Shinde    schedule 02.07.2020


Ответы (1)


На данный момент это мои выводы о различных сценариях инкрементного снимка Azure.

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

Теперь этот диск можно экспортировать или скопировать в другой регион.

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

Единственный способ скопировать добавочный моментальный снимок - использовать большой двоичный объект моментального снимка и скопированный большой двоичный объект, а затем получить дифференциальные PagesRanges и Use PutPages для применения изменений.

Затем сделайте снимок резервного Page Blob и сохраните его в учетной записи хранения.

Найдите этот документ об использовании инкрементного снимка для резервного копирования https://docs.microsoft.com/en-us/azure/virtual-machines/windows/incremental-snapshots#incremental-snapshot-copy

И это документы кода .Net для копирования инкрементальных снимков в другой регион

https://github.com/Azure-Samples/managed-disks-dotnet-backup-with-incremental-snapshots

Для использования для инкрементного снимка в качестве аварийного восстановления / отработки отказа в другой регион с помощью Azure CLI, PowerShell или любого SDK.

person Vinayak Shinde    schedule 13.07.2020