天天看點

FreeBSD 虛拟化(jail) 初體驗

概念

        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 規則集

<a href="http://blog.51cto.com/attachment/201104/225848825.png" target="_blank"></a>

 注: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

<a target="_blank" href="http://blog.51cto.com/attachment/201104/230912175.png"></a>

<a target="_blank" href="http://blog.51cto.com/attachment/201104/230940325.png"></a>

SSH的配置同理,SSH好後,就和現實中的實體機一樣了,想做什麼就做什麼吧,趕緊!

本文轉自dongfang_09859 51CTO部落格,原文連結:http://blog.51cto.com/hellosa/537738,如需轉載請自行聯系原作者

繼續閱讀