概念
Jail是chroot机制的一种进化后的机制,翻译成中文叫“监狱”,它可以提高更为高级和灵活的隔离和监管机制,除了文件系统监管外,还实现了设备隔 离,用户隔离,系统资源隔离,使其更像是一种虚拟机机制了,与此相似的概念有linux下的openvz,以及Solaris下的Container。 Jail可以说是一种轻量级的虚拟机制,比较起linux下的openvz,差的地方有网络地址分配,共享库控制这两大方面.
如何构建Jail(本文基于FreeBSD 8.0 Release-p2)
构建一个Jail,必备的几个参数有Jail的根目录,用户态程序,主机名以及IP地址,还有一个可选的dev。根据用户态程序的不同考虑可以将Jail做成完整的系统型Jail以及服务型Jail。
一、 构建Jail根目录
- # mkdir /jail/test
二、构建用户态程序
- # cd /usr/src
- # make world DESTDIR=/jail/test
这里make world=make buildworld + make installworld,因此如果以前做过buildworld的话可以偷懒直接用以前build好的安装,可以节省大量时间(我试过,似乎不行,可能是哪里配置有误)
三、构建jail内系统运行需要的配置文件
- # make distribution DESTDIR=/jail/test
四、修改rc.conf添加jail服务运行的必要参数,必备的有:
- jail_enable="YES" # 如果设为 NO 则表示不自动启动 jail
- jail_list="test" # 以空格分隔的 jail 名字列表
指定单个jail的必备参数:
- jail_test_rootdir="/jail/test" # jail 的根目录
- jail_test_hostname="XXXX.XXXX.XXXX.XXXX" # jail 的主机名
- jail_test_ip="XXXX.XXXX.XXXX.XXXX" # jail 的 IP 地址
另外还有可选的devfs,用于控制jail里面使用哪些设备
- jail_test_devfs_enable="YES" # 挂接 devfs
- jail_test_devfs_ruleset="test_ruleset" # jail 中应用的devfs 规则集
注:jail_test_devfs_enable="YES"这项虽是可选的,但一定要加上,否则会出现莫名其妙的错误,我就是因为这个,重新做前面的二三步骤三四次,浪费了不少时间。
至此Jail基本就建立完成了,现在来启动它。启动之前,我们还要来做几件准备的事情
1)为Jail指定IP
- ifconfig vr0 = "inet 10.4.0.6 netmask 255.255.255.0"
- ifconfig vr0_alias = "inet 10.4.0.88 netmask 255.255.255.0"
这也是BSD平台下为网卡指定另一个IP的方法,指定完,一定要重启网络服务生效
2)创建一些必要的系统文件
- # touch /jail/test/etc/fstab
这个文件是个空文件,不需要添加任何东西
最后,来启动Jail
- # /etc/rc.d/jail start
后续的一些配置
设置Jail的口令及SSH
SSH的配置同理,SSH好后,就和现实中的实体机一样了,想做什么就做什么吧,赶紧!
本文转自dongfang_09859 51CTO博客,原文链接:http://blog.51cto.com/hellosa/537738,如需转载请自行联系原作者