作者:Duncan Hardie
2014 年 7 月发布
|
Oracle Solaris 11 是为大型企业环境设计的全面、集成、开放的平台。其内置的 Oracle Solaris 原生区域技术通过在单一公共内核上运行的隔离、封装、高度安全的环境提供应用虚拟化。因此,原生区域提供了位于平台核心的高效、可扩展、零开销的虚拟化解决方案。
包含内核区域特性之后,Oracle Solaris 11.2 提供了一种灵活、经济高效的云就绪解决方案,非常适合数据中心。
本文介绍如何在 Oracle Solaris 11.2 中创建一个内核区域,以及如何根据要求配置、安装和启动内核区域。
您将了解两种主要的内核区域安装方法:直接安装和通过 ISO 映像安装。此外,您还将了解第三种安装方法,使您能够将原生区域转换为内核区域。您将了解如何更新内核区域,使其使用与主机内核中运行的版本不同的 Oracle Solaris 版本。
本文中的示例会让您熟悉 Oracle Solaris 11.2 中安装、配置和管理内核区域的基本过程。
注:本文演示如何通过提到“Oracle Solaris 11.3”和“Oracle Solaris 下一版本”的示例将内核区域从 Oracle Solaris 11.2 更新到更高版本。这些示例纯属假设,仅用于演示目的;目前没有比 Oracle Solaris 11.2 更高的版本。
Oracle Solaris 区域让您可以将一个应用与同一操作系统 (OS) 上的其他应用隔离开,允许您创建一个适合该特定应用的用户受控、安全受控、资源受控的环境。每个 Oracle Solaris 区域可以包含一个完整的环境,还允许您控制 CPU、内存、网络和存储等不同资源。
拥有主机系统的系统管理员可以选择严格管理系统上的所有 Oracle Solaris 区域。系统管理员还可以为其他系统管理员分配特定 Oracle Solaris 区域的权限。这种灵活性允许您对整个计算环境进行量身定制以满足特定应用的需要。
内核区域是最新类型的 Oracle Solaris 区域,不仅具备 Oracle Solaris 区域的所有灵活性、可扩展性和效率,而且还拥有具有独立内核的区域。当您尝试协调属于不同所有者的多个区域环境的更新时,此功能非常有用。
使用内核区域,可在单个内核区域级别、每个所有者方便的时间执行更新。此外,有特定版本要求的应用可以在一个系统上并行运行,并从 Oracle Solaris 区域提供的高整合比中受益。
在本文中,我们将使用不同方法创建三个内核区域:
图 1 概括了我们要执行的步骤:
图 1. 创建内核区域的三种方法图示
创建第一个内核区域之前,我们需要完成几个任务。我们需要检查硬件是否能够运行内核区域,还需要向系统提供有关应用内存使用情况的提示。
内核区域将只在某些类型的硬件上运行,如下所示:
您可以使用 virtinfo
命令轻松查看能够运行内核区域的系统,如清单 1 所示:
root@global:~# virtinfo NAME CLASS non-global-zone supported kernel-zone supported
清单 1
您可以从清单 1 的输出中看到,内核区域受支持。
还有其他一些硬件前提条件;有关完整列表,请参见 Oracle Solaris 内核区域文档。
使用内核区域时,需要向系统提供有关应用内存使用情况的提示。此信息用于限制 ZFS 自适应替换缓存 (ARC) 的增长,使更多内存保持对应用可用,在本例中,对内核区域本身可用。
通过设置 user_reserve_hint_pct
参数提供此提示。为此提供了一个脚本,当前建议将此值设置为 80。
root@global:~# ./set_user_reserve.sh -f 80 Adjusting user_reserve_hint_pct from 0 to 80 Adjustment of user_reserve_hint_pct to 80 successful.
访问 My Oracle Support 网站,然后访问文档 ID 1663862.1,可以找到此脚本及更多信息。
有关创建内核区域和配置其所有属性涉及的所有步骤的完整讨论,请参见创建和使用 Oracle Solaris 内核区域。本文将重点讨论部分步骤来演示如何快速地让内核区域实例上线运行。
首先,检查 ZFS 文件系统和网络状态,如清单 2 所示:
demo@global:~$ zfs list | grep zones rpool/VARSHARE/zones 16.5G 348G 32K /system/zones demo@global:~$ dladm show-link LINK CLASS MTU STATE OVER net1 phys 1500 unknown -- net2 phys 1500 unknown -- net0 phys 1500 up -- net3 phys 1500 unknown --
清单 2
注:在清单 2 中,没有与任何特定区域关联的 ZFS 数据集。稍后我们将看到如何在安装区域时创建这些数据集。还需注意,没有虚拟网络接口卡 (VNIC) 设备。
我们还要查看全局区域的 Oracle Solaris 版本,如清单 3 所示,因为稍后我们将使用此信息:
root@global:~# uname -a SunOS global 5.11 11.2 i86pc i386 i86pc
清单 3
在清单 3 中,我们可以看到版本为 Oracle Solaris 11.2。
注:在本文中,我们将使用 uname
作为一种显示系统内核版本的快捷方式。但是,不 建议用这种方式查看系统版本。建议的方式是查询 entire
软件包,如清单 4 所示,该清单也显示版本为 Oracle Solaris 11.2。(有关如何在查询整个软件包时对输出解码的说明,请参见“了解 Oracle Solaris 11 软件包版本控制”。)
demo@dcsw-79-168:~$ pkg list entire NAME (PUBLISHER) VERSION IFO entire 0.5.11-0.175.2.0.0.41.0 i—
清单 4
我们还可以看到,系统设置了发布者:
root@global:~# pkg publisher PUBLISHER TYPE STATUS P LOCATION solaris origin online F http://ipkg.us.oracle.com/solaris11/dev/
首先使用命令行创建首个内核区域,如清单 5 所示:
root@global:~# zonecfg -z myfirstkz create -t SYSsolaris-kz
清单 5
在清单 5 中,注意我们只需提供区域名称 (myfirstkz
) 和内核区域标记 (SYSsolaris-kz
)。
默认情况下,所有 Oracle Solaris 区域均配置有一个名为 anet
的自动 VNIC,它会自动为我们提供一个网络设备。我们看不到这个网络设备,但它会在区域引导时自动创建(并且在区域关闭时自动删除)。可以使用 dladm
命令对此进行检查:
root@global:~# dladm show-link LINK CLASS MTU STATE OVER net1 phys 1500 unknown -- net2 phys 1500 unknown -- net0 phys 1500 up -- net3 phys 1500 unknown --
我们还可以看到,现在还没有为该内核区域创建存储:
root@global:~# zfs list | grep zones rpool/VARSHARE/zones 16.5G 348G 32K /system/zones
可以使用 zoneadm
命令验证该内核区域现在是否处于已配置状态:
root@global:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared - myfirstkz configured - solaris-kz excl
我们来看看刚创建的内核区域的默认设置。这可以通过将 info
选项传递到 zonecfg
命令实现,如清单 6 所示:
root@global~# zonecfg -z myfirstkz info zonename: myfirstkz brand: solaris-kz autoboot: false autoshutdown: shutdown bootargs: pool: scheduling-class: hostid: 0x3888f5a3 tenant: anet: 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: auto 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 evs not specified vport not specified id: 0 device: match not specified storage: dev:/dev/zvol/dsk/rpool/VARSHARE/zones/myfirstkz/disk0 id: 0 bootpri: 0 capped-memory: physical: 2G
清单 6
在清单 6 的输出中,我们可以看到该区域名为 myfirstkz
,是个内核区域(brand:solaris-kz
),有一个引导磁盘(其位置为 dev:/dev/zvol/dsk/rpool/VARSHARE/zones/myfirstkz/disk0
),最后,为此内核区域分配了 2 GB 物理内存。
但看不到为此内核区域分配的 CPU 资源量。未指定任何内容时,默认值是分配一个虚拟 CPU。稍后启动内核区域时,我们将看到如何验证这一点。
现在已经创建了内核区域,我们需要安装它。
首次安装,我们将使用被称作直接安装 的安装方法。使用直接安装,安装程序运行在主机上。安装程序将创建并格式化内核区域的引导磁盘,并使用主机的软件包发布者在该磁盘上安装 Oracle Solaris 软件包。由于安装程序在主机上运行,只能安装与主机上正在活动运行的 Oracle Solaris 完全相同的版本。
此安装方法利用了 Oracle Solaris 11 映像包管理系统。您将需要确保有权访问映像包管理系统信息库;在本例中,我们可以通过网络访问该信息库。有关映像包管理系统的更多信息,请参见“Oracle Solaris 11 映像包管理系统 (IPS) 基础知识简介”。
运行以下命令安装 myfirstkz
内核区域:
root@global:~# zoneadm -z myfirstkz install Progress being logged to /var/log/zones/zoneadm.20140724T124406Z.myfirstkz.install pkg cache: Using /var/pkg/publisher. Install Log: /system/volatile/install.7395/install_log AI Manifest: /tmp/zoneadm6814.Voa43n/devel-ai-manifest.xml SC Profile: /usr/share/auto_install/sc_profiles/enable_sci.xml Installation: Starting ... Creating IPS image Installing packages from: solaris origin: http://ipkg.us.oracle.com/solaris11/dev/ The following licenses have been accepted and not displayed. Please review the licenses for the following packages post-install: consolidation/osnet/osnet-incorporation Package licenses may be viewed using the command: pkg info --license <pkg_fmri> DOWNLOAD PKGS FILES XFER (MB) SPEED Completed 483/483 64276483/483 64276/64276 543.8/543.8 11.6M/s PHASE ITEMS Installing new actions 87529/87529 Updating package state database Done Updating package cache 0/0 Updating image state Done Creating fast lookup database Done Installation: Succeeded Done: Installation completed in 538.018 seconds.
可以使用 zoneadm
命令查看 myfirstkz
内核区域的状态:
root@global:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared - myfirstkz installed - solaris-kz excl
注:内核区域需要安装在引导磁盘上;使用如清单 7 所示命令,我们可以看到已经创建了这一引导磁盘:
root@global:~# zfs list | grep zones rpool/VARSHARE/zones 16.5G 348G 32K /system/zones rpool/VARSHARE/zones/myfirstkz 16.5G 348G 31K /system/zones/myfirstkz rpool/VARSHARE/zones/myfirstkz/disk0 16.5G 361G 2.92G -
清单 7
您可以在清单 7 中看到,已经自动创建了 /myfirstkz/disk0
数据集。
myfirstkz
上线运行的最后一步是引导它并设置系统配置。我们将在命令行用一条命令引导该区域,然后访问其控制台,如清单 8 所示,因此可以看见大部分控制台输出:
root@global:~# zoneadm -z myfirstkz boot; zlogin -C myfirstkz [Connected to zone 'myfirstkz' console] Boot device: disk0 File and args: reading module /platform/i86pc/amd64/boot_archive...done. reading kernel file /platform/i86pc/kernel/amd64/unix...done. SunOS Release 5.11 Version 11.2 64-bit Copyright (c) 1983, 2014, Oracle and/or its affiliates. All rights reserved. Loading smf(5) service descriptions: 183/183 Configuring devices.
清单 8
注:清单 8 中所示 zlogin
的 -C
选项让我们能够访问区域控制台;该命令将带我们进入该区域,并允许我们在该区域内工作。
因为没有可用的系统配置文件,所以启动了 System Configuration Tool,如图 2 所示。
图 2. System Configuration Tool 初始屏幕
按 F2 继续。
在 System Identity 屏幕(如图 3 所示)中,输入 myfirstkz
作为计算机名,然后按 F2 继续。
图 3. System Identity 屏幕
在 Network 屏幕(如图 4 所示)中,输入适合您网络的网络设置,然后按 F2。在此,我们将选择 Automatically。
图 4. Network 屏幕
在 Time Zone:Regions 屏幕(如图 5 所示)中,选择适合您所在位置的时区区域。在本例中,我们选择 Europe。然后按 F2。
图 5. Time Zone:Regions 屏幕
在 Time Zone:Locations 屏幕(如图 6 所示)中,选择适合您所在位置的时区位置,然后按 F2。
图 6. Time Zone:Locations 屏幕
在 Time Zone 屏幕(如图 7 所示)中,选择适合您所在位置的时区,然后按 F2。
图 7. Time Zone 屏幕
在 Locale:Language 屏幕(如图 8 所示)中,选择适合您所在位置的语言,然后按 F2。
图 8. Locale:Language 屏幕
在 Locale:Territory 屏幕(如图 9 所示)中,选择适合您所在位置的语言地区,然后按 F2。
图 9. Locale:Territory 屏幕
在 Date and Time 屏幕(如图 10 所示)中,设置日期和时间,然后按 F2。
图 10. Date and Time 屏幕
在 Keyboard 屏幕(如图 11 所示)中,选择适合的键盘,然后按 F2。
图 11. Keyboard 屏幕
在 Users 屏幕(如图 12 所示)中,选择 root 密码,输入用户帐户信息。然后按 F2。
图 12. Users 屏幕
在 Support — Registration 屏幕(如图 13 所示)中,输入 My Oracle Support 凭证。然后按 F2。
图 13. Support - Registration 屏幕
在 Support - Network Configuration 屏幕(如图 14 所示)中,选择如何将配置数据发送到 Oracle。然后按 F2。
图 14. Support - Network Configuration 屏幕
在 System Configuration Summary 屏幕(如图 15 所示)中,验证所选配置正确,然后按 F2 应用设置。
图 15. System Configuration Summary 屏幕
区域将继续引导,很快您就会看到控制台登录:
SC profile successfully generated as: /etc/svc/profile/sysconfig/sysconfig-20140724-130314/sc_profile.xml Exiting System Configuration Tool. Log is available at: /system/volatile/sysconfig/sysconfig.log.287 Hostname: myfirstkz Jul 24 15:20:29 myfirstkz sendmail[1690]: My unqualified host name (myfirstkz) unknown; sleeping for retry Jul 24 15:20:29 myfirstkz sendmail[1700]: My unqualified host name (myfirstkz) unknown; sleeping for retry myfirstkz console login:
区域现在已准备好,您可以登录了。在本示例中,现在使用“~.
”转义序列退出控制台。
使用 zoneadm
命令可以检查该区域是否已经引导并运行:
root@global:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared 2 myfirstkz running - solaris-kz excl
与希望的一样,当区域引导时,自动为我们创建了 VNIC。可以使用 dladm
命令进行验证,如清单 9 所示:
root@global:~# dladm show-link LINK CLASS MTU STATE OVER net1 phys 1500 unknown -- net2 phys 1500 unknown -- net0 phys 1500 up -- net3 phys 1500 unknown -- myfirstkz/net0 vnic 1500 up net0
清单 9
在清单 9 中,我们可以看到 VNIC 作为 myfirstkz/net0
列出。
最后一步是登录您的区域去看看。可以从全局区域使用 zlogin
命令实现,如清单 10 所示:
root@global:~# zlogin myfirstkz [Connected to zone 'myfirstkz' pts/1] Oracle Corporation SunOS 5.11 11.2 June 2014 root@myfirstkz:~# uname -a SunOS myfirstkz 5.11 11.2 i86pc i386 i86pc root@myfirstkz:~# ipadm show-addr ADDROBJ TYPE STATE ADDR lo0/v4 static ok 127.0.0.1/8 net0/v4 dhcp ok 10.134.79.210/24 lo0/v6 static ok ::1/128 net0/v6 addrconf ok fe80::8:20ff:fe47:ca30/10 root@myfirstkz:~# dladm show-link LINK CLASS MTU STATE OVER net0 phys 1500 up -- root@myfirstkz:~# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 4.65G 10.7G 32.5K /rpool rpool/ROOT 2.58G 10.7G 31K legacy rpool/ROOT/solaris-5 2.58G 10.7G 2.08G / rpool/ROOT/solaris-5/var 510M 10.7G 508M /var rpool/VARSHARE 2.52M 10.7G 2.43M /var/share rpool/VARSHARE/pkg 63K 10.7G 32K /var/share/pkg rpool/VARSHARE/pkg/repositories 31K 10.7G 31K /var/share/pkg/repositories rpool/VARSHARE/zones 31K 10.7G 31K /system/zones rpool/dump 1.03G 10.8G 1.00G - rpool/export 96.5K 10.7G 32K /export rpool/export/home 64.5K 10.7G 32K /export/home rpool/export/home/demo 32.5K 10.7G 32.5K /export/home/demo rpool/swap 1.03G 10.8G 1.00G - root@myfirstkz:~# zonename global root@myfirstkz:~# exit logout [Connection to zone 'myfirstkz' pts/1 closed]
清单 10
注:在清单 10 中,我们未使用 zlogin
命令的 -C
选项,这意味着未通过区域的控制台访问它。这样我们就可以在结束时直接退出 shell 离开区域。
我们看看清单 10 中所示的输出,看看有什么发现:
uname
命令的输出显示我们运行在 Oracle Solaris 11.2(全局区域中使用的运行 myfirstkz
内核区域的内核版本)上。ipadm
命令的输出显示 myfirstkz
的 IP 地址。一共有四项:两个环回设备(IPv4 和 IPv6)、IP 地址为 10.134.79.210
的 IPv4 net0
设备,最后是一个 IPv6 net0
设备。dladm
命令的输出显示自动创建的 net0
VNIC。zfs list
命令的输出显示我们的 ZFS 数据集。zonename
命令的输出显示我们的区域名称为 global
。对于原生区域,这将是实际区域名称。不过,内核区域实际上运行一个完整的内核实例,因此内核区域中运行的用户拥有自己的全局区域实例。如果要在内核区域中确定区域名称,可以使用 virtinfo
命令:
root@global:~# zlogin myfirstkz [Connected to zone 'myfirstkz' pts/1] Oracle Corporation SunOS 5.11 11.2 June 2014 root@myfirstkz:~# virtinfo -c current get zonename NAME CLASS PROPERTY VALUE kernel-zone current zonename myfirstkz root@myfirstkz:~# exit logout
注:我们在 myfirstkz
中看不到有关全局区域的任何信息,只能看到自己区域的属性。
现在验证了 myfirstkz
已上线运行。您可以将登录信息提供给用户,让用户将其团队内核区域当做一个系统一样完成其配置。
内核区域的一个重要特性就是能够运行与主机全局区域内核版本不同的内核区域。
从 Oracle Solaris 11.2 开始,内核区域既支持向后兼容,也支持向前兼容。实际上,这意味着您不仅可以有一个运行 Oracle Solaris 11.2 的内核区域,而主机运行更高版本的 Oracle Solaris(如 Oracle Solaris 11.3,如果有的话),也可以有一个运行更高版本 Oracle Solaris(如 Oracle Solaris 11.3)的内核区域,而主机运行 Oracle Solaris 11.2。图 16 说明了这一功能。
图 16. 内核区域向前兼容和向后兼容示例
我们来将内核区域更新为使用更高的 Oracle Solaris 版本(假设的“Oracle Solaris 下一版本”),而非主机上运行的版本 (Oracle Solaris 11.2)。
首先,我们使用清单 11 所示命令查看主机全局区域有哪些引导环境:
root@global:~# beadm list BE Active Mountpoint Space Policy Created -- ------ ---------- ----- ------ ------- solaris - - 44.67M static 2012-01-26 18:59 solaris-1 - - 47.78M static 2014-06-25 08:12 solaris-2 - - 46.71M static 2014-06-25 08:40 solaris-3 - - 1.03G static 2014-06-25 23:30 solaris-3-backup-1 - - 221.0K static 2014-07-10 14:23 solaris-4 NR / 52.77G static 2014-07-20 18:41 solaris-backup-1 - - 144.0K static 2012-01-26 19:28
清单 11
在清单 11 中,我们可以看到原生区域引导环境的列表(如果有的话)。不过,我们看不到有内核区域引导环境列出,因为内核区域有自己的引导磁盘。
我们来查看当前发布者并将内核区域指向具有更新内核的发布者。首先登录 myfirstkz
,如清单 12 所示:
root@global:~# zlogin myfirstkz [Connected to zone 'myfirstkz' pts/2] Oracle Corporation SunOS 5.11 11.2 June 2014 root@myfirstkz:~# pkg publisher PUBLISHER TYPE STATUS P LOCATION solaris origin online F http://ipkg.us.oracle.com/solaris11/dev/ root@myfirstkz:~# pkg set-publisher -G '*' -g http://ipkg.us.oracle.com/solaris-n/dev/ solaris root@myfirstkz:~# pkg publisher PUBLISHER TYPE STATUS P LOCATION solaris origin online F http://ipkg.us.oracle.com/solaris-n/dev/
清单 12
请注意,本例将使用一个内部创建的信息库。当有更高版本的 Oracle Solaris 时,您可以自行复制此信息库。在清单 12 中,我们可以看到我们运行的是 Oracle Solaris 11.2,发布者已设置为指向 dev
信息库。
更新之前,我们来看看内核区域当前面对的引导环境:
root@myfirstkz:~# beadm list BE Active Mountpoint Space Policy Created -- ------ ---------- ----- ------ ------- solaris-5 NR / 7.91M static 2014-07-24 13:44
现在更新内核区域,如清单 13 所示:
root@myfirstkz:~# pkg update --accept ------------------------------------------------------------ Package: pkg://solaris/consolidation/osnet/osnet-incorporation@5.12,5.12- 5.12.0.0.0.52.0:20140714T022826Z License: lic_OTN You acknowledge that your use of this Oracle Solaris software product is subject to (i) the license terms that you accepted when you obtained the right to use Oracle Solaris software; or (ii) the license terms that you agreed to when you placed your Oracle Solaris software order with Oracle; or (iii) the Oracle Solaris software license terms included with the hardware that you acquired from Oracle; or, if (i), (ii) or (iii) are not applicable, then, (iv) the OTN License Agreement for Oracle Solaris (which you acknowledge you have read and agree to) available at http://www.oracle.com/technetwork/licenses/solaris-cluster-express-license- 167852.html. Note: Software downloaded for trial use or downloaded as replacement media may not be used to update any unsupported software. Packages to remove: 37 Packages to install: 57 Packages to update: 432 Mediators to change: 4 Create boot environment: Yes Create backup boot environment: No DOWNLOAD PKGS FILES XFER (MB) SPEED Completed 526/526 23157/23157 363.4/363.4 16.7M/s PHASE ITEMS Removing old actions 6580/6580 Installing new actions 9594/9594 Updating modified actions 24807/24807 Updating package state database Done Updating package cache 469/469 Updating image state Done Creating fast lookup database Done Updating package cache 1/1 A clone of solaris-5 exists and has been updated and activated. On the next boot the Boot Environment solaris-6 will be mounted on '/'. Reboot when ready to switch to this updated BE. Updating package cache 1/1 --------------------------------------------------------------------------- NOTE: Please review release notes posted at: http://www.oracle.com/pls/topic/lookup?ctx=solaris11&id=SERNS ---------------------------------------------------------------------------
清单 13
在清单 13 所示命令中,使用 --accept
选项自动接受任何许可。我们在输出中可以看到已经创建了引导环境。下面看看这是什么环境,如清单 14 所示:
root@myfirstkz:~# beadm list BE Active Mountpoint Space Policy Created -- ------ ---------- ----- ------ ------- solaris-5 N / 7.91M static 2014-07-24 13:44 solaris-6 R - 7.39G static 2014-07-24 17:04
清单 14
在清单 14 中,我们可以从 solaris-6
引导环境旁边的 R
看到,重新启动之后将选择这个新环境。
最后,重新启动区域。
root@myfirstkz:~# reboot [Connection to zone 'myfirstkz' pts/2 closed] root@global:~#
现在返回主机全局区域,可以使用 zoneadm
查看内核区域状态,如清单 15 所示:
root@global:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared 3 myfirstkz running - solaris-kz excl
清单 15
如清单 15 所示,内核区域已经重新启动,再次运行中。
下面登录,如清单 16 所示,查看运行的是何种内核版本:
root@global:~# zlogin myfirstkz [Connected to zone 'myfirstkz' pts/2] Oracle Corporation SunOS 5.n sn_52 June 2014
清单 16
清单 16 显示我们正在运行的是一个完全不同的内核:假设的“Oracle Solaris 下一版本”。
下面运行清单 17 所示命令,离开内核区域之前最后看一看引导环境:
root@myfirstkz:~# beadm list BE Active Mountpoint Space Policy Created -- ------ ---------- ----- ------ ------- solaris-5 - - 12.35M static 2014-07-24 13:44 solaris-6 NR / 7.50G static 2014-07-24 17:04 root@myfirstkz:~# exit logout [Connection to zone 'myfirstkz' pts/2 closed]
清单 17
在清单 17 中,我们可以看到现在运行在新的引导环境中。
有时,您可能不想直接安装内核区域,而是希望通过 ISO 映像安装。内核区域支持这种安装方法,本节将介绍如何安装。
借此机会,我们还将介绍如何为内核区域分配一些专用 CPU 资源,以及如何增加额外内存和增加其引导磁盘的大小。
我们来创建一个新的内核区域,与前面所做的类似,但这次将使用 zonecfg
命令添加一些专用 CPU 资源。
首先检查现在有多少 CPU 资源:
root@global:~# psrinfo -t socket: 0 core: 0 cpus: 0,8 core: 1 cpus: 1,9 core: 2 cpus: 2,10 core: 3 cpus: 3,11 socket: 1 core: 8 cpus: 4,12 core: 9 cpus: 5,13 core: 10 cpus: 6,14 core: 11 cpus: 7,15
现在,创建一个名为 iso-kz
的新内核区域,然后为其分配相当于四个 CPU 的专用 CPU 资源:
root@global:~# zonecfg -z iso-kz create -t SYSsolaris-kz root@global:~# zonecfg -z iso-kz zonecfg:iso-kz> add dedicated-cpu zonecfg:iso-kz:dedicated-cpu> set ncpus=4 zonecfg:iso-kz:dedicated-cpu> end zonecfg:iso-kz> verify zonecfg:iso-kz> commit zonecfg:iso-kz> exit
我们可以使用 zonecfg
命令检查区域创建和资源配置是否成功:
root@global:~# zonecfg -z iso-kz info dedicated-cpu dedicated-cpu: ncpus: 4 cpus not specified cores not specified sockets not specified
可以将内核区域设置为拥有虚拟 CPU 或专用 CPU。这两种类型之间的主要区别在于共享。
我们还可以使用 zonecfg
命令向内核区域额外添加内存:
root@global:~# zonecfg -z iso-kz zonecfg:iso-kz> select capped-memory zonecfg:iso-kz:capped-memory> set physical=3g zonecfg:iso-kz:capped-memory> end zonecfg:iso-kz> verify zonecfg:iso-kz> commit zonecfg:iso-kz> exit root@global:~# zonecfg -z iso-kz info capped-memory capped-memory: physical: 3G
现在该安装区域了。为此,我们将使用一个假想的 Oracle Solaris 11.3 ISO 映像,并将增加安装磁盘的大小。默认为 16 GB 磁盘,我们将其增加至 24 GB。清单 18 显示如何在安装时执行此操作:
root@global:~# zoneadm -z iso-kz install -b /root/sol-11_3-42-text-x86.iso -x install-size=24g
清单 18
在清单 18 中,您可以看到此次使用的映像将使用文本安装程序。
回答常规安装问题之后,我们可以登录到区域,如清单 19 所示:
root@global:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared 3 myfirstkz running - solaris-kz excl 5 iso-kz running - solaris-kz excl root@global:~# zlogin iso-kz [Connected to zone 'iso-kz' pts/2] Oracle Corporation SunOS 5.11 11.3 June 2014 root@:~# root@solarisiso-kz:~# psrinfo -t socket: 0 core: 0 cpu: 0 core: 1 cpu: 1 core: 2 cpu: 2 core: 3 cpu: 3 root@:~# exit logout [Connection to zone 'iso-kz' pts/2 closed]
清单 19
在清单 19 中,我们可以看到分配了四个专用 CPU,且所运行的版本不同于主机全局区域。
继续之前,我们先关闭两个内核区域:
root@global:~# zoneadm -z myfirstkz shutdown root@global:~# zoneadm -z iso-kz shutdown
最后一个要尝试的操作是将原生区域转换为内核区域,可以通过 Oracle Solaris 统一存档轻松实现。
本例将使用一个已创建的原生区域。如果您不确定如何创建原生区域,请参见“如何开始在 Oracle Solaris 11 中创建 Oracle Solaris 区域”。
首先看看要转换的原生区域,如清单 20 所示:
root@global:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared 6 native-zone running /system/zones/native-zone solaris excl - myfirstkz installed - solaris-kz excl - iso-kz installed - solaris-kz excl root@global:~# zlogin native-zone [Connected to zone 'native-zone' pts/2] Oracle Corporation SunOS 5.11 11.2 June 2014 root@native-zone:~# touch my_special_files root@native-zone:~# zonename native-zone root@native-zone:~# exit logout [Connection to zone 'native-zone' pts/2 closed] root@global:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared - myfirstkz installed - solaris-kz excl - iso-kz installed - solaris-kz excl - native-zone installed /system/zones/native-zone solaris excl
清单 20
在清单 20 中,我们可以看到该原生区域已上线运行,并且我们已经登录并创建了一个名为 my_special_files
的文件。本示例只是反映从实际环境接收区域时所有已有的配置。最后,我们查看了区域名称,然后注销,关闭原生区域。
注:使用统一存档捕获区域的一大好处是可以在运行的区域上执行捕获,这意味着可以避免中断对最终用户的服务。在此情况下,因为需要将原生区域转换为内核区域(而非克隆原生区域),所以关闭原生区域。
现在创建原生区域的统一存档:
root@global:~# archiveadm create -z native-zone ./native-zone-archive.uar Initializing Unified Archive creation resources... Unified Archive initialized: /root/native-zone-archive.uar Logging to: /system/volatile/archive_log.26165 Executing dataset discovery... Dataset discovery complete Preparing archive system image... Beginning archive stream creation... Archive stream creation complete Beginning final archive assembly... Archive creation complete
创建存档之后,可以查看其内容:
root@global:~# ls -l total 5602777 -rw-r--r-- 1 root root 901992448 Jul 1 06:18 0.175.2_ai_i386.iso -rw-r--r-- 1 root root 1308958720 Jul 24 17:27 native-zone-archive.uar -rw-r--r-- 1 demo staff 675102720 Jul 24 07:37 sol-11_2-42-text-x86.iso root@global:~# archiveadm info -v ./native-zone-archive.uar Archive Information Creation Time: 2014-07-24T21:54:08Z Source Host: global Architecture: i386 Operating System: Oracle Solaris 11.3 X86 Recovery Archive: No Unique ID: e1bf0d42-338b-e879-fec4-ab78290ef55c Archive Version: 1.0 Deployable Systems 'native-zone' OS Version: 0.5.11 OS Branch: 0.175.3.0.0.1.0 Active BE: solaris Brand: solaris Size Needed: 978MB Unique ID: f488ea7c-ab1e-6cc4-d407-c60fce1e3818 AI Media: 0.175.3_ai_i386.iso Root-only: Yes
接下来,我们配置新内核区域,完成安装准备之后,传入存档,如清单 21 所示:
root@global:~# zonecfg -z converted-zone-kz create -t SYSsolaris-kz root@global:~# zoneadm -z converted-zone-kz install -a ./native-zone-archive.uar Progress being logged to /var/log/zones/zoneadm.20140724T233807Z.converted-zone-kz.install [Connected to zone 'converted-zone-kz' console] Boot device: cdrom1 File and args: -B install=true,auto-shutdown=true -B aimanifest=/system/shared/ai.xml reading module /platform/i86pc/amd64/boot_archive...done. reading kernel file /platform/i86pc/kernel/amd64/unix...done. SunOS Release 5.11 Version 11.2 64-bit Copyright (c) 1983, 2014, Oracle and/or its affiliates. All rights reserved. Remounting root read/write Probing for device nodes ... Preparing image for use Done mounting image Configuring devices. Hostname: solaris Using specified install manifest : /system/shared/ai.xml solaris console login: Automated Installation started The progress of the Automated Installation will be output to the console Detailed logging is in the logfile at /system/volatile/install_log Press RETURN to get a login prompt at any time. 23:40:15 Install Log: /system/volatile/install_log 23:40:15 Using XML Manifest: /system/volatile/ai.xml 23:40:15 Using profile specification: /system/volatile/profile 23:40:15 Starting installation. 23:40:15 0% Preparing for Installation 23:40:15 100% manifest-parser completed. 23:40:15 100% None 23:40:15 0% Preparing for Installation 23:40:18 1% Preparing for Installation 23:40:18 2% Preparing for Installation 23:40:19 3% Preparing for Installation 23:40:19 4% Preparing for Installation 23:40:19 5% archive-1 completed. 23:40:21 8% target-discovery completed. 23:40:23 Pre-validating manifest targets before actual target selection 23:40:23 Selected Disk(s) : c1d0 23:40:24 Pre-validation of manifest targets completed 23:40:24 Validating combined manifest and archive origin targets 23:40:24 Selected Disk(s) : c1d0 23:40:24 9% target-selection completed. 23:40:24 10% ai-configuration completed. 23:40:24 9% var-share-dataset completed. 23:40:29 10% target-instantiation completed. 23:40:29 10% Beginning archive transfer 23:40:29 Commencing transfer of stream: ce6d4b69-ad85-e7e1-aaf7-fdbfdc17f001-0.zfs to rpool 23:40:35 30% Transferring contents 23:40:39 50% Transferring contents 23:40:43 70% Transferring contents 23:40:54 86% Transferring contents 23:41:09 Completed transfer of stream: 'ce6d4b69-ad85-e7e1-aaf7-fdbfdc17f001-0.zfs' from file:///system/shared/uafs/OVA 23:41:12 Archive transfer completed 23:41:31 90% generated-transfer-965-1 completed. 23:41:31 90% Beginning IPS transfer 23:41:31 Setting post-install publishers to: 23:41:31 solaris 23:41:31 origin: http://ipkg.us.oracle.com/solaris11/dev/ 23:41:32 90% generated-transfer-965-2 completed. 23:41:32 Changing target pkg variant. This operation may take a while 23:51:17 90% apply-pkg-variant completed. 23:51:21 Setting boot devices in firmware 23:51:21 91% boot-configuration completed. 23:51:21 91% update-dump-adm completed. 23:51:21 92% setup-swap completed. 23:51:22 92% device-config completed. 23:51:23 92% apply-sysconfig completed. 23:51:23 93% transfer-zpool-cache completed. 23:51:36 98% boot-archive completed. 23:51:36 98% transfer-ai-files completed. 23:51:37 98% cleanup-archive-install completed. 23:51:38 100% create-snapshot completed. 23:51:39 100% None 23:51:39 Automated Installation succeeded. 23:51:39 You may wish to reboot the system at this time. Automated Installation finished successfully Shutdown requested. Shutting down the system Log files will be available in /var/log/install/ after reboot svc.startd: The system is coming down. Please wait. root@global:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared - myfirstkz installed - solaris-kz excl - iso-kz installed - solaris-kz excl - native-zone installed /system/zones/native-zone solaris excl - converted-zone-kz installed - solaris-kz excl
清单 21
由清单 21 可见,安装过程成功完成,我们得到一个安装好的内核区域。
现在启动新转换的区域并查看,如清单 22 所示:
root@global:~# zoneadm -z converted-zone-kz boot root@global:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / solaris shared 3 converted-zone-kz running - solaris-kz excl - duckstack unavailable - solaris-kz excl - native-zone installed /system/zones/native-zone solaris excl root@global:~# zlogin converted-zone-kz [Connected to zone 'converted-zone-kz' pts/1] Oracle Corporation SunOS 5.11 11.2 June 2014 root@unknown:~# ls my_special_files
清单 22
由清单 22 可见,原生区域的内容得到保留。
在本文中,我们介绍了如何创建、安装、引导和配置内核区域。您了解到 Oracle Solaris 内核区域可以运行与主机上运行的内核版本不同的内核版本。我们还看到如何执行直接安装和基于 ISO 映像的安装。最后,我们还看到如何使用统一存档将原生区域转换为内核区域。
另请参见以下资源:
Duncan Hardie 是 Oracle Solaris 产品经理,负责 Oracle Solaris 云和虚拟化技术。他随着 Oracle 收购 Sun Microsystems 而加入 Oracle,最开始从事容错产品的设备驱动程序设计,后转入与监视、高性能计算和虚拟化相关的面向客户的服务。目前,Duncan 帮助 Oracle Solaris 产品定义、交付和定位。
修订版 1.0,2014 年 7 月 28 日 |