CSUploadというコマンドラインツールがございまして、
AzureStorageに対してVHDをPageBlobとしてアップロードする時等に利用します。
私が利用したケースとしてはAzure仮想マシンで作成したVHDを自分のPCにダウンロードしてVHDサイズ拡張をして再度戻す時に利用しました。
Azure仮想マシン上でCentOSを利用したサーバを作成したのですが、デフォルトで30GしかVHDの容量が無いため、もう少し拡張したいなって思ったのがきっかけです。仮想マシンのVHDマウント機能を利用すれば容量の拡張自体は簡単にできますが、メインドライブが30Gってのもイケてないなと・・・。
AzureSDKに含まれるツールですのでAzureSDKをインストールすれば利用できます。
AzureSDKの1.6以上を利用している場合は
C:\Program Files\Microsoft SDKs\Windows Azure.NET SDK
にインストールされていると思います。
CSUploadはbinフォルダにあります。
使い方
Windows Azure Command Prompを管理者権限で起動して下記のスクリプトを実行すれば実施されます。
スタートメニュー → すべてのプログラム → WindowsAzure → Windows Azure SDK for .NET → [インストールしたSDKバージョン] → Windows Azure Command Promp
set _CSVERBOSE=1 csupload Set-Connection "SubscriptionId=サブスクリプションID; CertificateThumbprint=証明書サムプリント; ServiceManagementEndpoint=https://management.core.windows.net" csupload Add-PersistentVMImage -Destination "http://【Azureストレージ名】.blob.core.windows.net/【コンテナ名】/test.vhd" -Label "Linux CentOS 6.3" -LiteralPath "D:\test.vhd" -OS Linux
-Labelや-OSなどの指定は各VHDにインストールされているOSバージョン毎に設定してください。
注意1
Azure管理証明書がアップロードクライアントPCにインストールされている必要があります。
CertificateThumbprintの箇所にはインストールされているAzure管理証明書のサムプリントを記載してください。
注意2
OSイメージとして作成したVHDの最大容量は現段階で127GBです。
それ以上の容量で作成したVHDは仮想マシンを作成する時にエラーになるので注意してください。
以前に私が実施したケースでは100GのVHDを100Mbpsの回線でアップロードしたところ1時間くらいでアップロードできました。これはVHDの実使用量部分だけアップロードしているためです。
CSUploadは初めにAzureStorage上に全体容量分のPageBlobを作成し、その後に実使用量クラスタ分をアップロードする仕様になっています。
Azure仮想マシンの中身はHyper-Vなので自前で作成したVHDをアップロードして作成することも可能です。
但し、Azure用のお作法がある為、そのままVHDをアップロードしても利用できません。
そこら辺の話はまたの機会に記載します。
コメント