今回は上記のコピーを含め、以降の大量インストールの作業はすべてスクリプトに落とし込んで自動化します。スクリプトファイルはこちらを参照してください。
以下に、スクリプトの仕組みをまとめましたので、流れに沿って見ていきましょう。
1.新しく作成するゲストOSの情報(ホスト名、IPアドレス、MACアドレスなど)を読み込む(注4)
注4:情報はあらかじめCSVファイル(/srv/vm_list.csv)で用意しておきます
2.基となるゲストOSのファイルをコピーする
3.コピーした新しいゲストOSのファイルをループバックデバイスとしてマウントする
4.ゲストOSの固有の設定ファイルを生成し、マウントしたファイルシステムに上書きする
5.ループバックデバイスをアンマウントする
6.ゲストOSの定義ファイルを生成し、/etc/xenに保存する
先ほどの手作業の手順と異なるのは、ゲストOS固有の設定ファイルを編集する方法です(3、4のステップが該当します)。先ほどは、ゲストOSを起動し、そのOS上でエディタを開き設定ファイルを編集しましたが、今回はわざわざゲストOSは起動させていません。
代わりに、ゲストOSが格納されたファイルをホストOSからマウントし、ホストOSが直接その中身にアクセスできるようにします。そして、編集対象のファイルをあらかじめ生成しておいたファイルで上書きします。
これで、すべてのインストール手順を自動化できます。当然、環境によってゲストOS固有の設定ファイルの種類や中身は異なってきますので、適宜環境に合わせて微修正する必要があるでしょう。なお、今回のスクリプトは、ゲストOSでLVMを使っている環境には対応していません。スクリプトを試す際には、コピー元となるゲストOSでLVMを使わないようにしてください。
ゲストOSのコピー時間を短縮する方法としては、QEMUが提供するコピー・オン・ライトファイル:qcowや、LVMのスナップショットも候補となります。
しかし、今回のRHEL5の検証環境では、qcowではゲストOSのファイルを正常に作成できなかったため、取り上げるのを見送りました。またLVMのスナップショットは、動作そのものには問題はなく、コピー時間(実際にはコピーはしていないのですが)も非常に短くて済みます。しかしその仕様上、最終的には実際の容量以上のディスクスペースを必要とするため、ゲストOSのベースには向かないと判断しました。
このスクリプトを使えば、1ゲストOS当たり、だいたい3分程度でインストールが完了します。所要時間の中で支配的なのは、2の「ゲストOSファイルのコピー」のステップなので、ディスクの性能によって若干インストール時間が変動します。とはいえ、Sparseファイルではない通常の30Gbytesのファイルをコピーするのに比べれば、圧倒的に短い時間で完了できるはずです。容量の節約以外に、コピー時間の短縮というのもSparseファイルの魅力です。
このようにSparseファイルにはディスク容量の節約やコピー時間の短縮といったメリットがありますが、デメリットもあります。
Sparseファイルはその構造上、データの書き込み時に、通常のファイルよりも余分にディスクI/Oが発生します。ハードウェア構成やアプリケーションの実装にも依存しますが、通常のファイルに比べ、書き込み性能はおおむね劣化します。詳しくは第2回を参照してください。
従って、頻繁にデータをディスクに同期させるようなアプリケーション、例えばデータベースをクエリ単位で同期を行うような設定では特に注意が必要です。逆に、ゲストOSにある程度メモリを割り当てており、アプリケーション側でも特段同期を行うような設定をしておらず、かつディスクコントローラにライトキャッシュが搭載されているような環境ならば、Sparseファイルのデメリットの影響もそれほど生じないはずです。Sparseファイルを採用するかどうかは、個々の環境をよく考慮したうえで適切に判断する必要があります。
今回は、ゲストOSを大量に展開する場合に必要となる手順を、スクリプトを交えて解説しました。また、Sparseファイルのメリットとデメリットについても説明しました。
Sparseファイルのように「実際にはないものをあるように見せてリソースの節約を図る」という考え方は、まさに仮想化の醍醐味(だいごみ)だと思います。興味を持っていただけたら、ぜひ実際に動かし、実際の運用に耐え得るかを検証していただければ幸いです。
次回、本連載の最終回では、仮想化システムの運用において重要なポイントとなる、ゲストOSへのハードウェアリソース配分にスポットを当てたいと思います。Xenではどのようなハードウェアリソースを制御できるのかを紹介し、その設定方法を解説します。
Copyright © ITmedia, Inc. All Rights Reserved.