Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1099482
  • 博文数量: 286
  • 博客积分: 3124
  • 博客等级: 中校
  • 技术积分: 5186
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-24 23:42
个人简介

Bomi

文章存档

2015年(1)

2013年(1)

2012年(281)

2008年(3)

分类: 虚拟化

2012-02-05 12:45:47

By Paul Lovvik、Joseph Balenzano, 8/18/08                   

摘要:本文提供的信息可以帮助您将应用程序引入到 zone 中(使用 Solaris 10 OS 的 Solaris zones 特性)。这个过程包括软件的安装、配置以及 zone 限制的解决。本文还将讨论适用于应用程序提供商的最佳实践。
1. 让软件在本地 zone 中运行:概述
        




“我的软件是否能够在 zone 中运行?”

许多软件提供商都热衷于将 Solaris 10 操作系统的新特性集成到自己的软件中。作为 Sun 的合作伙伴,它们经常会问到上面这个问题。虽然 Solaris 10 OS 支持的大多数软件在都能够在非全局 zone 中正常运行,但是这个问题却不容易回答,因为非全局 zone 支持面临着各种实际问题的阻挠。如果没有有效的流程来帮助软件供应商实现非全局支持,供应商可能无法或者难以将 zone 支持引入到自己的产品中。

本文旨在帮助您解决 zone 中的应用程序支持问题。此过程包括软件的安装、配置以及 zone 限制的可能解决方案。本文还将讨论了应用程序供应商提供 zone 支持的最佳实践。

在继续之前,我们先介绍几个与“ zone”有关的术语。zone 是一种用于虚拟化操作系统服务的分区技术,它提供了一个安全的隔离环境来运行应用程序。Solaris 10 OS 支持全局 zone 和非全局 zone 这两个概念。全局 zone 是 Solaris 操作环境的全局视图,它适用于各种目的和用途。每个 Solaris 实例都有一个相应的名称为 global 的全局 zone。在 Solaris 实例内创建的软件分区被称作非全局 zone。一个 Solaris OS 实例内可以存在多个非全局 zone,而且每个非全局 zone 都有一个惟一的名称。在本文档的其余部分,术语“ zone”表示非全局 zone。当需要明确区分非全局 zone 和全局 zone 时,将使用完全限定 zone 类型。
最简单的答案

如果希望将 zone 支持添加到自己的软件中,那么,了解最快的入门方法将使您受益匪浅。那么,您会遇到哪些问题呢?应该如何估算所需的工作量?

zone 提供了标准的 Solaris 界面和应用程序环境,而且没有强加新的 ABI 或者 API。在绝大多数情况下,应用程序无需重新编译即可在 zone 中运行。这是一个很好的消息,而且仅这一点就有可能使您的应用程序符合要求。在 zone 中运行的进程上强加了少量的限制,可以保证 zone 中的软件不会对其他 zone 或者全局 zone 造成不利影响。文章稍后将详细探讨各种限制,不过,这些限制具有一个共同特征,就是它们需要的特权仅对以前的 Solaris 发行版中的超级用户 (root) 可用。

如果使用非特权用户运行软件,则“我的软件是否能够在 zone 中运行?”这一问题的答案是肯定的。这是简化 zone 支持问题最简单的方法。例如,如果在 Solaris 8 或者 Solaris 9 下以非根用户运行软件,显然不需要拥有任何权限便可使用系统和库调用(这在 Solaris 10 OS 的 zone 中是受到限制的)。如果是这种情况,那么真是太好了,因为您不必执行完全限定过程便可验证自己的软件是否能够在 zone 中正常运行。

这个答案相当简单,而且涵盖了在 Solaris 上运行的大多数软件,但是,即使在这种简单的情况下也会出现问题。问题是,在应用程序的安装、配置和管理期间,某些操作可能需要由特权用户来执行。此外,如果您的软件中包含设置了 SUID(设置用户 ID)权限位集(permission bit set)的可执行文件,则必须更加细致地考虑是否需要对该软件的这些部分进行进一步的限定。这些都是需要引起您注意的地方。在声明支持本地 zone 配置之前,至少需要确保已实际安装并执行健全测试(sanity test)。对于默认未在 zone 中公开设备依赖关系或者文件系统依赖关系来说,这一点让人感到有些吃惊。即使您确信自己的软件肯定能在 zone 中运行,但仍然有必要了解正确支持软件所需的 zone 配置。

如果需要由特权用户来运行您的软件,那么,您的软件很可能可以在 zone 中运行。但如果想确定究竟是否可以在 zone 中运行,则需要进一步研究。
更困难的任务

如果您的软件确实需要特权用户执行,则需要通过更多的研究来确定应用程序是否能够在非全局 zone 中正确运行。

问题是,您必须确定所使用的 API 是否受到限制,它们可能由于安全问题而无法在 zone 中如期运行。下一节将列出所有已知的 zone 系统调用限制。

如果您确定所使用的 API 未在 zone 中受到限制,那么,您的软件将能够在 zone 中正确运行。可以保证,对于大多数软件而言,的确如此。如果您正在使用受限制的 API,那么您的软件在 zone 中运行时就会受到一定的限制。如果是这种情况,仍然可能在非全局 zone 中支持软件的执行。该软件多半具有已知限制。当应用程序在 zone 中执行时,可以将应用程序修改为“ zone 感知的”,并以稍微不同的方式运行。关闭应用程序的某些功能可以避免运行发生问题。
阅读(976) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~