跳过导航链接 | |
退出打印视图 | |
在 Oracle Solaris 11.1 中使用映像包管理系统打包和交付软件 Oracle Solaris 11.1 Information Library (简体中文) |
交付到引导环境 (boot environment, BE) 中的一些文件必须在 BE 之间共享,这样才能使系统在具有多个 BE 的环境中正常运行。一般情况下,IPS 不支持交付在 BE 之间共享的内容。在一个 BE 中更新的此类共享内容可能不满足其他 BE 的要求。本节介绍了如何交付在 BE 之间共享的内容。
IPS 已在 BE 之间共享了以下目录:
/var/audit /var/cores /var/crash /var/mail
在每个 BE 中,这些目录是指向以下共享目录的符号链接:
/var/share/audit /var/share/cores /var/share/crash /var/share/mail
这些共享目录均位于 VARSHARE 数据集中,它是挂载在 /var/share 上的一个共享数据集。
如果需要在 BE 之间共享其他数据但这些数据在 IPS 软件包中是作为非共享数据交付的,则管理员可能会将此类数据放在独立数据集或远程文件服务器中。不过,创建每目录数据集意味着要在每个区域中创建许多数据集,这是不理想的。
相反,请使用以下过程创建可交付共享数据集的软件包,或修改软件包以共享先前作为非共享内容交付的内容。IPS 支持将未共享内容的旧版软件包更新到在 BE 之间共享内容的同一软件包的较新版本。
以下过程介绍了如何设计必须交付在 BE 之间共享的内容的软件包。
要在 BE 之间共享数据,请将一个共享数据集在引导期间挂载到 BE 中,并使用从 BE 中的相应位置指向该共享数据集的符号链接。在 BE 内,将基本目录结构交付到一个暂存目录。提供一个在引导期间将暂存在 BE 中的内容移动到共享数据集的 SMF 服务,并提供一个执行器来要求重新引导。
在您的软件包中,提供一个存储共享内容的暂存区域。例如,您可以提供一个名为 .migrate 的目录。
将子目录交付到提供您希望在共享数据集中使用的目录结构的 .migrate 目录中。
根据需要,将文件交付到暂存区域中的目录结构。不能共享其他文件系统对象,如链接。
如果交付到暂存区域的内容先前是作为非共享内容交付的,请在新的 dir 或 file 操作中使用 salvage-from 属性。在下例中,以前交付到 /opt/myapplication/logs 的内容现在将交付到可在 BE 之间共享的数据集。此共享数据集的暂存区域为 /opt/.migrate。
以下操作是以前交付的:
dir path=opt/myapplication/logs owner=daemon group=daemon mode=0755
以下操作是针对将共享的目录的新操作:
dir path=opt/.migrate/myapplication/logs owner=daemon group=daemon \ mode=0755 reboot-needed=true salvage-from=/opt/myapplication/logs
删除或重命名目录时移动未打包的内容中还论述了 salvage-from 属性。
在引导期间,脚本可以作为 SMF 方法脚本的一部分运行,以将文件内容从暂存目录移至共享数据集。该脚本必须执行以下步骤:
SMF 方法脚本中的以下命令将创建挂载在 /opt/share 上的数据集 rpool/OPTSHARE。该数据集还可以供 /opt 中的其他共享内容使用。脚本应使用 zfs list 来测试此数据集是否已存在。
zfs create -o mountpoint=/opt/share rpool/OPTSHARE
在共享数据集中,重新创建在 BE 的暂存目录下定义的目录结构中尚未存在的任何部分。
将文件内容从暂存目录移至共享数据集。
以下操作将创建一个符号链接,该符号链接从先前打包的目录指向在系统重新引导时将由脚本在 /opt/share 中创建的共享目录:
link path=opt/myapplication/logs target=../../opt/share/myapplication/logs
这些目录项需要一个 reboot-needed 执行器才能正确支持软件自组装中提到的“不变区域”的更新。如果需要自组装,则在以只读方式重新引导之前,不变区域最多能够在读/写模式下引导到 svc:/milestone/self-assembly-complete:default 里程碑。有关更多信息,请参见 zonecfg(1M) 手册页中的 file-mac-profile 属性。
重新引导时,SMF 服务会将任何新的和挽救的目录内容移至共享数据集。/opt/myapplication 中的符号链接指向该共享数据集。