昨日、twitter で Azureがデフォルトで提供している Virtual Machines (VMs) のイメージはデフォルトで 30GB / 空き 20 GB 程度になっているがこれでセキュリティパッチ適用をしながら運用するとどれくらい持つと思いますかという質問がありました。
これについて自分なりの考えをまとめてみたいと思います。
個人的な考えですので免責事項にのっとりほげほげですのでご了承くださいませ。
■VMs の基本的なディスク構成
ぺんぎんししょーの Windows Azure Virtual Machinesの概要 がとても参考になります。
VMs のディスクですが以下のような構成になっています。
# ギャラリーにデフォルトで登録されている 2008 R2 SP1 のイメージを使用しています。
こちらが自分でアップロードした VHD で VMs を作成した際のディスク構成になります。
ディスク 0 として OS のブートディスク、ディスク 1 としてテンポラリストレージが接続されているという構成は変わりません。
自分でアップロードした VHD を使用した場合、ディスクサイズが柔軟に設定できますので、C ドライブのサイズはギャラリーのものより増やすことができますが。
ディスク 0 は自分のサブスクリプションの BLOB ストレージ上に保存されていますので永続化領域として使用することができます。
実際のファイルは Storege Explorer 等で BLOB ストレージに接続することで確認することができます。
# Quick Create で作成した場合は、使用するストレージアカウントの選択ができませんので、任意の場所に保存ずることができないので注意が必要ですが。
VMs による 仮想マシンの作成はギャラリーまたは独自にアップロードした VHD のコピーを作成してそのコピーで仮想マシンを作成するという動作になるようですので、ベースとなるイメージに変更はされないようです。
また、サイズを見るとわかるのですが、オンプレミスで可変長のディスクとして作成したとしても Blob ストレージでは固定長でサイズがとられるようですので、C ドライブを大きく作成してしまっているとストレージの消費量が大きくなるので注意が必要そうです。
デバイスマネージャー上はどちらも VHD を接続していると認識されていますが、BLOB ストレージ上に保存されている VHD はディスク 0 のものだけですので、ディスク 1 に関してはテンポラリ用の非永続領域として扱う必要があります。
追加の永続化領域が必要になった場合は新しい永続化ディスクを追加するということができますので別ディスクとして容量を増やすことは可能かと。
■ページファイルはディスク 1 に保存される
C ドライブの容量を消費する原因としてページファイルの存在があります。
OS インストール直後のデフォルトの設定では C ドライブに物理メモリと同サイズのページングファイルが作成されているかと思います。
Azure の VMs ではページングファイルは D ドライブに作成されるようになっています。
これは一般化した VHD を独自アップロードした場合も同様の設定になります。
この設定ですが VMs を展開する際に使用される応答ファイル内の RunSynchronousCommand で C:WindowsOEMUnattend.wsf を実行することで設定が変更されているようです。
# C:WindowsPanhterUnattend.xml から確認することができます。
この設定は specialize セクションのコマンドになりますので [一般化しない sysprep] でも実行されると思いますが、sysprep を実行していない場合などはこのあたりの設定がされないことになります。
# そもそも一般化した sysprep を実行しておかないとサポートされないかもですが。
Azure の VMs では Azure 上に展開するための独自の応答ファイルが使用されているというのは意識をしておく必要があるかと。
少し脱線してしまいましたが VMs ではページファイルは永続化されたシステム領域 (ディスク 0) ではなく非永続化の一時領域に作成されるように設定されますのでシステムドライブの使用量を抑えることができる設定が自動でされるようです。
Windows マシンを運用されている方は [この状態でクラッシュダンプが取得できるのか] ということが気になるかと思います。
この辺りは富士通さんが出している、Windows Server 2008/Windows Server 2008 R2 大容量メモリダンプファイル設計ガイド がとても参考になります。
Windows Server 2008 R2 では、システム領域を使用せずデータ領域の pagefile.sys を使用して、完全メモリダンプを生成することが可能になっています。
Azure の VMs はこのための設定となっているようですので、完全メモリダンプを出力する必要になった場合にも C ドライブに pagefile.sys を作成せずに運用ができるかと思います。
カーネルメモリダンプの出力先に関しては、%SYSTE
MROOT%MEMORY.dmp になっていますが、既存のファイルがあった場合は上書きされ、おそらく数ギガの範囲に収まると思いますのでデフォルトの 20GB 程度あいている状態であれば問題はないかと。
■で、C ドライブの容量は足りているのか
ギャラリーから作成した直後の状態で 20GB 程度、C ドライブの空きがあるのですが個人的にはこれだけ空きがあれば十分に運用できるかと思います。
先ほどの富士通さんの資料に Windows OS の推奨サイズの参考情報が記載されています。
このサイズは修正プログラムを適用しながらの運用も考慮されており、VMs の 30 GB / 空き 20 GB でもパッチを適用しながら運用できるという情報のベースになると思います。
なお、この試算は数回の SP 適用も考慮されたサイズになっているようです。
# 素の OS の状態での考えですので、他のミドルウェアが入っている場合はそのフットプリント + パッチ分を考慮する必要がありますが。
Windows Server 2008 R2 SP1 を適用する際には空きが 9GB ~ 10GB 程度必要だったかと思います。
これは現状の空き領域である 20GB にもはまりますので、新しい SP が適用された際にも十分に適用が可能なサイズとなっていると思います。
また、SP1 の際には SP1 のアンインストール用のファイルを消すことで適用後にディスクの使用量を軽減するということができましたので、次の SP も同じ仕様になっていれば適用後の容量の削減も可能かと思います。
インストールする必要があるミドルウェアがあり、それがシステムドライブの領域を大量に消費するという場合にはギャラリーにデフォルトで用意されているイメージを使用するのではなく、適切なサイズ (ミドルウェアの増分を加味した) で C ドライブを作成した VHD をアップロードすることで柔軟に対応できると思いますので、30GB というサイズは実のところあまり気にしないでもよいのかな~と思ったりもしています。
# というっても大きなサイズで VHD 作ってしまうとストレージの消費量が多くなるので課金に気を付ける必要がありますが。
なんだかんだで、あまりまとまっていませんが自分なりの考えをつらつらと。
SQL Server 2012 のテンプレから作った VM の C ドライブはカツカツですね (^^;
数 GB しか空きがないので、あのままだと実運用はちょっと厳しいかもしれません。
Hiroaki SHIBUKI (@hidori)
2 7月 12 at 10:30
あのイメージは Data Tools まで入った全部入りですのでかなり消費していますよね。
ストレージエンジンだけなら何とかなるかな~と思いますが、確かのあのイメージに関しては少し厳しいかもしれないですね。
Masayuki.Ozawa
2 7月 12 at 12:57