适用于 Solaris 2.6 (SPARC 平台版) 的 Solaris Resource Manager 1.0 系统管理指南

限制数据库

限制数据库是用户信息的数据库, Solaris Resource Manager 用于进行所有的资源控制。其中为每个 UID 包括有一个 lnode,将该 UID 作为进入文件的一个直接索引,对 lnode 进行访问。如果某个数值较大的 UID 有一个 lnode,则限制数据库会看起来很大。但是,在系统中用户的 UID 并非连续的情况下,在一个对此予以支持的文件系统类型上,限制数据库会有很大的缝隙或者空洞。这意味着,并未实际为存储该文件的"空白"部分分配任何磁盘块。ufs 文件系统支持稀疏文件,但 tmpfs 文件系统不支持。请参阅下面 "保存和恢复限制数据库" 中的讨论,了解稀疏文件对于保存和恢复限制数据库的含义。

您每创建一个新的用户,就必须创建一个新的 lnode。

创建限制数据库

Solaris Resource Manager 启动文件(/etc/init.d/init.srm)在第一次被调用时,会创建一个初始的限制数据库。而如果发现该文件丢失,则会在任何启动时加以创建。

典型情况是,限制数据库位于 /var/srm 目录中。

限制数据库应当为根、根所拥有的组所拥有,且只能由其拥有者进行读取。无需写入许可,因为只有拥有超级用户凭证的核心代码写入该文件。


小心:小心:

如果某个用户可以写入 Solaris Resource Manager 限制数据库,则系统安全性就有可能遭受威胁。


保存和恢复限制数据库

因为限制数据库可能是一个稀疏文件,所以在复制该文件时应当谨慎。如果进行写入的是一个并不支持稀疏文件的实用程序,则该文件很有可能消耗大量的磁盘空间,原因在于文件的空白区域会读作连续的零,且写回时是作为真正的块,而不是空白区域。如果文件是通过诸如 tar(1)cpio(1)或者 cp(1)这样的实用程序进行复制、备份或者恢复的,则有可能发生此类情形。但诸如 ufsdump(1M)ufsrestore(1M)的程序可以保持空洞。

进行限制数据库备份和恢复,也可以借助 limreport(1SRM),生成文件的一个 ASCII 版本,然后借助 limadm(1MSRM),从所保存的 ASCII 版本,重新创建原来的文件。例如,命令:

limreport 'flag.real' - lname preserve > /var/tmp/savelnodes 

将创建 /var/tmp/savelnodes,用作口令映射中每个用户的 lnode 的 ASCII 代表。注意,这并不保存没有相对应的口令映射条目的 lnode。建议至多只为口令映射中的全部 UID 创建 lnode。

命令

# limadm set -f - < /var/tmp/savelnodes

将重新创其建数据以前得到过保存的 lnode。该命令不会删除未经保存的 lnode,所以这些技巧也可以用于保存和恢复所选的 lnode,而不是整个限制数据库。

"limreportlimadm 命令" 更加详细地描述 limreport(1SRM)limadm(1MSRM)的使用方法。用于让管理员熟悉用这些命令来保存和恢复 lnode 的方法,因为在对 lnode 结构的解释进行改变时有可能用到这些命令(其定义见于配置文件)。

注意,随着限制数据库在正常的系统启动过程中经常发生变化,建议在系统静止或者正处于单用户模式时进行备份操作。同理,对整个限制数据库进行恢复,只应在 Solaris Resource Manager 未在使用时进行,诸如系统正处于单用户模式时。