标签:
Solaris 10 虚拟机探究:
一、前言
1.1 Solaris 10 Zone简介
Solaris 操作系统中的 Solaris Zones[1][2] 功能是一种用于虚拟化操作系统服务的分区技术,可提供安全的隔离环境以便承载和运行各种应用程序。
区域是指在 Solaris 操作系统的单个实例中创建的一个虚拟的操作系统环境。
区域有两种类型:全局区域 (global zone) 和非全局区域 (non-global zone)。
全局区域包含一次 Solaris OS 的完全正常运行的安装,该安装可由系统硬件来引导。通过系统硬件引导的 Solaris OS 安装过程安装的即是全局区域。
一个系统中只能运行一个全局区域。全局区域管理员可使用 zonecfg(1M) 和 zoneadm(1M) 来创建非全局区域。全局区域控制所有非全局区域的安装、维护、操作和损毁。
Solaris 10 Zone配合Solaris 10 Containers 可以进在分配操作系统、硬件资源。
1.2 区域根文件系统
两种方式可以配置非全局区域的根文件系统:完全根模型和稀疏根模型。
完全根模型将所有必需的软件包和任何选定的可选 Solaris 软件包安装到区域的专用文件系统中,因此可提供最大化的配置能力。
此模型的优点是:允许区域管理员定制其区域的文件系统布局(例如,创建 /usr/local),并可以添加任意非随附或第三方软件包。
此模型的缺点是:无法共享虚拟内存系统共享的可执行文件和共享库中的文本段,并且磁盘使用量也会显著增加-如此进行配置的每个非全局区域约增加 2 GB。
全局区域管理员使用 zonecfg(1M) 的子命令 create -b 创建具有完全根模式的区域(或删除 my-zone.xml 中的 inherited-pkg-dir 目录)。
稀疏根模型只安装根软件包的子集(即将 pkginfo(4) 参数 SUNW_PKGTYPE 设置为 root 的根软件包)并使用只读回送文件系统来访问其他文件,从而可优化对象的共享。
这与配置无盘客户机的方式类似,其中 /usr 和其他文件系统通过网络与 NFS 挂载。
使用此模型时,缺省情况下会将目录 /lib、/platform、/sbin 和 /usr 挂载为回送文件系统。
此模型的优点在于可提供更高的性能,原因是可以有效地共享可执行文件和共享库,并且区域本身的磁盘使用量会小很多。
稀疏根模型只需要将大约 100 MB 的文件系统空间用于区域本身。
为了便于管理,我建议使用完全根模型安装zone分区。
配置:完全根模型和稀疏根模型
#修改权限
bash-3.00# chmod 700 -r /export/home/vmtest02
#使用zonecfg命令配置Zone>>1
bash-2.05b# zonecfg -z vmtest02
zone: No such zone configured
Use ‘create‘ to begin configuring a new zone.
zonecfg:zone> create
zonecfg:zone> set zonepath = /export/zone
zonecfg:zone> set autoboot = true
zonecfg:zone> add inherit-pkg-dir
zonecfg:zone:inherit-pkg-dir> set dir=/opt/sfw
zonecfg:zone:inherit-pkg-dir> end
zonecfg:zone> add net
zonecfg:zone:net> set physical = elxl0
zonecfg:zone:net> set address = 173.21.73.121
zonecfg:zone:net> end
#使用zonecfg命令配置Zone>>2
A、root@pater # zonecfg -z zone1
zone1: No such zone configured (提示一个不存在的zone)
Use ‘create‘ to begin configuring a new zone.
B、zonecfg:zone1> create -b (使用Create命令创建zone1分区,使用-b参数使用完全根模型,不带-b就是稀疏根模型)######
C、zonecfg:zone1> set zonepath=/zone1 (设置分区的操作系统文件存放在/zone1位置)
D、增加网卡
zonecfg:zone1> add net (增加网卡命令)
zonecfg:zone1:net> set address=192.168.10.23 (设置zone1分区的ip地址)
zonecfg:zone1:net> set physical=pcn0 (设置zone1的网卡桥接的哪块网卡)
zonecfg:zone1:net> end (结束网卡配置)
E、zonecfg:zone1> verify (检验配置)
F、zonecfg:zone1> commit (提交配置)
我的测试环境:
## 查看配置文件
bash-3.2# zonecfg -z vmtest02
zonecfg:vmtest02> info
zonename: vmtest02
zonepath: /export/home/vmtest02
brand: native
autoboot: true
bootargs:
pool:
limitpriv:
scheduling-class: FSS
ip-type: shared
hostid:
net:
address: 192.168.233.200
physical: e1000g0
defrouter: 192.168.233.2
capped-memory:
physical: 512M
[swap: 1G]
[locked: 512M]
rctl:
name: zone.max-swap
value: (priv=privileged,limit=1073741824,action=deny)
rctl:
name: zone.max-locked-memory
value: (priv=privileged,limit=536870912,action=deny)
zonecfg:vmtest02> exit
bash-3.2# zonecfg -z vmtest01
zonecfg:vmtest01> info
zonename: vmtest01
zonepath: /export/home/vmtest01
brand: native
autoboot: true
bootargs:
pool:
limitpriv:
scheduling-class:
ip-type: shared
hostid:
inherit-pkg-dir:
dir: /lib
inherit-pkg-dir:
dir: /platform
inherit-pkg-dir:
dir: /sbin
inherit-pkg-dir:
dir: /usr
inherit-pkg-dir:
dir: /export/home/oracle
net:
address: 173.21.73.121
physical: elxl0
defrouter 未指定
zonecfg:vmtest01> exit
bash-3.2#
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
#安装虚拟机
zoneadm -z vmtest02 install
#启动虚拟机
zoneadm -z vmtset02 boot
#登陆虚拟机
bash-3.2# zlogin vmtest02
[已连接到区域 ‘vmtest02‘ pts/2]
Last login: Mon Mar 9 18:45:40 on pts/6
Oracle Corporation SunOS 5.10 Generic Patch January 2005
#
关闭zone
-bash-3.2$ ls -l
total 2
drwxr-xr-x 4 oracle oinstall 512 Oct 13 17:08 app
-bash-3.2$ exit
logout
# exit
[与区域 ‘vmtest02‘ pts/2 的连接已关闭]
bash-3.2# zoneadm -z vmtest02 halt
bash-3.2#
#查看虚拟机基本信息
bash-3.2# zoneadm list -civ
ID NAME STATUS PATH BRAND IP
0 global running / native shared
- vmtest02 installed /export/home/vmtest02 native shared
- vmtest01 installed /export/home/vmtest01 native shared
bash-3.2#
@@@@@@@@@@@@@@@@@2 进程与文件的关系
--外部机器
bash-3.2# hostname
unknown
bash-3.2#
--虚拟出来机器
-bash-3.2$ hostname
vmtest02OQ
-bash-3.2$
--虚拟出来机器
-bash-3.2$ ps -ef|grep lsnr
oracle 4501 2708 0 20:02:08 ? 0:00 /export/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr LISTENER -in
-bash-3.2$
--父进程关系
-bash-3.2$ ps -ef|grep 2708
root 2708 2708 0 17:57:16 ? 0:00 zsched
daemon 2948 2708 0 17:57:20 ? 0:00 /usr/sbin/rpcbind
root 3375 2708 0 17:58:22 ? 0:00 /usr/lib/sendmail -bl -q15m
root 3186 2708 0 17:57:23 ? 0:00 /usr/dt/bin/dtlogin -daemon
root 2720 2708 0 17:57:16 ? 0:01 /lib/svc/bin/svc.startd
root 2943 2708 0 17:57:20 ? 0:00 /usr/sbin/cron
root 2718 2708 0 17:57:16 ? 0:00 /sbin/init
...
oracle 4501 2708 0 20:02:08 ? 0:00 /export/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr LISTENER -in
root 3145 2708 0 17:57:22 ? 0:00 /usr/lib/snmp/snmpdx -y -c /etc/snmp/conf
root 3136 2708 0 17:57:22 ? 0:00 /usr/sfw/sbin/snmpd
root 3484 2708 0 18:45:12 pts/6 0:01 -sh
root 3294 2708 0 17:57:24 ? 0:00 /usr/lib/dmi/dmispd
noaccess 3355 2708 0 17:57:25 ? 0:26 /usr/java/bin/java -server -Xmx128m -XX:+UseParallelGC -XX:ParallelGCThreads=4
oracle 4525 4473 0 20:06:45 pts/6 0:00 grep 2708
--虚拟机器
-bash-3.2$ ps -ef|grep lsnr
oracle 4501 2708 0 20:02:08 ? 0:00 /export/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr LISTENER -in
oracle 4528 4473 0 20:07:38 pts/6 0:00 grep lsnr
-bash-3.2$ ls -l /export/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr
-rwxr-x--x 1 oracle oinstall 1057088 Oct 13 17:24 /export/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr
-bash-3.2$
--外部机器
bash-3.2# ps -ef|grep lsnr
lihj 4501 1 0 20:02:08 ? 0:00 /export/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr LISTENER -in
bash-3.2#
bash-3.2# ls -l /export/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr
/export/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr: 无此文件或目录
bash-3.2#
#################### 虚拟机的进程在外部机器上可以看到的,不过父进程是不一样的,且外部机器上是没有文件的!
资源的添加实验稍后:::
标签:
原文地址:http://blog.csdn.net/itdba/article/details/44159677