Solaris Resource Manager 1.3 系统管理指南

第 4 章 启动过程

在 Solaris 启动过程中,Solaris Resource Manager 软件的各项功能在不同点被启用。主要步骤介绍如下:

不带 Solaris Resource Manager 的启动

如果您必须在 Solaris Resource Manager 不活动的条件下启动系统,则应修改 /etc/system 文件中的 initclass 参数,以反映时间共享 (TS) 而非 SHR。进行这一操作的一种简单方法就是使用 boot 命令的 -a (询问)选项,这样系统就会提示您使用系统文件。对于其它提示,可按下回车键接受缺省值,直到系统提示您输入系统文件名称为止。对于系统文件的名称的提示,可键入 etc/system.noshrload (开头无斜线)作为响应。下面介绍这一过程的例子:

ok boot -a  
Booting from: sd(0,0,0) -a 
Enter filename [kernel/unix]:
Enter default directory for modules
 [/platform/SUNW,UltraSPARC/kernel /kernel /usr/kernel]: 
SunOS Release 5.6 Version ... [UNIX(R) System V Release 4.0]
Copyright (c) 1983-1997, Sun Microsystems, Inc. 
Name of system file [etc/system]: etc/system.noshrload
root filesystem type [ufs]: 
Enter physical name of root device 
 [/sbus@1,f8000000/esp@0,800000/sd@3,0:a]:

请注意,/etc/system.noshrload 只是 /etc/system 的一个备份副本,是在安装 Solaris Resource Manager 时生成的。如果后来又对 /etc/system 进行过编辑,则 /etc/system.noshrload 应得到并行维护,从而使其不同之处只是 Solaris Resource Manager 所作的修改:

# diff /etc/system /etc/system.noshrload 
< # enable srm  < set initclass='SHR'

启动序列事件

在换成多用户模式时发生的事件的序列对于 Solaris Resource Manager 特别重要。下列步骤序列可正确建立 Solaris Resource Manager 系统:

  1. 使用 srmadm 命令配置并启用 Solaris Resource Manager。

    这时,限制数据库将被打开,SHR 调度程序将被启用。有关这个进程的详情,请参阅使用srmadm 启用 Solaris Resource Manager

  2. 分配“丢失的”(srmlost) 和“空闲的”(srmidle) lnodes。

  3. 启动 Solaris Resource Manager 守护程序。

    有关这个进程的详情,请参阅启动 Solaris Resource Manager 守护程序

  4. 在适当 lnode 上启动其它的系统守护程序。

上述进程的步骤 1 到 3 中所使用的缺省脚本见于附件。

系统守护程序进程

特别重要的是,应将守护程序(一般永久运行的系统维护进程)附加到除 root lnode 以外的 lnode 上。进程附加到 root lnode 要将对 CPU 要求较高的任何进程附加到 root lnode 上。将守护程序附加到其自己的 lnode 上可使中央系统管理员为它们分配适当的 CPU 份额。

在启动过程中,每个新的进程都从其父节点进程继承其 lnode 附加。因为 init 进程是附加到 root lnode 上的,所以,所有后续进程也是如此。直到 Solaris Resource Manager 初始化脚本开始运行且限制数据库已被打开,各进程都不能附加到其它 lnode 上;即使这只发生在某个进程进行公开的 setuid 系统调用(例如使用 login(1)) 或公开地询问 Solaris Resource Manager 附加到指定 lnode(如 srmuser(1SRM) 命令所进行的那样)。在 setuid 文件模式位已经设定的条件下运行一个程序也不会改变 lnode 附加。

所以,在系统启动过程中自动开始的所有系统程序都会被附加到 root lnode 上。这通常是我们不希望的,因为附加到已成为 CPU 耗用大户的 root lnode 上的任何进程都会严重地干扰其它进程的执行。所以,我们建议用户公开地把作为启动进程的一部分而开始的任何守护程序进程附加到它们自己的 lnode 上,方法是使用 srmuser 命令调用它们。这不会影响其真正的或有效的 UID。

这里显示的是一个可能的例子:

/usr/srm/bin/srmuser network in.named 

可用于替换其启动脚本中的 named( 1M) 守护程序。这要求事先建立网络的用户帐户和 lnode。

使用srmadm 启用 Solaris Resource Manager

srmadm 命令使管理员可以控制 Solaris Resource Manager 的操作状态和系统内的配置。这个命令在从 Solaris Resource Manager init.d(4) 脚本 /etc/init.d/init.srm 向运行级别 2 或 3 转变时经常使用。运行这个命令的目的是确保在系统每次启动时都能为所有参数设定适当的数值,并确保 Solaris Resource Manager 系统可在用户访问系统之前被启用。 srmadm 命令还可用于对通用 Solaris Resource Manager 参数进行管理。有关可使用 srmadm 设定的参数的列表,请参阅 srmadm(1MSRM) 手册页。在 Solaris Resource Manager init.d 脚本中发布的 srmadm 命令可:

有关 借助 srmadm 的通用 Solaris Resource Manager 参数srmadm 命令的某些一般调用,请参阅

启动 Solaris Resource Manager 守护程序

limdaemon(1MSRM) 程序是 Solaris Resource Manager 用户模式守护程序。它通常是向运行级别 2 或 3 转变时作为 Solaris Resource Manager init.d 脚本的最后一步被调用的。它不应该与被内核调用的 srmgr 系统进程(SYS 类中)相混淆。以下 ps(1) 列表显示了这两种进程:

# ps -efc | egrep 'limdaemon|srmgr' 
root     4     0  SYS  60 18:42:14 ?        0:05 srmgr    
root    92     1  SHR  19 18:42:32 ?        0:41 limdaemon
 

limdaemon 程序可执行下列功能:

当得知 Solaris Resource Manager 登录会话期间时,limdaemon 就监视所有用户的终端连接时间,并将此与其连接时间限制进行核对。当几乎达到其连接时间限制时,就向其发送一条通知消息。一旦达到到期时间,就给予一段宽限时间,然后就终止其所有的进程,并将其注销。

limdaemon 程序可使连接时间利用率衰减。如果使用连接时间限制,则必须对该种终端设备类别执行利用率衰减。有关 使用 limdaemonlimdaemon 命令行选项的信息,请参见