用ezjail来创建和管理jail虚拟机

原创
运维 系统运维
在公司的环境中,需要快速和大量的部署jail虚拟机,原先的make world的方式就显得非常力不从心,大家都知道,make world就算在双四核的机器上也是极慢的;查阅了freebsd的官方文档,它向我们推荐管理及创建jail的工具--ezjail。

【51CTO独家特稿】在公司的环境中,需要快速和大量的部署jail虚拟机,原先的make world的方式就显得非常力不从心。大家都知道,make world就算在双四核的机器上也是极慢的;通过查阅freebsd的官方文档,它向我们推荐管理及创建jail的工具--ezjail。

Jail(8)的手册概述了创建Jail的方法,然而,当你需要多个Jail时,完整的Jail目录树会迅速地占用很多宝贵的磁盘空间。ezjail通过使用FreeBSD的nullfs特性来避免这个问题。基础系统的大部分(/bin、/boot、/sbin、/lib、/libexec、/rescue、/usr/{bin、include、lib、libexec、ports、sbin、share、src})仅在宿主机系统中存在一个副本,并通过nullfs以只读的方式挂载到所有的Jail里去。那些Jail就非常苗条了(每个约2mb),并且只包含一些指向basejail挂载点的软链接,而没有像/etc、/usr/local这样的共享目录。

ezjail带来很多优势:

●节省磁盘空间、inode,甚至内存,因为系统只需要为所有Jail持有一个系统二进制的副本

●你可以通过更新一个基础目录来更新所有的Jail,它如此简单,你肯定能做到

●入侵者破坏Jail时无法安装标准的Rootkit(因为基础系统是只读挂载的)

●由于ezjail完全是用sh写成的,因此没有必要在宿主机系统中安装其它脚本语言

●因为基础系统是通过软链接系统的,被囚禁(enjailed)的用户可以选择不使用已挂载的world

一个常常被低估的事实:较少的复杂性意味着更多的安全。#p#

我现在想通过ezjail为我的jail.cn7788.com,IP名为192.168.1.103的机器(相当于母机)安装一台名为apache.cn7788.com,IP为192.168.1.104及一台名为research.cn7788.com,IP为192.168.1.105的jail机器。

具体步骤如下:(权限要求很大,这里为了方便,我暂时切换到root下操作)

(1)编辑网卡地址,为网卡创建二个子网地址

vim /etc/rc.conf,添加代码如下:

ifconfig_em0_alias0="inet 192.168.1.104 netmask 255.255.255.0"
ifconfig_em0_alias1="inet 192.168.1.105 netmask 255.255.255.0"

重启后,通过ifconfig 观察下网卡的IP,截图如下:

通过ifconfig 观察下网卡的IP

(2)编译内核

由于是最小化安装,所以没有/usr/src目录,我们可以通过sysinstll工具来安装此目录。

sudo sysinstall -> Configure -> Distributions -> src -> ALL -> Install from a FreeBSD CD/DVD

然后是编译内核

cd /usr/src
make buildworld

此过程比较漫长,建议在下班时间或空闲时间做,无论是四核或八核的机器,做二小时的预算。

(3)ports安装ezjail工具

cd /usr/ports/sysutils/ezjail
make install clean

(4)生成jail模板

ezjail-admin update -p -i

-p:提供给jail ports

-i:不再运行make world,因为第一步我们已经做了。

(5)生成名为apache.cn7788.com和reseach.cn7788.com的子jail机器

ezjail-admin create -r /usr/jails/apache apache.cn7788.com 192.168.1.104
ezjail-admin create -r /usr/jails/research research.cn7788.com 192.168.1.105

该命令可以分别在/usr/jails/apache和/usr/jails/research目录下建立名为了apache.cn7788.com和research.cn7788.com的jail机器。

(6)让192.168.1.103的机器开机即启动ezjail工具

操作如下:

在/etc/rc.conf最后添加代码如下:

ezjail_enable="YES"

(7)分别通过ezjail启动这二个jail机器

/usr/local/etc/rc.d/ezjail.sh start apache.cn7788.com
/usr/local/etc/rc.d/ezjail.sh start research.cn7788.com

这里补充说明下:ezjail由两个脚本组成:ezjail-admin和ezjail.sh,前者用于创建、更新和删除Jail,后者用于启动、停止和重启Jail。

(8)通过ezjail-admin list查看jail机器的情况

[andrewy@jail ~0m]$ ezjail-admin list
STA JID IP Hostname Root Directory
----------------------------------------------------------------------------
DR 2 192.168.1.105 research.cn7788.com /usr/jails/research
DR 1 192.168.1.104 apache.cn7788.com /usr/jails/apache

(9)启动jail机器的ssh

启动sshd的方法跟平常一样的,没有任何区别。

先通过jexec 1或2 sh登入该jail,然后echo ' sshd_enable="YES" ' >> /etc/rc.conf,然后通过ezjail.sh命令重新启动虚拟机

jail# /usr/local/etc/rc.d/ezjail.sh restart apache.cn7788.com
Stopping jails: apache.cn7788.com.
Configuring jails:.
Starting jails: apache.cn7788.com.
jail# /usr/local/etc/rc.d/ezjail.sh restart research.cn7788.com
Stopping jails: research.cn7788.com.
Configuring jails:.
Starting jails: research.cn7788.com.

(10)如果要添加新jail机器,重复以上步骤即可。

(11)jail机器的备份是非常容易的

对相应的目录进行备份即可;其实我建议只对重要资料进行备份,jail机器crash了的话,重建一个也是非常快速的事情。

(12)建议用ezjail的方式创建和管理

如果大家有大规划部署虚拟机的需求的话,建议用ezjail的方式创建和管理,它创建的速度非常之快,而且子jail极小,如果遇到崩溃的情况的话,它恢复起来也极慢,现在我基本上在我每台jail机器上都部署了ezjail了。

【51CTO独家特稿,转载请标明出处及作者!】

【编辑推荐】

  1. FreeBSD 8.0下jail虚拟机完全实践
  2. FreeBSD 8.1下用nginx配置简单web负载均衡
  3. 最小化安装FreeBSD8服务器后建议做的事
责任编辑:黄丹 来源: 51CTO
相关推荐

2010-09-06 14:42:43

2011-06-08 09:49:25

云计算

2019-08-01 08:00:04

AWS虚拟机Lightsail

2023-06-28 15:53:25

虚拟机Linux

2010-02-24 16:37:27

Ubuntu VMwa

2023-03-03 08:10:15

TerraformAzure虚拟机

2013-01-18 14:04:58

VMwareWorkstation

2020-03-06 08:00:02

Multipass系统虚拟机

2013-03-15 14:59:03

VMwarevSphere ESXWorkstation

2010-07-28 09:27:00

SCVMM虚拟机

2010-07-29 09:57:34

SCVMM虚拟机

2011-11-15 09:16:12

虚拟化虚拟机Archipel

2011-05-05 09:32:59

CentOS 5.6KVM

2012-05-18 10:22:23

2014-11-07 10:02:03

虚拟机虚拟机补丁

2012-05-15 09:31:57

puppet vagrVirtualBox

2010-02-06 17:54:40

Dalvik虚拟机

2010-07-26 09:02:38

2010-01-14 14:21:05

CentOS系统

2013-07-17 09:32:58

点赞
收藏

51CTO技术栈公众号