Azure CLI VHD 上传在 0.5% 时失败

Azure CLI VHD upload failing at 0.5 %

所以,我已经尝试了几个小时将 VHD 上传到 Azure。
我通过在另一个域的一个 Azure 租户上导出来下载 VHD,现在我正在尝试将它上传到另一个 Azure 帐户以将其附加到 VM。
步骤(based on this article):

一开始上传就卡在0.5%,大约55分钟后就提示上传失败。

日志文件:

2021/02/12 20:08:27 0.5 %, 0 Done, 0 Failed, 1 Pending, 0 Skipped, 1 Total, 2-sec Throughput (Mb/s): 14.1551
2021/02/12 20:08:28 INFO: [P#0-T#0] Page blob throughput tuner: Target Mbps 4048
2021/02/12 20:08:29 INFO: [P#0-T#0] Page blob throughput tuner: Target Mbps 4054
2021/02/12 20:08:29 PERF: primary performance constraint is Unknown. States: X:  0, O:  0, M:  0, L:  0, R:  1, D:  0, W: 480, F:  0, B: 96, E:  0, T: 577, GRs: 96
2021/02/12 20:08:29 0.5 %, 0 Done, 0 Failed, 1 Pending, 0 Skipped, 1 Total, 2-sec Throughput (Mb/s): 11.1397
2021/02/12 20:08:30 INFO: [P#0-T#0] Page blob throughput tuner: Target Mbps 4060
2021/02/12 20:08:31 INFO: [P#0-T#0] Page blob throughput tuner: Target Mbps 4066
2021/02/12 20:08:31 ==> REQUEST/RESPONSE (Try=1/11.1957784s[SLOW >3s], OpTime=11.1957784s) -- REQUEST ERROR
   PUT [redacted SAS url]
   Content-Length: [4194304]
   User-Agent: [AzCopy/10.8.0 Azure-Storage/0.10 (go1.13; Windows_NT)]
   X-Ms-Client-Request-Id: [redacted]
   X-Ms-Page-Write: [update]
   X-Ms-Range: [bytes=398458880-402653183]
   X-Ms-Version: [2019-12-12]
   --------------------------------------------------------------------------------
   ERROR:
-> github.com/Azure/azure-pipeline-go/pipeline.NewError, /home/vsts/go/pkg/mod/github.com/!azure/azure-pipeline-go@v0.2.3/pipeline/error.go:157
HTTP request failed

Put [redacted SAS url]: net/http: TLS handshake timeout

goroutine 214 [running]:
github.com/Azure/azure-storage-azcopy/ste.stack(0xc092e4ea20, 0xc04e193300, 0x0)
    /home/vsts/work/1/s/ste/xferLogPolicy.go:232 +0xa4
github.com/Azure/azure-storage-azcopy/ste.NewRequestLogPolicyFactory.func1.1(0xdb74a0, 0xc000653560, 0xc001189300, 0x10, 0x3, 0x0, 0xc00168fa20)
    /home/vsts/work/1/s/ste/xferLogPolicy.go:146 +0x7ac
github.com/Azure/azure-pipeline-go/pipeline.PolicyFunc.Do(0xc00175c640, 0xdb74a0, 0xc000653560, 0xc001189300, 0xc00168faf0, 0x2030004, 0xa, 0x2030005)
    /home/vsts/go/pkg/mod/github.com/!azure/azure-pipeline-go@v0.2.3/pipeline/core.go:43 +0x4b
github.com/Azure/azure-storage-azcopy/ste.NewVersionPolicyFactory.func1.1(0xdb74a0, 0xc000653560, 0xc001189300, 0xc0010cac40, 0xc0010cabf0, 0x40c7c0, 0xc00175c6e0)
    /home/vsts/work/1/s/ste/mgr-JobPartMgr.go:78 +0x1b8
github.com/Azure/azure-pipeline-go/pipeline.PolicyFunc.Do(0xc00126c2e0, 0xdb74a0, 0xc000653560, 0xc001189300, 0x10, 0x10, 0xb939e0, 0xa)
    /home/vsts/go/pkg/mod/github.com/!azure/azure-pipeline-go@v0.2.3/pipeline/core.go:43 +0x4b
github.com/Azure/azure-storage-blob-go/azblob.responderPolicy.Do(0xda72e0, 0xc00126c2e0, 0xc0011b0820, 0xdb74a0, 0xc000653560, 0xc001189300, 0x0, 0x12e2360, 0xc0010cac50, 0x4310d8)
    /home/vsts/go/pkg/mod/github.com/!azure/azure-storage-blob-go@v0.10.1-0.20201022074806-8d8fc11be726/azblob/zz_generated_responder_policy.go:33 +0x5a
github.com/Azure/azure-storage-blob-go/azblob.anonymousCredentialPolicy.Do(...)
    /home/vsts/go/pkg/mod/github.com/!azure/azure-storage-blob-go@v0.10.1-0.20201022074806-8d8fc11be726/azblob/zc_credential_anonymous.go:54
github.com/Azure/azure-storage-azcopy/ste.(*retryNotificationPolicy).Do(0xc001234560, 0xdb74a0, 0xc000653560, 0xc001189300, 0x0, 0x0, 0x0, 0xc0010cad70)
    /home/vsts/work/1/s/ste/xferRetryNotificationPolicy.go:59 +0x62
github.com/Azure/azure-pipeline-go/pipeline.PolicyFunc.Do(0xc0012345c0, 0xdb74a0, 0xc000653560, 0xc001189300, 0xc000653560, 0xc001234dd0, 0xc000000001, 0x0)
    /home/vsts/go/pkg/mod/github.com/!azure/azure-pipeline-go@v0.2.3/pipeline/core.go:43 +0x4b
github.com/Azure/azure-storage-azcopy/ste.NewBlobXferRetryPolicyFactory.func1.1(0xdb74e0, 0xc0001c7440, 0xc001189200, 0x10, 0xb411a0, 0x64492d747301, 0xc00168f340)
    /home/vsts/work/1/s/ste/xferRetrypolicy.go:384 +0x70f
github.com/Azure/azure-pipeline-go/pipeline.PolicyFunc.Do(0xc00175c690, 0xdb74e0, 0xc0001c7440, 0xc001189200, 0xc00168f440, 0x30, 0x28, 0x8)
    /home/vsts/go/pkg/mod/github.com/!azure/azure-pipeline-go@v0.2.3/pipeline/core.go:43 +0x4b
github.com/Azure/azure-storage-blob-go/azblob.NewUniqueRequestIDPolicyFactory.func1.1(0xdb74e0, 0xc0001c7440, 0xc001189200, 0x10, 0xb411a0, 0x40d001, 0xc00168f340)
    /home/vsts/go/pkg/mod/github.com/!azure/azure-storage-blob-go@v0.10.1-0.20201022074806-8d8fc11be726/azblob/zc_policy_unique_request_id.go:19 +0xb5
github.com/Azure/azure-pipeline-go/pipeline.PolicyFunc.Do(0xc00126c320, 0xdb74e0, 0xc0001c7440, 0xc001189200, 0xc00168f428, 0x35, 0xc0007d03c0, 0xc0010cb138)
    /home/vsts/go/pkg/mod/github.com/!azure/azure-pipeline-go@v0.2.3/pipeline/core.go:43 +0x4b
github.com/Azure/azure-storage-blob-go/azblob.NewTelemetryPolicyFactory.func1.1(0xdb74e0, 0xc0001c7440, 0xc001189200, 0x1, 0x0, 0x1, 0xc0017100a0)
    /home/vsts/go/pkg/mod/github.com/!azure/azure-storage-blob-go@v0.10.1-0.20201022074806-8d8fc11be726/azblob/zc_policy_telemetry.go:34 +0x164
github.com/Azure/azure-pipeline-go/pipeline.PolicyFunc.Do(0xc0001c74d0, 0xdb74e0, 0xc0001c7440, 0xc001189200, 0xc0001c74d0, 0xc001189200, 0xc0010cb208, 0x40d06f)
    /home/vsts/go/pkg/mod/github.com/!azure/azure-pipeline-go@v0.2.3/pipeline/core.go:43 +0x4b
github.com/Azure/azure-pipeline-go/pipeline.(*pipeline).Do(0xc0007ce040, 0xdb74e0, 0xc0001c7440, 0xda73e0, 0xc0011b0820, 0xc001189200, 0x30, 0xc000000638, 0x12, 0x0)
    /home/vsts/go/pkg/mod/github.com/!azure/azure-pipeline-go@v0.2.3/pipeline/core.go:129 +0x88
github.com/Azure/azure-storage-blob-go/azblob.pageBlobClient.UploadPages(0xc000000600, 0x5, 0x0, 0x0, 0x0, 0xc000000608, 0x30, 0xc000000638, 0x12, 0x0, ...)
    /home/vsts/go/pkg/mod/github.com/!azure/azure-storage-blob-go@v0.10.1-0.20201022074806-8d8fc11be726/azblob/zz_generated_page_blob.go:805 +0x5b0
github.com/Azure/azure-storage-blob-go/azblob.PageBlobURL.UploadPages(0xc000000600, 0x5, 0x0, 0x0, 0x0, 0xc000000608, 0x30, 0xc000000638, 0x12, 0x0, ...)
    /home/vsts/go/pkg/mod/github.com/!azure/azure-storage-blob-go@v0.10.1-0.20201022074806-8d8fc11be726/azblob/url_page_blob.go:87 +0x336
github.com/Azure/azure-storage-azcopy/ste.(*pageBlobUploader).GenerateUploadFunc.func1()
    /home/vsts/work/1/s/ste/sender-pageBlobFromLocal.go:96 +0x8f3
github.com/Azure/azure-storage-azcopy/ste.createChunkFunc.func1(0x3c)
    /home/vsts/work/1/s/ste/sender.go:179 +0x1ae
github.com/Azure/azure-storage-azcopy/ste.(*jobsAdmin).chunkProcessor(0xc000054000, 0x3c)
    /home/vsts/work/1/s/ste/JobsAdmin.go:433 +0xe6
created by github.com/Azure/azure-storage-azcopy/ste.(*jobsAdmin).poolSizer
    /home/vsts/work/1/s/ste/JobsAdmin.go:362 +0x682

2021/02/12 20:08:31 ==> REQUEST/RESPONSE (Try=1/11.1957784s[SLOW >3s], OpTime=11.1957784s) -- REQUEST ERROR
   PUT [redacted SAS url]
   Content-Length: [4194304]
   User-Agent: [AzCopy/10.8.0 Azure-Storage/0.10 (go1.13; Windows_NT)]
   X-Ms-Client-Request-Id: [redacted]
   X-Ms-Page-Write: [update]
   X-Ms-Range: [bytes=394264576-398458879]
   X-Ms-Version: [2019-12-12]
   --------------------------------------------------------------------------------
   ERROR:
-> github.com/Azure/azure-pipeline-go/pipeline.NewError, /home/vsts/go/pkg/mod/github.com/!azure/azure-pipeline-go@v0.2.3/pipeline/error.go:157
HTTP request failed

它就这样持续了数千行,在日志的末尾是这样的:

2021/02/12 19:56:56 INFO: [P#0-T#0] Page blob throughput tuner: Target Mbps 98705
2021/02/12 19:56:57 ==> REQUEST/RESPONSE (Try=14/2m0.3843703s[SLOW >3s], OpTime=38m15.4275233s) -- RESPONSE STATUS CODE ERROR
   PUT https://md-impexp-vpwbn0cr4mj2.z18.blob.storage.azure.net/3ntgq1cq2rsj/abcd?comp=page&si=a01312d5-4da8-41d1-acc6-7466f702a447&sig=-REDACTED-&sr=b&sv=2018-03-28&timeout=901
   Content-Length: [4194304]
   User-Agent: [AzCopy/10.8.0 Azure-Storage/0.10 (go1.13; Windows_NT)]
   X-Ms-Client-Request-Id: [36e705e8-9f5d-45a1-4574-7e994292da82]
   X-Ms-Page-Write: [update]
   X-Ms-Range: [bytes=398458880-402653183]
   X-Ms-Version: [2019-12-12]
   --------------------------------------------------------------------------------
   RESPONSE Status: 500 Operation could not be completed within the specified time.
   Content-Length: [246]
   Content-Type: [application/xml]
   Date: [Fri, 12 Feb 2021 19:56:56 GMT]
   Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
   X-Ms-Client-Request-Id: [36e705e8-9f5d-45a1-4574-7e994292da82]
   X-Ms-Error-Code: [OperationTimedOut]
   X-Ms-Request-Id: [f91ed41a-c01e-0008-4f78-011552000000]
   X-Ms-Version: [2019-12-12]
Response Details: <?xml version="1.0" encoding="utf-8"?> <Error><Code>OperationTimedOut</Code><Message>Operation could not be completed within the specified time. </Message>

那我做错了什么?尝试了 CLI 和 PowerShell。

我自己偶然发现了一个很好的解决方案:
由于我上传的是 Azure 上已有磁盘的 VHD,我没有使用下载的 VHD,而是使用原始 VHD 导出 URL 作为磁盘源。