1TBのVHDをAzureからダウンロードしてリサイズしたときの手順のざっくりメモ

samatsu 7/24/2020 2887 N/A Windows General

Azure上で、スナップショットまたはマネージドディスクをエクスポートして生成したSAS URI経由で1TBのVHDファイルをダウンロードする機会が幸運?にも恵まれて苦労したので手順の覚書。

外付けのHDDに直接ダウンロードしたせいか失敗しまくったり、ダウンロードしたvhdファイルが壊れるなどとんでもなく時間を浪費したので、こうすれば結局簡単だったという覚書です。ちなみに何回かダウンロード中にエラーで失敗しましたが、超巨大なファイルをコピーする場合はAzCopyの失敗した場所から /Z オプションで再開できるレジューム機能便利だと感じました。最新のV10 の AzCopy の使い方は少し変わっているようですが。今回はAzCopyのV8を使用しています。

最初AzCopyとかAzure Storage Explorer とか使ってダウンロードすればよいかと思ったのですが、VHDが壊れたり、レジュームしても何度もエラーで終了してくじけました。以前ローカルのHDDにダウンロードしたときにはAzCopyでダウンロードできたので行けると思ったのですが、今の環境にそのような大容量のHDDないので2TBの外付けUSBで実施するしかありませんでした。

なので最終的にどうしたかというと Azureの仮想マシン上で2TBのデータディスクを追加してそこにダウンロードしました。ネットワークはるかに高速ですし。Azureネイティブの方からすると当然の結論かもしれません。

AzCopyを使用しましたが、azure cli とか Storage Explorererでもできるかもしれません。いずれにしよデータディスクにvhdをダウンロードしました。コマンドの使い方はリファレンスなどを参照してください。とくに特別なことはしていません。

ダウンロードに再成功したら、 リサイズしてあげます。

私は今回、 Convert-VHD コマンドを使用して、 ダイナミック形式のVHDXファイルに変換しました。そうすると実際使用しているサイズのVHDXファイルを作成できます。これだけで十分な場合は、あとは、そのファイルをローカルにダウンロードしてそのまま使うことができると思います。

例えば次のコマンドを使用して変換します。

Convert-VHD -Path "E:\from.vhd" -DestinationPath "E:\to.vhdx" -VHDType Dynamic

Convert-VHDコマンドを使用する場合は、役割と機能の追加でHyper-Vの役割をインストールする必要があります。

今回は、vhdxファイルのサイズも変更しました。vhdxをマウントしたところ次のようになっていました。未割当領域が900GB位あります。この900GBのおかげでえらい苦労をしていたということになります。

なので、マウントを解除した後に、Resize-VHDコマンドで未割当領域を一気に削除しました。

Resize-VHD -Path "E:\to.vhdx" -ToMinimumSize

コマンドを実行した後に、再度マウントしたところ、未割当領域がなくなっていることが分かります。

これですっきりしました。今回は、Resize-VHDコマンドやConvert-VHDコマンド使いましたが、Hyper-Vマネージャー上のUIを使って、VHDを変換したり、未割当領域を削除して、VHDのサイズを縮小することもできます。

この作業で数日間を浪費したので、どなかたの参考になれば幸いです。