准备工作:
带有 Solaris 11 虚拟机(VMware 工作站或者 virtualbox)的好的笔记本电脑/台式机。
IPS 存储库。
ZFS 文件系统安装区(这是必需的,是 Solaris 11)。
配置Zone
我们需要的第一件事是要创建的新Zone的安装路径。
我将在全局Zone的 rpool 下创建一个文件系统。
root@onitroad:~# zfs create rpool/zone01
我们将使用 zonecfg 创建新Zone zone01 并通过 zonecfg 命令的交互式配置流程分配必要的资源。
root@onitroad:~# zonecfg -z zone01 Use 'create' to begin configuring a new zone. zonecfg:zone01> create create: Using system default template 'SYSdefault' zonecfg:zone01> set zonepath=/rpool/zone01 zonecfg:zone01> set autoboot=true zonecfg:zone01> set bootargs="-m verbose" zonecfg:zone01> verify zonecfg:zone01> commit zonecfg:zone01> exit
验证我们创建的Zone
root@onitroad:~# zoneadm list -icv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared - zone01 configured /rpool/zone01 solaris excl
安装Zone
在安装Zone之前,请确保我们有可用的 IPS 存储库,因为 Solaris 11 使用 IPS 通过从 IPS 存储库下载安装镜像来安装新Zone。
我在我的全局Zone中设置了一个本地存储库。
root@onitroad:~# pkg publisher PUBLISHER TYPE STATUS P LOCATION solaris oroirn online F file:///sol_11_repo/repo/
现在使用以下命令安装Zone:
root@onitroad:~# zoneadm -z zone01 install /rpool/zone01 must not be group readable. /rpool/zone01 must not be group executable. /rpool/zone01 must not be world readable. /rpool/zone01 must not be world executable. changing zonepath permissions to 0700. Progress being logged to /var/log/zones/zoneadm.20131122T084145Z.zone01.install Image: Preparing at /rpool/zone01/root. AI Manifest: /tmp/manifest.xml.C8aOIi SC Profile: /usr/share/auto_install/sc_profiles/enable_sci.xml Zonename: zone01 Installation: Starting ... Creating IPS image Startup linked: 1/1 done Installing packages from: solaris oroirn: http://localhost:1008/solaris/ffbe7adc15370eee5e159f41613703a3f440bf35/ DOWNLOAD PKGS FILES XFER (MB) SPEED Completed 183/183 33556/33556 222.2/222.2 560k/s PHASE ITEMS Installing new actions 46825/46825 Updating package state database Done Updating image state Done Creating fast lookup database Done Installation: Succeeded Note: Man pages can be obtained by installing pkg:/system/bananaal done. Done: Installation completed in 510.747 seconds. Next Steps: Boot the zone, then log into the zone console (zlogin -C) to complete the configuration process. Log saved in non-global zone as /rpool/zone01/root/var/log/zones/zoneadm.20131122T084145Z.zone01.install
该Zone现已安装。
检查已安装Zone的状态:
root@onitroad:~# zoneadm list -icv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared - zone01 installed /rpool/zone01 solaris excl
我们还可以检查在 /rpool/zone01 下为 zone01 创建的文件系统。
root@onitroad:~# zfs list |grep zone rpool/zone01 414M 4.50G 32K /rpool/zone01 rpool/zone01/rpool 414M 4.50G 31K /rpool rpool/zone01/rpool/ROOT 414M 4.50G 31K legacy rpool/zone01/rpool/ROOT/solaris 414M 4.50G 390M /rpool/zone01/root rpool/zone01/rpool/ROOT/solaris/var 24.3M 4.50G 23.7M /rpool/zone01/root/var rpool/zone01/rpool/VARSHARE 31K 4.50G 31K /var/share rpool/zone01/rpool/export 62K 4.50G 31K /export rpool/zone01/rpool/export/home 31K 4.50G 31K /export/home
用于创建Zone的 ZFS 数据集使我们能够克隆Zone。
在 oracle solaris 10 中,引入了Zone,这使我们能够为可以在单台机器上运行的应用程序创建隔离环境。
Solaris 11 为Zone技术添加了许多新功能。
如何在 solaris 11 中创建Zone?
引导Zone
现在最后一步是启动已配置、已安装的Zone并使用系统配置工具 (SCI) 配置该Zone。
root@onitroad:~# zoneadm -z zone01 boot
root@onitroad:~# zlogin -C zone01 [Connected to zone 'zone01' console]
按回车键后系统配置工具启动。
使用 ESC + 2 浏览下一个屏幕。
将Zone的主机名设置为 zone01,将网络配置模式设置为手动。
在下一个屏幕上,为 NIC 卡 net0 提供 IP 地址和网络掩码。
我们不会配置任何 DNS 服务,因此请选择“不配置 DNS”。
为备用名称服务选择“无”选项。
在接下来的屏幕上,根据位置设置时区。
现在设置root密码。
此外,如果我们想要创建任何用户,我们可以在此屏幕上进行。
在继续之前仔细检查系统配置摘要。
在此之后,系统将被配置。
无需以Zone的控制台登录身份登录。
使用“~”。
从控制台出来。
从全局Zone检查 zone01 的状态。
现在应该可以运行了。
root@onitroad:~# zoneadm list -icv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared 1 zone01 running /rpool/zone01 solaris excl
如果我们检查 dladm,我们会看到创建了一个虚拟 NIC:
root@onitroad:~# dladm show-link LINK CLASS MTU STATE OVER net0 phys 1500 up - zone01/net0 vnic 1500 up net0
现在登录到该Zone
root@onitroad:~# zlogin zone01 [Connected to zone 'zone01' pts/3] Oracle Corporation SunOS 5.11 11.1 September 2012 root@zone01:~# uname -a SunOS zone01 5.11 11.1 i86pc i386 i86pc
检查网络设置:
root@zone01:~# dladm show-link LINK CLASS MTU STATE OVER net0 vnic 1500 up ?
root@zone01:~# ipadm show-addr ADDROBJ TYPE STATE ADDR lo0/v4 static ok 127.0.0.1/8 net0/v4 static ok 192.168.1.25/24 lo0/v6 static ok ::1/128 net0/v6 addrconf ok fe80::8:20ff:fe89:4b7c/10
root@zone01:~# ifconfig -a lo0: flags=2001000849[UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL] mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 net0: flags=1000843[UP,BROADCAST,RUNNING,MULTICAST,IPv4] mtu 1500 index 2 inet 192.168.1.25 netmask ffffff00 broadcast 192.168.1.255 ether 2:8:20:89:4b:7c lo0: flags=2002000849[UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL] mtu 8252 index 1 inet6 ::1/128 net0: flags=20002004841[UP,RUNNING,MULTICAST,DHCP,IPv6] mtu 1500 index 2 inet6 fe80::8:20ff:fe89:4b7c/10 ether 2:8:20:89:4b:7c
如果我们检查 zfs list,我们只会看到分配给 zone 的 zfs 数据集,而不是全局文件系统。
root@zone01:~# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 441M 4.48G 31K /rpool rpool/ROOT 441M 4.48G 31K legacy rpool/ROOT/solaris 441M 4.48G 416M / rpool/ROOT/solaris/var 24.4M 4.48G 23.8M /var rpool/VARSHARE 39K 4.48G 39K /var/share rpool/export 63K 4.48G 32K /export rpool/export/home 31K 4.48G 31K /export/home
要从非全局Zone检查Zone的完整配置详细信息:
root@onitroad:~# zonecfg -z zone01 info zonename: zone01 zonepath: /rpool/zone01 brand: solaris autoboot: true bootargs: -m verbose file-mac-profile: pool: limitpriv: scheduling-class: ip-type: exclusive hostid: fs-allowed: anet: linkname: net0 lower-link: auto allowed-address not specified configure-allowed-address: true defrouter not specified allowed-dhcp-cids not specified link-protection: mac-nospoof mac-address: random auto-mac-address: 2:8:20:89:4b:7c mac-prefix not specified mac-slot not specified vlan-id not specified priority not specified rxrings not specified txrings not specified mtu not specified maxbw not specified rxfanout not specified vsi-typeid not specified vsi-vers not specified vsi-mgrid not specified etsbw-lcl not specified cos not specified pkey not specified linkmode not specified