Windows Azure仮想マシンのディスク容量課金が更にお得になった話

ページBLOBの利点と惜しい点

Windows Azure仮想マシンには、システムディスクとなる「OSディスク」と、後から追加できる「データディスク」という2種類の永続ディスクがあります。これらの実体はWindows Azureストレージの「ページBLOB」として格納されたVHDファイルです。

一つのディスクのサイズは最大1023 GB (ほぼ1 TB)で、仮想マシン1台当たり、最大16本のデータディスクを装備できるので、およそ16 TBのストレージを利用できることになります。

そして、意外と知られていませんが、このディスクの容量に対する課金は、「ディスクのサイズに応じて一律に」発生するのではなく、「書き込まれたデータ量に応じて」行われます。1 TBのでっかいディスクを付けても、いきなり1 TB分の課金が発生するわけではない、ということです。このあたりについては、下記のブログエントリにも記述があります。

データ シリーズ: Windows Azure のドライブ、ディスク、イメージについて

Windows Azure ストレージにはページ Blob が格納されおり、さらにその中に VHD が疎なフォーマットで格納されています。VHD 内のデータに対する課金は、VHD の使用期間内に実際に書き込みが行われた分だけが対象となります。

しかし、注意すべき点もあって、一旦BLOBに書き込んでしまったページに関しては、ゲストOS側でファイルを削除しても、BLOBのページまで消えるわけではなく、引き続き課金の対象となってしまいます。前述のブログではこの点に関しても言及があります。

ディスクまたはドライブで削除したデータの Blob 領域に対しても、ストレージ容量に対する課金が続行される可能性があるので注意が必要です。

改善点

さて、実は私も知らなかったのですが、”Rapid Release”を身上とする新世代マイクロソフトのさらに最先端にいるWindows Azureでは、この点がいつの間にか改善されていました。

ゲストOSでファイルを削除すると、対応するBLOBのページも解放され、課金対象から外れます

地味ですが実質的な改善ですよね!

実験

さて、とは言え課金にかかわる変更なので、実際の動きを確かめてみなければ多少不安です。やってみましょう。

実験用の仮想マシンは既存のやつで十分なのですが、せっかくなのでギャラリーに追加されたばかりのWindows Server 2012 R2イメージから新規作成してみました。

image

できました。左下のスタートボタンがR2の印。

image

データディスクの追加

こいつに、Windows Azure管理ポータルからデータディスクを1台追加します。この際なので最大の1023 GBを指定!

image

接続が完了すると、管理ポータルからもこのように確認できます。

image

VHDのURLは https://ksasiaeast02c.blob.core.windows.net/vhds/sasa1020-sasa1020-1021-1.vhd です。

では、ゲストOSにデータディスクを認識させます。diskmgmt.msc を起動して、

image

とりあえず初期化してオンラインにしました。まだフォーマットはしていません。

image

割り当て済みサイズを確認

さて、ここで秘密のツール(後述)で「BLOB内で実際に使われている(ページが割り当てられている)サイズ」を調べてみます。

こうでました↓

1024/1098437886464 0.0/1023 (0.0% used) sasa1020-sasa1020-1021-1.vhd

項目は左から、

割当済(Bytes)/全体(Bytes)   割当済(GB)/全体(GB)  使われている割合(%)  VHDの名前

という感じです。1 TB中、1024バイトだけ使われていることがわかります。初期化することでディスク署名が書き込まれますから、その領域だと思われます。

フォーマットしてみる

次に、ディスクをフォーマットしてみましょう。

image

そしてもう一度、割り当て済みのサイズを確認してみます。

こうでました↓

123221504/1098437886464 0.1/1023 (0.0% used) sasa1020-sasa1020-1021-1.vhd

100 MBちょっとですね。ファイルシステムを作るとそのメタデータでこれぐらい場所を取るわけです。

ファイルを置いてみる

「書き込みに応じてページ割り当てが増えていく」ことを確認するには以上で十分なのですが、ここではもう一つ、今度はファイルをダウンロードしてみましょう。666 MBほどのHPC Pack 2012 SP1です。

F:\>dir
Volume in drive F is New Volume
Volume Serial Number is 0E63-903F

Directory of F:\

10/20/2013 03:54 PM 699,044,996 HPCPack2012SP1-Full.zip
1 File(s) 699,044,996 bytes
0 Dir(s) 1,097,513,713,664 bytes free

すると割り当て済みサイズは?

822271488/1098437886464 0.8/1023 (0.1% used) sasa1020-sasa1020-1021-1.vhd

順当に増えましたね。この「割り当て済みのサイズ」が、課金対象となるわけです。

ファイルを削除したら?

では、ダウンロードしたばかりのファイルを、今度は削除してみましょう。

F:\>del HPCPack2012SP1-Full.zip

F:\>dir
Volume in drive F is New Volume
Volume Serial Number is 0E63-903F

Directory of F:\

File Not Found

ファイルシステム上では確かに消えました。BLOBの割り当て済みサイズはどうなるでしょうか。(以前は、減らなかったのです)

123225600/1098437886464 0.1/1023 (0.0% used) sasa1020-sasa1020-1021-1.vhd

ちゃんとBLOBのページも減りました!

ということは、課金もその分減っているということです。これで、細かいことを気にせずに大きめのデータディスクを接続できますね。

ついでに、フルフォーマットしたら?

以前は、
「フルフォーマットすると、フォーマット処理自体によってディスクの先頭から最後まで書き込んでしまうので、いきなり全体が課金対象になってしまいます。必ずクイックフォーマットしてください」
と、お伝えしていたのですが、今回の改良でどうなったでしょう。書き込むこと自体には変わりないので普通に課金対象?あるいは0の書き込みはスキップされるような工夫がされている?

先ほどの1023 GBディスクのフルフォーマットを試すと時間がかなりかかってしまうので、1 GBの小さいディスクを追加して試してみます。

まず、初期化したばかりの状態。

1024/1073742336 0.0/1 (0.0% used) sasa1020-sasa1020-1021-2.vhd

フルにフォーマットしちゃいます。

image

フォーマット中・・・

image

フォーマット完了。さて割り当て済みサイズは?

1070560256/1073742336 1.0/1 (99.7% used) sasa1020-sasa1020-1021-2.vhd

いやー!見事に書き込まれてしまいました。この点は今まで通りですね。

ぜひ今後ともクイックフォーマットでお願いします!

まとめ

  • BLOBは本当に「使った分だけ」課金される。
  • ゲストOS側でファイルを削除すれば、その分課金も減る。
  • フルフォーマットは依然として要注意!

※ この記事で使った「BLOBの割り当て済みサイズを取得するツール」はこちら

__END__