Linux-VServer(Fedora Core 5編)

Linux-VServerはホストOS(Linux)のカーネルで動作する仮想サーバです。
この仮想サーバから見える仮想ファイルシステムはホストOSの実ファイルシステムの一部でありchrootの応用技術で実装されています。
仮想サーバが使用するホストOSのカーネルをvserverカーネルと呼びます。
vserverカーネルは通常のカーネルに仮想サーバを動作させるためのパッチを加えたカーネルです。

Linux-VServerはOpenVZに類似しており以下の特徴を持ちます。


従来vserverカーネルはLinux-VServerプロジェクトによって提供されていたカーネルパッチを適用して利用者がカーネルソースから作成していました。
しかしFC5(Fedora Core 5)のリリースに伴いFC5用のvserverカーネルパッケージがリリースされ、FC5でのLinux-VServerの導入が容易となりました。

Linux-VServerプロジェクトでは2006年4月18日にFC5のvserverカーネルパッケージを利用した仮想サーバの構築方法を公開しました。

ここではその方法をベースにホストOS(FC5)上で動作するFC5仮想サーバをWebサーバとして構築する手順を紹介します。


[環境]
・ホストOS/仮想サーバOS: FC5
・vserverカーネル: kernel-2.6.16-1.2080_FC5.vs2.0.2.0.rc15.1(2006年4月5日リリース版)

尚、仮想サーバの操作は主にssh接続による操作となります。


  1. ホストOS側での事前準備


  2. ホストOSのアップグレード
    以下のコマンドでホストOSをアップグレードします。
    # yum upgrade

    今回はこのupgradeによりカーネル2.6.15-1.2054_FC5から2.6.16-1.2080_FC5になります。

  3. ホストOSへのvserverカーネルの導入
    /etc/yum.repos.d/dhozac.repoファイルを以下の内容で新規作成します。
    [dhozac-vserver]
    name=Daniel Hokka Zakrisson's packages for Fedora $releasever - $basearch - vserver
    baseurl=http://rpm.hozac.com/dhozac/fedora/$releasever/vserver/$basearch
    gpgkey=http://rpm.hozac.com/fedora/conf/keys/RPM-DHOZAC-GPG-KEY
    enabled=1
    
    次に以下のコマンドを実行します。
    # yum install kernel
    これによってカーネル2.6.16-1.2080_FC5はアンインストールされてカーネル2.6.16-1.2080_FC5.vs2.0.2.0.rc15.1がインストールされます。
    また/boot/grub/grub.confも自動更新されます。

  4. ホストOSの再起動
    再起動時のGRUBメニューで「Fedora Core (2.6.16-1.2080_FC5.vs2.0.2.0.rc15.1」を選択してブートします。



  5. vserverユーティリティのインストール
    以下のコマンドでvserverユーティリティ群をインストールします。
    # yum install util-vserver*
    これによってutil-vserver, util-vserver-build等のvserverユーティリティパッケージ群がインストールされます。

  6. 仮想サーバ(ゲストOS)の基本作成
    仮想サーバ(ゲストOS)の基本作成はvserverコマンドのbuildサブコマンドで行います(インターネット経由のインストールであり70分以上掛かります)。

    vserver fc5vs build -m yum --hostname=fc5vs --interface fc5vs0=eth0:仮想サーバのIPアドレス/24 -- -d fc5
    
    [補足]
    (1)fc5vsは仮想サーバ名かつ仮想サーバのホスト名としています。
    (2)--interfaceでfc5vs0=eth0とすることで仮想サーバのネットワークインタフェース名は「eth0:fc5vs0」となります。
    (3)ゲートウェイアドレスはホストOSでの設定内容が引き継がれます。
    (4)但し、DNSアドレスは設定されないため後で設定が必要となります。

  7. 仮想サーバの起動
    仮想サーバ(fc5vs)を以下のコマンドで起動します。
    # vserver fc5vs start
    また以下のコマンドで仮想サーバにrootで無条件ログインできます。
    # vserver fc5vs enter

    ここでは以下のコマンドだけを仮想サーバ内で実行しておきます。
    # pwconv
    pwconvは/etc/passwdから/etc/shadowを作成するコマンドです。
    # pwck
    # exit

  8. 仮想サーバへのパッケージ追加
    buildで作成した仮想サーバは極めて小さなOS構成になっており、passwd, vi等のコマンドも入っていません。
    仮想サーバをWebサーバとするために必要となるパッケージを追加します。
    まず仮想サーバを「vserver fc5vs stop」で停止させてからホストOSにてvyumコマンドを使用して仮想サーバ環境にパッケージを追加インストールします。

    # vyum fc5vs -- install yum
    # vyum fc5vs -- install openssh-server ※sshdのインストール
    # vyum fc5vs -- install rootfiles ※/root/.bash_profile等のインストール
    # vyum fc5vs -- install vim-minimal ※viを含むエディタのインストール
    # vyum fc5vs -- install passwd ※passwdコマンドのインストール
    # vyum fc5vs -- install xinetd
    # vyum fc5vs -- install vsftpd
    # vyum fc5vs -- install httpd
    あとは必要に応じてインストールします。
    仮想サーバ内でyumを使用可能とするにはホストOSで「vserver fc5vs pkgmgmt internalize」を実行しておく必要があります。
    逆にvyumを使用してホストOSからの操作で仮想サーバにパッケージをインストールするにはホストOSで「vserver fc5vs pkgmgmt externalize」を実行します。

  9. 仮想サーバの起動と仮想サーバへのrootでの特別ログイン
    # vserver fc5vs start
    # vserver fc5vs enter

  10. /etc/resolv.confの作成とネットワークの再起動
    # vi /etc/resolv.conf
    nameserver IPアドレス
    :wq!

    # /etc/rc.d/init.d/network restart
    外部サイトへのpingテスト

  11. 仮想サービス設定
    openssh-serverやxinetdをインストールした時点でsshdやxinetdは自動起動される設定になっています。
    しかしvsftpd(FTPサーバ), httpd(Webサーバ)は自動起動設定はされません。
    そこで以下のコマンドで自動起動設定を行います。
    # chkconfig --level 345 vsftpd on
    # chkconfig --level 345 httpd on

    ここでそのサービス起動もしてみます。
    # /etc/rc.d/init.d/vsftpd start
    # /etc/rc.d/init.d/httpd start

  12. 仮想サーバへのssh接続準備
    仮想サーバ内/etc/pam.d下の設定ファイルでの「session required tpam_loginuid.so」の各行の先頭に#を付与してコメント化します。
    下記コマンドを実行することで簡単にこれを行えます。
    ※円記号はバックスラッシュを示しています。
    # sed --in-place -e "s/^session.*required.*pam_loginuid.so/# session\trequired\tpam_loginuid.so/g" /etc/pam.d/*

  13. 仮想サーバ内rootパスワードの設定
    以下のコマンドでrootパスワードを設定します。
    # passwd root

  14. 仮想サーバの再起動
    # vserver fc5vs stop
    # vserver fc5vs start
    または、
    # vserver fc5vs restart

  15. 仮想サーバへのssh接続
    PuTTYで仮想サーバにssh接続してみます(ホストOS側のsshdサービスはoffにしてテストします)。



  16. 仮想サーバのWebアクセス
    ホストOS側のhttpdサービスはoffにして仮想サーバのWebアクセステストを行います。