Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1446825
  • 博文数量: 239
  • 博客积分: 5909
  • 博客等级: 大校
  • 技术积分: 2715
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-24 20:19
文章分类

全部博文(239)

文章存档

2014年(4)

2013年(22)

2012年(140)

2011年(14)

2010年(59)

我的朋友

分类: BSD

2012-05-16 11:10:57

转自水木:

Solaris Zones利用灵活的,软件定义的方式提供了互相隔离的OS环境。

Solaris Zones在一个单独的Solaris OS实例里创建了一个或多个虚拟的OS环境。

Solaris Zones具有以下特性:安全,隔离,虚拟,细粒度,透明。

Solaris Zones分为Global zone(全局zone)和区域zone(local zone).

Global zone相当于原来的系统,是唯一能够接触物理设备和访问所有loca zone的zone。

Global zone总是在运行,即使没有其他配置其他的zone。

在Global zone里面配置的zone叫local zone,local zone与物理设备相隔绝,

在虚拟的平台上运行包括虚拟的网卡、虚拟的文件系统、虚拟的控制台等。

每个local zone都有自己的进程环境和SunOS核心服务,包括所有的网络服务

(inetd,syslogd,rpcbind等等)。

在local zone内,root不能创建设备(mknod),不能访问核心内存,不能加载内核模块.

对local zone的攻击所造成的破坏及其有限。

Solaris Zones提供在一个单OS实例下创建一个或多个虚拟环境的办法.一个zone里面

运行的应用程序与其它zone里面运行的应用程序完全隔离.

Solaris Zones对应用提供了虚拟的OS环境,去除了针对特定物理设备类型的细节部分。

这样做有助于在不同的设备类型上配置运行同一业务。

Solaris Zones支持基于CPU粒度的zone划分

Solaris Zones没有提供新的API供zone环境下的应用使用,应用就像正常使用一台机器

一样正常使用原来的API.

Solaris zones是通过软件技术实现的,其中local zone的实现是通过zoneadmd这个

daemon来实现的,以下是观察zoneadmd这个damon的情况:

root@T2000 # ps -eaf |grep zone

    root   629     1   0 08:55:59 ?           0:00 zoneadmd -z test

    root   784   683   0 08:56:17 zoneconsole    0:00 /usr/lib/saf/ttymon -g -d

/dev/console -l console -T vt100 -m ldterm,ttcompat -

上面表明运行了一个local zone,名字叫test,进程784表示test zone的控制台

root@T2000 # svcs |grep zone

online         Jun_02   svc:/system/zones:default

root@T2000 #          svcs -x zones

svc:/system/zones:default (Solaris zones)

State: online since Mon Jun 19 08:55:58 2006

   See: zones(5)

   See: zoneadm(1M)

   See: /var/svc/log/system-zones:default.log

Impact: None.

root@T2000 # svcs -l zones

fmri         svc:/system/zones:default

name         Solaris zones

enabled      true

state        online

next_state   none

state_time   Fri Jun 02 15:15:45 2006

logfile      /var/svc/log/system-zones:default.log

restarter    svc:/system/svc/restarter:default

dependency   require_all/none svc:/milestone/multi-user-server (online)

以上是用svcs观察zone的服务daemon

下面讲述创建一个local zone的过程,该local zone机器名叫mmsg180

root@T2000 # mkdir /export/zone/mmsg180

root@T2000 # chmod -R 700 /export/zone/mmsg180

root@T2000 # ls -adl /export/zone/mmsg180/

drwx------   2 root     root         512 Jun 28 14:49 /export/zone/mmsc180/

root@T2000 # zonecfg -z mmsg180

mmsg180: No such zone configured

Use 'create' to begin configuring a new zone.

zonecfg:mmsg180> create

/* 创建local zone mmsg180 */

zonecfg:mmsg180> set zonepath=/export/zone/mmsg180

/* 设置zone mmsg180在全局zone下的目录 */

zonecfg:mmsg180> set autoboot=true

/* 设置zone mmsg180在全局zone启动时自动启动

zonecfg:mmsg180> add net

/* 配置zone mmsg180的网络 */

zonecfg:mmsg180:net> set address=10.40.95.150

/* 设置zone mmsg180的IP地址 */

zonecfg:mmsg180:net> set physical=ipge0

/* 将zone mmsg180的IP配置到全局zone的ipge0接口 */

zonecfg:mmsg180:net> end

/* 结束zone mmsg180的网络配置 */

zonecfg:mmsg180> verify

zonecfg:mmsg180> commit

zonecfg:mmsg180> exit

创建玩zone mmsg180,就开始安装

root@T2000 # zoneadm -z mmsg180 install

Preparing to install zone .

Creating list of files to copy from the global zone.

Copying <3301> files to the zone.

Initializing zone product registry.

Determining zone package initialization order.

Preparing to initialize <1070> packages on the zone.

Initialized <1070> packages on zone.

Zone is initialized.

Installation of <1> packages was skipped.

Installation of these packages generated warnings:

The file contains a

log of the zone installation.

安装完zone mmsg180就可以启动了,可以通过重启zones来启动zone mmsg180

root@T2000 # svcadm restart zones

也可以通过zonadm -z mmsg180 boot

这时候还需要zlogin -C mmsg180登录到zone mmsg180的console进行一些相关配置,

比如语言,终端以及机器名,Kerberos,Name service,区域,root密码以及NFS version之类的

设置,设置完后可以看到"Zone rebooting"的字样,很快就重启完zone mmsg180,这样就可以

使用zone mmsg180了.

过一会就可以看到zone mmsg180已经启动了

root@T2000 # ps -eaf |grep zone

    root 14810     1   0 10:35:03 ?           0:00 zoneadmd -z mmsg180

    root 14808     1   0 10:35:03 ?           0:00 zoneadmd -z test

    root 15044 14839   0 10:35:20 zoneconsole    0:00 /usr/lib/saf/ttymon -g -d

/dev/console -l console -T vt100 -m ldterm,ttcompat -

在全局zone下可以用zoneadm list查看所有的zone情况:

root@T2000 #     zoneadm list

global

test

mmsg180

下面从Global zone登录到zone mmsg180的console:

root@T2000 # zlogin -C mmsg180

[Connected to zone 'mmsg180' console]

Solaris 10 Zone mmsg180!

mmsg180 console login:

在local zone下输入转义字符~.退出local zone,回到global zone.

mmsg180 console login: ~.

[Connection to zone 'mmsg180' console closed]

在全局zone下查看zone mmsg180的配置

root@T2000 # zonecfg -z mmsg180

zonecfg:mmsg180> info

zonepath: /export/zone/mmsg180

autoboot: true

pool:

inherit-pkg-dir:

        dir: /lib

inherit-pkg-dir:

        dir: /platform

inherit-pkg-dir:

        dir: /sbin

inherit-pkg-dir:

        dir: /usr

net:

        address: 10.40.95.150

        physical: ipge0

zonecfg:mmsg180> exit

/usr/bin/zonename  print name of current zone

删除zone可以用如下办法

root@T2000 # zoneadm -z mmsc140 uninstall

Are you sure you want to uninstall zone mmsc140 (y/[n])? y

root@T2000 #

或者

root@T2000 # zoneadm -z test uninstall -F

其实相当于删除/export/zone目录下的test目录

阅读(3337) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~