UNIX的なアレ

UNIX的なこととかいろいろ

Linux環境でJail環境を構築する、LinuxVserver

いくつかのサイトでもすでに紹介されてきていますが、Linux環境でFreeBSDのJail環境に似た環境を構築することができる、LinuxVserverを紹介したいと思います。

LinuxVserverのメリットは?

仮想化の技術で代表的なモノはVMwareXenですが、それぞれ特徴があります。
LinuxVserverにおいての特徴は以下になります。

  • 手軽に仮想マシンを立ち上げることができる
  • 仮想マシン側からはNetworkの設定を変更することができない
  • 構築したイメージの移行が手軽にできる。

逆に制限事項もありますが、それを考えても使うだけの価値があるとおもっています。

なお、公式サイトは以下です。
Linux-VServer

LinuxVserver環境を構築する

それでは、LinuxVserverの環境を構築してみましょう。
Debianではaptパッケージが用意されているので、aptで簡単に導入することができます。
(なお、私自身の環境はVMwareServer上に構築をしています)

sshなどで対象のサーバーにログインをして、下記のコマンドをうってください。


# sudo apt-get install linux-image-2.6.18-5-vserver-686 util-vserver vserver-debiantools debootstrap
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
以下の特別パッケージがインストールされます:
binutils iproute libatm1 libbeecrypt6 make rsync
提案パッケージ:
binutils-doc linux-doc-2.6.18 make-doc-non-dfsg kernel-patch-vserver vlan yum
umu推奨パッケージ:
iproute-doc
以下のパッケージが新たにインストールされます:
binutils debootstrap iproute libatm1 libbeecrypt6 linux-image-2.6.18-5-vserver-686 make rsync util-vserver vserver-debiantools
アップグレード: 0 個、新規インストール: 10 個、削除: 0 個、保留: 1 個。
20.6MB 中 18.0MB のアーカイブを取得する必要があります。
展開後に追加で 63.3MB のディスク容量が消費されます。
続行しますか [Y/n]? y



vserverのインストールが完了したら、vserver用のカーネルで起動するようにgrubを変更しておきましょう。
起動時に選択してもよいのですが、いつも自分はぼーっとして逃してしまうので書き換えています。

# update-grub
# cp -ip /boot/grub/menu.lst{,.org}
# vi /boot/grub/menu.lst
-> default 0 を 2 に変更する

では起動が完了したら以下のコマンドをうってGuestOSを作成しましょう。
基本的に設定する項目は以下の3点になります。

  • vserver上で管理するためのVirtualMachine名
  • VirtualMachineのホスト名
  • IPアドレス

若干わかりづらい点もあるので、わかりやすいように環境変数に一度セットしてから実行する手順にします。


# export vserver_name=vm-debian # Vserver上で管理するためのVirtualMachine名をセットする
# export vserver_hostname=vm-debian # VirtualMachineのHost名をセットする
# export vserver_ipaddress=192.168.85.130 # VirtualMachineのIPアドレスをセットする

# vserver ${vserver_name} build --hostname ${vserver_hostname} --interface eth0:${vserver_ipaddress} -m debootstrap -- -d etch
I: Retrieving Release
I: Retrieving Packages



上記のコマンドを打ったら、マシンの構築が開始します。若干時間はかかりますが、根気よく待ちましょう。

設定ファイルなどの配置場所

Vserverのメリットのひとつなのですが、GuestOSからはIPアドレスやホスト名の変更ができないようになっています。
そのためGuestOSのRootを渡してもある程度のリスクの軽減をすることができます。(IPアドレスがしたりなど)
ただし、設定ファイル等は通常のDebianで管理されている場所とは違う場所で管理されるので注意しましょう。
以下ではその設定ファイルの配置場所について説明します。

Network,Host名などの設定ファイル

ネットワークなどの設定ファイルは以下のディレクトリに配置されています。


/etc/vservers/${vserver_name}
それではもう少し見てみましょう。

IPアドレス
/etc/vservers/vm-debian/interfaces/0/ip
ホスト名
/etc/vservers/vm-debian/name
/etc/fstab
/etc/vservers/vm-debian/fstab

これは代表的なファイルだけ紹介していますが、GuestOS上の設定ファイルは基本的にはここに配置されるようになっています。
構築後に設定を変更したい際はこのディレクトリの下を調べてから変更するようにしましょう。

GuestOSのディレクト

chrootに近い技術を利用しているので、VMware等とは違ってそのままHostOSからディレクトリを参照することができます。
以下のディレクトリに保存されるようになっています。


/var/lib/vservers/${vserver_name}
この下がGuestOSのディレクトリになります。
ディレクトリの下を見てみましょう。

debian:/var/lib/vservers# ls /var/lib/vservers/${vserver_name}
bin boot dev etc home initrd lib media mnt opt proc root sbin srv sys tmp usr var
上記のようにディレクトリが配置されています。
そのためHostOSからファイルを参照したり、Copyしたりする際はここから直接見てもOKです。

Vserverを使う際の注意点

仮想マシンといってもVMwareとは違って、chrootに違い技術のため制限事項はいろいろと出てきます。
いままで自分が使用してきて感じた制限事項は以下でした。

  • HostOS側でListenしているポートを、GuestOS側でListenできない (GuestOS同士なら可能)
  • 構築される状態がものすごく中途半端なので、再構築が若干大変 (1度つくればOKだけど)

最後に

まだ自分も使い始めて日が浅いので、もっといろいろな機能を秘めていると思います。
もしもっと便利な機能を知っているよ!という方がいらっしゃいましたら、ご意見をお待ちしております。