OpenVZ(Fedora Core 4のマイグレーション編)

OpenVZでは既存の単独Linux環境をVPS(Virtual Private Server)として実行させることができます。

ここでは単独実行していたFC4(Fedora Core 4)をVPSにマイグレーション(移行)してデスクトップ操作できる環境を構築する手順について紹介します。
[環境]
・ホストOS: CentOS 4.3
・OpenVZカーネル: 2006年4月リリース版(2.6.8-022stab076.1)


[前提条件]
(1)ホストOSにOpenVZ(カーネル及び管理ツール)がインストールされていること。
(2)単独実行FC4にデスクトップ環境がインストールされていること。
(3)単独実行FC4にVNCサーバと仮想フレームバッファドライバがインストールされていること。
(4)VPSのGUI操作はVNCクライアントまたはXサーバからの接続とする。


  1. FC4テンプレートキャッシュのダウンロード
    http://openvz.org/download/template/cache/から下記をダウンロードします。
    (1)fedora-core-4-i386-default.tar.gz ※111MBあります。
    ダウンロードしたこのファイルは/vz/template/cache/に移動させておく必要があります。
    # mv fedora-core-4-i386-default.tar.gz /vz/template/cache/

    [補足]
    fedora-core-4-i386-default.tar.gzは通常のファイルシステムにある/bin,/dev./etc,/usr等のディレクトリ/ファイルを圧縮したファイルです。
    (デスクトップ環境用ファイルは含まれません)

  2. デフォルトVPSの作成と基本設定
    デフォルトVPSの作成は以下のコマンドで行います(1〜2分程度で完了します)。
    102はVPSに付与する識別番号でVPSIDと呼ばれるものです。

    # vzctl create 102 --ostemplate fedora-core-4-i386-default

    次にVPSの設定を以下のように行います。
    ここで設定した内容は/etc/sysconfig/vz-scripts/102.confに保存されます。
    # vzctl set 102 --hostname vzfc4 --save
    # vzctl set 102 --ipadd VPSのIPアドレス --save
    # vzctl set 102 --nameserver DNSアドレス --save
    # vzctl set 102 --diskspace 4194304:4613736 --save (※ディスク容量の4GB化用)

    [補足]
    VPS作成の段階ではVPS内にはVPS用ネットワーク環境は構築されません。
    VPS内でのVPS用ネットワーク環境構築は実際にVPSを起動した際にOpenVZ/vzctlによって自動的に行われます。

  3. VPS設定ファイルのチューニング
    VPSの作成で自動作成されるVPS設定ファイル(/etc/sysconfig/vz-scripts/102.conf)はサーバ用途向けになっています。
    しかしデスクトップ用に使用する場合には若干の設定変更が必要です。
    ここでのVPS設定ファイルのチューニングは以下のようにします。

    [変更前]
    AVNUMPROC="40:40"
    NUMPROC="65:65"
    VMGUARPAGES="6144:2147483647"  *VPSに割り当てるページ数(4KB単位)
    KMEMSIZE="2752512:2936012"    *kernel用のメモリ
    DCACHESIZE="1048576:1097728"
    CPUUNITS="1000"
    

    [変更後]
    AVNUMPROC="256:256"
    NUMPROC="256:256"
    VMGUARPAGES="131072:2147483647"  *VPSに割り当てるページ数(4KB単位)で131072は512MBを示します。
    KMEMSIZE="2147483647:2147483647" *kernel用のメモリを実質制限しない設定です。
    DCACHESIZE="1048576:2147483647"  *この設定は特に重要でシステム全体のメモリを効率的に使用できます。
    CPUUNITS="5000"
    

  4. デフォルトVPS内の不要ディレクトリ削除
    上記「vzctl create 102 --ostemplate fedora-core-4-i386-default」を実行すると/vz/private/102ディレクトリが作成されます。
    また/vz/private/102下には以下のサブディレクトリが作成されます。


    これらのディレクトリの内、そのまま使用するのはdev,proc,sys,tmpです(tmpにはdummy-fedora-core-4-fileが含まれます)。
    そこでそれら以外のディレクトリを削除します。

    # rm -Rf /vz/private/102/bin
    # rm -Rf /vz/private/102/boot
    # rm -Rf /vz/private/102/etc
    # rm -Rf /vz/private/102/home
    # rm -Rf /vz/private/102/lib
    # rm -Rf /vz/private/102/media
    # rm -Rf /vz/private/102/mnt
    # rm -Rf /vz/private/102/opt
    # rm -Rf /vz/private/102/root
    # rm -Rf /vz/private/102/sbin
    # rm -Rf /vz/private/102/selinux
    # rm -Rf /vz/private/102/srv
    # rm -Rf /vz/private/102/usr
    # rm -Rf /vz/private/102/var

  5. 単独実行FC4環境からのディレクトリコピー
    既存の単独実行FC4環境側の/dev,/proc,/sys,/tmp以外のディレクトリ内容をそのままホストOSの/vz/private/102にコピーします。
    このコピーの方法は使用環境に合った方法で実施します。

  6. VPSの起動
    以下のコマンドでVPSを起動します。
    # vzctl start 102

    [補足]
    VPSの起動時VPS設定ファイルに基づいてVPS内のネットワーク環境がOpenVZ/vzctlによって自動的に構築されます。
    下記ファイルが自動更新されます。
    ・/etc/sysconfig/networkへのVPSのゲートウェイアドレスやホスト名の設定
    ・/etc/sysconfig/network-scripts/ifcfg-venet0とifcfg-venet0:0の設定
    ※/etc/sysconfig/network-scripts/ifcfg-eth0は自動削除されませんので別途手動で削除して下さい。
    また/etc/modproveの中のeth0も残ったままとなります。
    ・/etc/resolv.confの設定
    ・/etc/hostsへのVPSホスト名設定

  7. VPSへの特別ログインと/etc/sysconfig/networkの変更
    ホストOSからVPS内にrootユーザで入るには以下の特別なコマンドで入れます。

    # vzctl enter 102

    VPSに入って/etc/sysconfig/networkを編集してゲートウェイアドレスを変更します。
    ※OpenVZ/vzctlがデフォルトで設定した仮想ゲートウェイアドレスではかなり低速となるため実際のゲートウェイアドレスにします。
    変更後、下記コマンドでネットワークを再起動します。
    # /etc/init.d/network restart

    この時/etc/sysconfig/network-scripts/ifcfg-eth0が存在していれば下記警告メッセージが表示されます。
    インターフェース eth0 を活性化中:  デバイス eth0 は存在しないようですので、初期化を遅らせます。
                                                                 [失敗]
    

    本警告メッセージは出てもVPSでネットワークは使用できます。

  8. gdm設定
    vncserverでgdmを使用する場合、Xサーバを必要とします。
    Xサーバはtty0を必要としますがVPS環境には/dev/tty0がありません。
    このため通常のXサーバ使用ではgdm起動時にtty0がないため起動できないという問題があります。
    その対策としてtty0を前提としないXサーバとしてXvfbを使用します。


  9. VPSの再起動
    ホスト側より以下のコマンドでVPSを再起動させます。

    # vzctl stop 102
    # vzctl start 102
    または
    # vzctl restart 102

  10. VNC接続利用
    WindowsのVNCクライアントから「vzfc4:1」指定で接続します。


  11. ホスト側からのVPS内telnetサーバ起動
    VPSにtelnetサーバがインストールされていて自動起動設定がされていない場合は以下のようにして自動起動設定できます。

    # vzctl exec 102 chkconfig --level 345 krb5-telnet on

    またtelnetサーバをxinetd経由で即使用可能とするには以下のコマンドを実行します。

    # vzctl exec 102 /etc/rc.d/init.d/xinetd restart