FreeBSD 9.0創建單個與批量創建jail虛擬機

    FreeBSD中jail與linux中的openvz、kvm等虛擬機概念不同,實際上是爲了隔離宿主機上多用戶的獨立環境而誕生的安全管理軟件,但是經過配置完全可以充分利用宿主機的物理資源創建多個虛擬環境,搭建單物理機多虛擬FreeBSD環境平臺,特別適合企業內部開發環境的使用,充分利用FreeBSD堅如磐石的系統特性與ports的豐富性。

    遺憾的是,國內技術論壇與資料一如既往地以訛傳訛簡單複製粘貼(這裏麪包括著名圖書《構建高可用linux第2版》中有關jail部分由於作者疏忽而帶來的大量錯誤轉帖),導致在參照進行配置時走了不少彎路,此文將親自實際部署成功的過程做一記錄,希望有需要的童鞋轉載時不要再弄錯了。
 
一、安裝宿主機環境
    這個就不用多說了,安裝教程一大把,我的物理機是很普通的臺式機,主板集成聲顯網卡,500G SATA硬盤,6G DDR3 1333內存,安裝FreeBSD 9.0 AMD64版本。爲方便後期編譯,安裝時勾選選擇了src,整個安裝過程大約20分鐘左右。安裝後修改鏡像源,提高後續更新的網絡下載速度。國內比較好用的是163的鏡像,修改/etc/make.conf(默認etc下無此文件,需要從另一個目錄複製過來一份)
#cp /usr/share/examples/etc/make.conf  /etc/make.conf  
#ee /etc/make.conf  
MASTER_SITE_OVERRIDE=\  
http://mirrors.163.com/FreeBSD/distfiles/${DIST_SUBDIR}\      
ftp://ftp.freebsdchina.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}\  
ftp://ftp.cn.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}\  
ftp://ftp.tw.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}\  
ftp://ftp.hk.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}\  
ftp://ftp.jp.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}\  
ftp://ftp.kr.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}\  

#make && make install  
#ee /etc/portsnap.conf
SERVERNAME=portsnap.cn.freebsd.org 
#portsnap fetch extract
#portsnap fetch update 

二、安裝單臺jail虛擬機
1、選擇jail在宿主機的目錄,一般放置在/usr/jail目錄下,例如我要安裝配置一臺cms虛擬機
#mkdir -p /usr/jail/cms

2、編譯源碼
#cd /usr/src
#make buildworld    
#make installworld DESTDIR=/usr/jail/cms        
#make distribution DESTDIR=/usr/jail/cms        
#mount -t devfs devfs /usr/jail/cms/dev         

3、配置虛擬機
#ee /etc/rc.conf
ifconfig_rl0_alias0="inet 192.168.1.38 netmask 255.255.255.0"  
jail_enable="YES"
jail_list="cms"

jail_cms_rootdir="/usr/jail/cms"
jail_cms_hostname="cms.mydomain.com"
jail_cms_ip="192.168.1.38"
jail_cms_exec="/bin/sh /etc/rc"
jail_cms_devfs_enable="YES"
保存後重啓宿主機,ifconfig看下宿主機的虛擬網卡配置,jls查看虛擬機狀態。

4、管理虛擬機
#jxexc  1 passwd root            
#jxexc  1 pw user add shuqi888
#jxexc  1 passwd shuqi888
#jxexc  1 pw groupmod wheel -m shuqi888
 
#jxexc  1 ee /etc/rc.conf
rpc_bind_enable="NO"
sshd_enable="YES"
hostname="cms.mydomain.com"
sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
ntpd_enable="YES"
ntpd_sync_on_start="YES"
named_enable="YES"
#jxexc  1 sh  /etc/rc

三、批量快速安裝多臺jail虛擬機
    當需要安裝部署多臺jail虛擬機的時候,用上面的方法就太麻煩了,於是我們找到了ezjail這個批量安裝管理jail虛擬機的工具。

1、安裝ezjail
#cd /usr/ports/sysutils/ezjail
#make install clean
#ee /etc/rc.conf
ezjail_enable="YES"    
#ezjail-admin update -p -i    

2、批量創建jail虛擬機      
#ezjail-admin create -r /usr/jails/cms cms.mydomain.com 192.168.1.11
#ezjail-admin create -r /usr/jails/mysql mysql.mydomain.com 192.168.1.12
  該命令可以分別在/usr/jails/cms和/usr/jails/mysql目錄下建立名爲cms.mydomain.com和mysql.mydomain.com的jail機器。

3、通過ezjail工具啓動jail虛擬機
#/usr/local/etc/rc.d/ezjail.sh start cms.mydomain.com

#/usr/local/etc/rc.d/ezjail.sh start mysql.mydomain.com


4、查看jail虛擬機狀態
#ezjail-admin list

5、啓動虛擬機ssh,修改root密碼,增加用戶等與創建單臺jail之後的操作相同

四、設置虛擬機上網
    虛擬機創建配置完成後,會發現在虛擬機裏無法連接到網絡,執行ping命令總是返回socket: Operation not permitted。在宿主機上做如下操作:
# ee /etc/sysctl.conf
加上  security.jail.allow_raw_sockets=1
保存後重啓即可

五、虛擬機優化
    複製宿主機的resolv.conf到jail機上,解決DNS查詢解析問題
#cp /etc/resolv.conf /usr/jail/cms/etc/resolv.conf
    將宿主機的make.conf也複製過去,這樣ports安裝速度很快
#cp /etc/make.conf /usr/jail/cms/etc/make.conf

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章