Solaris container是从Solaris 10开始引入的非常优秀的虚拟化解决方案,它通过在一个Solaris操作系统虚拟多个zone(Solaris实例)来实现服务器整合及资源隔离。由于 每个zone需要占用一定的存储空间,如果系统中的zone过多也会对系统的存储资源带来一定的负担。本文主要介绍如何使用clone的方式来创建多个 zone,并达到节约存储资源的目的。
之前在《Crossbow practice in OpenSolaris 2009.06》一文中介绍了OpenSolaris的Crossbow项目,我们可以通过crossbow虚拟多个etherstub及NIC来安装多个zone。
dladm create-etherstub etherstub0
dladm create -l e1000g0 vnic01

首先在vnic01这块虚拟网卡上安装一个zone,使用vi clonezone.config建一个配置文件,内容如下:
create
set zonepath=/export/home/zones/clonezone
set ip-type=exclusive
add net
set address=192.168.205.123
set physical=vnic01
end

将clonezone.config配置文件应用于clonezone。
zonecfg -z clonezone -f clonezone.config

可使用zonecfg -z clonezone info来查看clonezone的配置情况。
使用zoneadm list -vc查看系统中各个zone的状态。
安装zone:
zoneadm -z clonezone install
启动zone:
zoneadm -z clonezone boot
启动后使用zlogin -C clonezone来登录。
zone的详细安装过程可以参考这篇博客《体验OpenSolaris 2008.05上的Zone及其Demo

接下来将利用已存在的clonezone,克隆一个新的名为testzone的zone。
zoneadm -z testzone clone clonezone
haiou@opensolaris:~$ zoneadm list -cv
ID NAME STATUS PATH BRAND IP
0 global running / native shared
- clonezone installed /export/home/zones/clonezone ipkg excl
- testclone installed /export/home/zones/testzone ipkg excl

可以使用zonecfg -z clonezone info和zonecfg -z testzone info来比较两个zone的配置信息是否相同

使用zfs list -t all可以发现clonezone占用了100多M的空间,而testzone只占用了几M。
其 实zone的clone也是采用ZFS的clone机制,当我们使用clonezone来克隆一个新的testzone时,完全是基于ZFS对 clonezone做的snapshot,它消耗的空间仅仅是它与clonezone不同的部分,所以testzone与clonezone相比占用的空 间非常小。

参考文献:
http://blogs.sun.com/observatory/entry/cloning_zones



Post a comment
Name: 
Email: 
URL: 
Comments: