ゲストシステムの設定
ここまでは順調だ。そろそろ、いくつかのテンプレート入手してゲストOSの設定に移るとしよう。OpenVZのダウンロードサイトには、Fedora Coreのいくつかのバージョン、Debian Sarge、Debian Etch、CentOS、Gentoo、Mandriva、OpenSUSEなど、あらかじめ作成されたOSテンプレートが存在する。ただし、テンプレートはプロセッサごとに異なるので、x86システム上で実行するのにAMD64やUltraSPARC用のテンプレートをダウンロードしたりしないように注意すること。
また、OpenVZコミュニティによるOSテンプレートが収められたcontribというディレクトリの存在にも気が付くだろう。これらは「公式な」テンプレートではないが、Ubuntu、Slackware、AltLinuxといったOpenVZによるテンプレートが見当たらないディストリビューションを実行する場合は、そちらを参照してほしい。
また、テンプレートが1つも存在しないディストリビューションを実行したければ、OpenVZ WikiでOSテンプレートの作成に関するドキュメントを参照するとよい。このあたりは、OpenVZがVMwareやその他一部の仮想化テクノロジに比べて劣っている点である。通常、VMware ServerまたはVMware WorkstationへのLinuxディストリビューションのインストールは、そのディストリビューションのインストール手順を実行するのと同じくらい簡単に行える。だがOpenVZの場合はより複雑で、ゲストOSを2つ実行したいだけでもOpenVZについて非常に多くのことを学ばなければならないのだ。
ダウンロードしたOSテンプレートは、/var/lib/vz/template/cacheに格納する必要がある。OSテンプレートはダウンロードした時点でgzip化されたtarファイルになっているが、展開する必要はなく、そのままにしておけばよい。
システムのセットアップにはvzctlユーティリティを用いる。だが残念なことに、vzctlユーティリティはVirtuozzoに付属のGUIツールに比べて格段に使いにくい。それでもvzctlを使うのがそれほど苦にならないのは、スクリプト化できるからであり、その点での自由度は非常に高い。多くのOpenVZシステムを管理していればすぐにvzctlの構文に慣れるだろうし、それほど頻繁にOpenVZのゲストシステムの作成や対処を行わないのならvzctlユーティリティのmanページから該当ページを探し出して必要なオプションを理解するのに法外な時間がかかるということもないだろう。では、非常によく使われるコマンドのなかでvzctlを見ていくとしよう。
ゲストシステムを作成する構文は、vzctl create vpsid --ostemplate ostemplatename のようになる。vpsidは新しいゲストシステムに割り当てる番号だが、100未満のID番号はOpenVZが内部使用のために確保しているので、私はIDをたいてい1001から割り振るようにしている。たとえば、x86用のDebian SargeのOSテンプレートをダウンロードした場合は、次のコマンドを実行する。
vzctl create 1001 --ostemplate debian-3.1-i386-minimal
ゲストシステムの設定が終わると、--rootまたは--privateオプションを使ってデフォルトの設定を変えていない限り、ゲスト側のファイルシステムが/var/lib/vz/root/vpsidとプライベート領域である/var/lib/vz/private/vpsidにできているはずだ。プライベートディレクトリのほうには、この仮想環境(VE)に固有のファイル群が含まれている。
したがって、ID番号1001としてゲスト環境を作成すると、そのルートファイルシステムの場所は/var/lib/vz/root/1001になる。これは、何らかの理由でファイルへの直接アクセスが必要な場合に便利なことがある。たとえば、ゲスト環境の管理者により、通常はゲスト環境をブートしないように設定されている場合や、バックアップを行う場合などである。
今度はネットワークの設定を行う。これもそれほど難しくはなく、次のように実行すればよい。
vzctl set --ipadd ipaddr --nameserver nameserverIP --hostname hostname --save
--ipaddパラメータによってゲストOSの最優先venetインタフェースのIPアドレスが、--hostnameパラメータによってVPSのホスト名が、--nameserverパラメータによってプライマリネームサーバ名が、それぞれ割り当てられる。OpenVZのゲストシステムにデフォルトで用意されるvenetインタフェースはMACアドレスを持たないが、これは(何よりも)インタフェースのアドレスをDHCP経由で取得できないことを意味している。
ところが、OpenVZコミュニティの人々が生み出したvethという新しいインタフェースには、MACアドレスを持たせることができる。このvethデバイスを使えば、ユーザによるゲストOS内でのDHCPサーバの設置が可能になり、ユーザは独自のネットワーク設定を行うことができる。こうしたことはvenetデバイスでは不可能だ。これが望ましいことかどうかはまた別の問題だが、venetインタフェースではなくvethインタフェースを利用したければ、OpenVZ Wikiに記載されている設定手順を参照してもらいたい。
