看板Linux
标 题Solaris 的 虚拟技术 Container (一)
发信站SayYA 资讯站 (Mon Apr 16 21:27:56 2007)
转信站ptt!ctu-reader!news.nctu!SayYa
之前写了 linux 下 Xen & vserver 的分享
现在来一篇 Solaris Unix 的虚拟技术分享
虽然是在 linux 版发表 不过既然都是虚拟技术 想想跟大家分享一下也好
简介:
Solaris Container 的虚拟技术是在 Solaris 10 里发表的
正确来说应该是从 Solaris u1 版才正式收录
其虚拟技术称为 Solaris Container
一共包括二部分 资源管理 (Resource Manager) & 区域 (Zone)
资源管理部分比较琐碎 就不提了 且跟本版无关 着重在 Zone 的介绍
因为文章较长分成多个部分介绍完
一、
范例一 设定完整 Root 模式 ( Whole Root Model ) 的 Non-global Zone
** Root 指的是跟目录 **
Sheel> zonecfg -z mysql5
zonecfg:mysql5> create
zonecfg:mysql5> set zonepath=/export/mysql5
zonecfg:mysql5> set autoboot=true
zonecfg:mysql5> set pool=pool_default
zonecfg:mysql5> add fs
zonecfg:mysql5:fs> set dir=/usr/local
zonecfg:mysql5:fs> set special=/opt/local
zonecfg:mysql5:fs> set type=lofs
zonecfg:mysql5:fs> end
zonecfg:mysql5> add inherit-pkg-dir
zonecfg:mysql5:inherit-pkg-dir> set dir=/opt/sfw
zonecfg:mysql5:inherit-pkg-dir> end
zonecfg:mysql5> remove inherit-pkg-dir dir=/lib
zonecfg:mysql5> remove inherit-pkg-dir dir=/platform
zonecfg:mysql5> remove inherit-pkg-dir dir=/sbin
zonecfg:mysql5> remove inherit-pkg-dir dir=/usr
zonecfg:mysql5> add net
zonecfg:mysql5:net> set address=192.168.30.97
zonecfg:mysql5:net> set physical=bge1
zonecfg:mysql5:net> end
zonecfg:mysql5> add rctl
zonecfg:mysql5:rctl> set name=zone.cpu-shares
zonecfg:mysql5:rctl> add value (priv=privileged,limit=1,action=none)
zonecfg:mysql5:rctl> end
zonecfg:mysql5> add attr
zonecfg:mysql5:attr> set name=comment
zonecfg:mysql5:attr> set type=string
zonecfg:mysql5:attr> set value="This is MySQL 5 work zone"
zonecfg:mysql5:attr> end
说明:
1.1 基本设定
1.1.1 设定 ZONE 路径
zonecfg:mysql5> set zonepath=/export/mysql5
1.1.2 设定开机自动启动
zonecfg:mysql5> set autoboot=true
1.1.3 设定资源池
zonecfg:mysql5> set pool=pool_defaul
1.2 设定档案系统
zonecfg:mysql5> add fs
1.2.1 设定 Non-global Zone 档案系统挂载点 /usr/local
zonecfg:mysql5:fs> set dir=/usr/local
1.2.2 挂载 Global Zone 的 /opt/local 作为 Non-global Zone 的
/usr/local 当作跟 Global Zone 的档案交换目录
zonecfg:mysql5:fs> set special=/opt/local
1.2.3 设定档案系统交换类型为 lofs
zonecfg:mysql5:fs> set type=lofs
1.2.4 档案系统设定结束
zonecfg:mysql5:fs> end
1.3 设定 mount Global Zone上 的档案系统 但在 Non-Global Zone 里却是唯读的
1.3.1 设定直接从 Global Zone 上继承 mount 上来的档案系统,
这些档案系统在 Non-global Zone 里面都是唯读的
zonecfg:mysql5> add inherit-pkg-dir
1.3.2 /opt/sfw 直接从 Global Zone 继承取得使用,
/opt/sfw 是 Golbal Zone 已安装 package 的目录
zonecfg:mysql5:inherit-pkg-dir> set dir=/opt/sfw
1.3.3 挂载唯读目录结束
zonecfg:mysql5:inherit-pkg-dir> end
1.4 移除预先安装的目录将 Non-global Zone 设为完整 Root 模式
( Whole Root Model )
zonecfg:mysql5> remove inherit-pkg-dir dir=/lib
zonecfg:mysql5> remove inherit-pkg-dir dir=/platform
zonecfg:mysql5> remove inherit-pkg-dir dir=/sbin
zonecfg:mysql5> remove inherit-pkg-dir dir=/usr
1.5 设定配发的 ip 跟指定的 NIC 介面
zonecfg:mysql5> add net
zonecfg:mysql5:net> set address=192.168.30.97
zonecfg:mysql5:net> set physical=bge1
zonecfg:mysql5:net> end
1.6 资源限制
zonecfg:mysql5> add rctl
zonecfg:mysql5:rctl> set name=zone.cpu-shares
zonecfg:mysql5:rctl> add value (priv=privileged,limit=1,action=none)
zonecfg:mysql5:rctl> end
1.7 注解说明
zonecfg:mysql5> add attr
zonecfg:mysql5:attr> set name=comment
zonecfg:mysql5:attr> set type=string
zonecfg:mysql5:attr> set value="This is MySQL 5 work zone"
zonecfg:mysql5:attr> end
** 也可以下列的范例设定快速建立完整 Root 模式 **
** ( Whole Root Model ) 的 Non-global Zone **
Sheel> zonecfg -z zone1
zone1: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:zone1> create -b
zonecfg:zone1> set zonepath=/zones/zone1
zonecfg:zone1> exit
Sheel> time zoneadm -z zone1 install
二、
范例二 设定简易 Root 模式 ( Sparse Root Model) 的 Non-global Zone
** Root 指的是跟目录 **
zonecfg -z apache2
zonecfg:apahe2> create
zonecfg:apahe2> set zonepath=/export/apahe2
zonecfg:apahe2> set autoboot=true
zonecfg:apahe2> set pool=pool_default
zonecfg:apahe2> add fs
zonecfg:apahe2:fs> set dir=/usr/local
zonecfg:apahe2:fs> set special=/opt/local
zonecfg:apahe2:fs> set type=lofs
zonecfg:apahe2:fs> end
zonecfg:apahe2> add inherit-pkg-dir
zonecfg:apahe2:inherit-pkg-dir> set dir=/opt/sfw
zonecfg:apahe2:inherit-pkg-dir> end
zonecfg:apahe2> add net
zonecfg:apahe2:net> set address=192.168.30.98
zonecfg:apahe2:net> set physical=nge0
zonecfg:apahe2:net> end
zonecfg:apahe2> add rctl
zonecfg:apahe2:rctl> set name=zone.cpu-shares
zonecfg:apahe2:rctl> add value (priv=privileged,limit=1,action=none)
zonecfg:apahe2:rctl> end
zonecfg:apahe2> add attr
zonecfg:apahe2:attr> set name=comment
zonecfg:apahe2:attr> set type=string
zonecfg:apahe2:attr> set value="This is apche2 work zone"
zonecfg:apahe2:attr> end
说明:
2.1 基本设定
2.1.1 设定 ZONE 路径
zonecfg:apache2> set zonepath=/export/apache2
2.1.2 设定开机自动启动
zonecfg:apache2> set autoboot=true
2.1.3 设定资源池
zonecfg:apache2> set pool=pool_default
2.2 设定档案系统
zonecfg:apache2> add fs
2.2.1 设定 Non-global Zone 档案系统挂载点 /usr/local
zonecfg:apache2:fs> set dir=/usr/local
2.2.2 挂载 Global Zone 的 /opt/local 作为 Non-global Zone 的
/usr/local 当作跟 Global Zone 的档案交换目录
zonecfg:apache2:fs> set special=/opt/local
2.2.3 设定档案系统交换类型为 lofs
zonecfg:apache2:fs> set type=lofs
2.2.4 档案系统设定结束
zonecfg:apache2:fs> end
2.3 设定 mount Global Zone上 的档案系统 但在 Non-Global Zone 里却是唯读的
2.3.1 设定直接从 Global Zone 上继承 mount 上来的档案系统,
这些档案系统在 Non-global Zone 里面都是唯读的
zonecfg:apache2> add inherit-pkg-dir
2.3.2 /opt/sfw 直接从 Global Zone 继承取得使用,
/opt/sfw 是 Golbal Zone 已安装 package 的目录
zonecfg:apache2:inherit-pkg-dir> set dir=/opt/sfw
2.3.3 挂载唯读目录结束
zonecfg:apache2:inherit-pkg-dir> end
2.5 资源限制
zonecfg:apache2> add rctl
zonecfg:apache2:rctl> set name=zone.cpu-shares
zonecfg:apache2:rctl> add value (priv=privileged,limit=1,action=none)
zonecfg:apache2:rctl> end
2.6 注解说明
zonecfg:apache2> add attr
zonecfg:apache2:attr> set name=comment
zonecfg:apache2:attr> set type=string
zonecfg:apache2:attr> set value="This is apache2 work zone"
zonecfg:apache2:attr> end
** 也可以下列的范例设定快速建立简易 Root 模式 **
** ( Sparse Root Model ) 的 Non-global Zone **
Sheel> zonecfg -z zone2
zone1: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:zone1> create
zonecfg:zone1> set zonepath=/zones/zone2
zonecfg:zone1> exit
Sheel> time zoneadm -z zone2 install
简易 Root 模式 跟 完整 Root 模式的差异在於
完整 Root 模式移除掉原本预设会有的 /lib /platform /sbin /usr
这样 Golbal Zone 系统的变动就不会影响到 Non-global Zone 系统
当然 Non-global Zone 系统的变动自然也不会影响到 Golbal Zone
ex:
zonecfg:mysql5> remove inherit-pkg-dir dir=/lib
zonecfg:mysql5> remove inherit-pkg-dir dir=/platform
zonecfg:mysql5> remove inherit-pkg-dir dir=/sbin
zonecfg:mysql5> remove inherit-pkg-dir dir=/usr
** 配发 ip 跟指定 NIC 并不硬性规定一定要用实体 NIC **
** 一样可以单张 NIC 搭配 Non-global Zone 配发多个 虚拟 IP **
翻译 Whole Root Model & Sparse Root Model 的方式说明
因为 Sparse 在英文里并不是简易的意思 我私下称为简易是相对於 Whole 的语意
若有更适当的表达法欢迎来信告知 谢谢
--
(__) 欢迎加入 GNU Debian Linux
(oo) msn:
[email protected]
/------\/
/ | ||
* /\---/\ ...."Have you mooed today?"...
~~ ~~
--
※ Origin: SayYA 资讯站 <bbs.sayya.org>
◆ From: 220-132-173-42.hinet-ip.hinet.net