ezjailにより作成された仮想環境でportsツリーを導入する際、個々のjai仮想領域lごとにportsツリーを構成するとHDD容量を圧迫することになる。また、そうした場合にjail環境のportsツリーを更新する手間が増えるデメリットが発生する。 そこでmount_null(8)を使用してjail環境にhost環境のportsツリーをマウントし共有することで、jail環境からもportsツリーを利用できるようにする。
-FreeBSDのサーバ仮想化技術「ezjail」で構築したjail環境の設定- からのつずきとなる。
インストール環境:
FreeBSD6 + ezjail-2.0.1
| ブログをはじめる |
jail環境でのportsツリーの導入
mount_null(8)のオプションにro(リードオンリー)を指定することにより、jail環境へ読み込み専用でマウントすることが可能になる。これによってjail環境からhost環境の/usr/portsを変更できないようにすることが可能である。
マウントポイントの設定
host環境の/etc/fstabにjail環境のportsツリーのマウントポイントを指定する。
- jailから書き込みが出来ないようにオプションにroを追加
- 通常の運用時はportsツリーをマウントしないようにnoautoオプションを指定
- portsの種類によっては/usr/srcのファイルを必要とするものがある
また、jail環境のportsとsrcディレクトリは下記のようにリンクになっている
lrwxrwxrwx 1 root wheel 19 1 2 00:52 ports -> /basejail/usr/ports
lrwxrwxrwx 1 root wheel 17 1 2 00:52 src -> /basejail/usr/src
したがって、/etc/fstab (host)に以下を追記
/usr/ports /usr/jails/JAILNAME/basejail/usr/ports nullfs ro,noauto 0 0
/usr/src /usr/jails/JAILNAME/basejail/usr/src nullfs ro,noauto 0 0
JAILNAME : 今回作成したjail名
jail環境のports環境整備
portsでインストールする際は作業ディレクトリ(WRKDIR)とソース保存ディレクトリ(DISTDIR)への書き込み権限が必要になる為、/usr/portsを読み込み専用でマウントした場合、jail環境の/etc/make.confに以下の指定が必要である。(無い場合make時にエラーとなる)
WRKDIRPREFIX= /var/ports
DISTDIR= /var/ports/distfiles
PACKAGES= /var/ports/packages
現在上記の記述はデ゙フオルトで入っているので、このままでよければこのデイレクトリを作成してやればよい。
jail# mkdir /var/ports
jail# mkdir /var/ports/distfiles
jail# mkdir /var/ports/packages
portsツリーのマウント
設定が完了したら実際にjail環境にportsツリーをマウントする。
host# mount /usr/jails/JAILNAME/basejail/usr/ports
host# mount /usr/jails/JAILNAME/basejail/usr/src
これでjail環境でportsツリーを使ってhost環境と同様にソフトをインストールしたりアップデートすることができる。
運用時によく使うコマンド
- jail環境のリストを表示 -
host# jls
- host環境からjail環境へ入る -
host# jexec 1 /bin/tcsh
1 : jail_JAILNAME.id
/bin/tcsh :シェルがshでいい人は/bin/sh
- 起動と停止 -
host# /usr/local/etc/rc.d/ezjail.sh xxx yyy
xxx: start,stop,restart
yyy: JAILNAME注意:yyyを指定しないとすべてのjail環境が対象となる(複数のjail環境がある場合は要注意)





