故障表现:在SCO Openserver 5.0.0 5.0.2 5.0.4 5.0.5上制作系统应急盘时,出现下列错误提示:
Notice: HTFS: Out of inodes on EAFS dev marry (76/2)
随后,软盘的制作失败(笔者安装了20多台SCO Openserver 5.0.4,均不能正确制作系统应急盘)。
故障的原因:在SCO UNIX系统中,每个特殊 i 节点(如设备节点)占用128个字节,由于软盘空间有限,所以系统分配给软盘的 i 节点数是固定的。在制作软盘文件系统时(包括系统应急Root / Boot盘),当软盘中所需建立的 i 节点数超过系统分配数额时,系统报错:“Out of inodes”,软盘文件系统制作失败。
在处理这个问题的之前,首先应确认一下你的系统是否安装了最近的系统补丁(Release Supplement),若未安装,应先安装相应的系统补丁。对应的系统补丁有:
SCO Openserver 5.0.0
Release Supplement 5.0.0d
SCO Openserver 5.0.4 RS504C
SCO Openserver 5.0.5 RS505A
其中SCO Openserver 5.0.4 是必需打补丁的( 5.0.4 存在较多的Bug)。
方法一:削减软盘上所要建立的设备节点数,使 i 节点总数小于系统分配数额。由于在系统紧急事件引导环境中,许多设备节点并不是必需的,因此可通过削减相应的设备节点,减少 i 节点资源的占用。
优点:不增加系统分配的 i 节点数额,不会减少软盘上的可用空间。
缺点:要削减的设备节点较难判定。
操作步骤:
1、以 root 登录;
2、进入 /usr/lib/mkdev 子目录:
cd /usr/lib/mkdev
3、备份 fd 脚本:
cp fd fd.orig
4、在 vi 文本编辑器中打开 /usr/lib/mkdev/fd 文件,搜索以下行:
NOTREQ="aud byte cbd cdt da dup
ecc_ eisarom err log marry pa\
prf ptm ptspwr uapm rtc sleeper"
列出来的这些设备均来自于 /etc/conf/node.d/*,但它们将不包含在软盘系统中。
5、将“ptspwr”改为“pts pwr”,将“cbd”改为“cdb”。
6、在NOTREQ表中增加相应设备。
SCO Openserver 5.0.0 及 5.0.2系统NOTREQ表如下所示:
NOTREQ="aud byte cdb cdt da dup
ecc_ eisarom err log marry pa\
prf ptm pts pwr uapm rtc sleeper merge mpm spm svdsp\
svkbd vdsp vkbd vmouse spt mpt "
SCO Openserver 5.0.4 及 5.0.5系统NOTREQ表如下所示:
NOTREQ="aud byte cdb cdt da dup
ecc_ eisarom err log marry pa\
prf ptm pts pwr uapm rtc
sleeper merge mpm spm svdsp\
svkbd vdsp vkbd vmouse tun"
7、如果是SCO Openserver 5.0.0 或 5.0.2系统 ,搜索下列行:
# Now build the omitted nodes.
rm -f /tmp/extra_nodes
在其后加入一行:
ls /dev/[pt]typ? > > /tmp/extra_nodes
8、存盘退出,运行 mkdev fd 。一般来说,这时候应该可以正确的创建软盘文件系统了。
9、如果此时运行仍出错“Out of inodes ”,则执行下列命令:
wc -l /etc/conf/node.d/* | sort -nr | more
这将显示出所有在链接工具(link kit)中将随着 i 节点逐个生成的设备名清单。如果你发现那些设备在紧急事件引导环境中是不必要的,可将该设备名加入到/usr/lib/mkdev/fd 文件中的NOTREQ列表里。这样加入NOTREQ表的设备越多,占用软盘上的 i 节点资源越少。当 i 节点占用减少到一定的数量时,系统错误就排除了。
10、测试所生成的 Boot / Root 软盘。测试的目的:一是 Boot / Root 软盘能否正常引导和启动操作系统;二是重要设备能否正常工作(如磁带机、硬盘、CDROM 等)。
方法二:增加系统分配给软盘的 i 节点总数。优点:简单有效。缺点:增加的 i 节点占用了有限的软盘空间。
操作步骤:
1、以 root 登录;
2、进入 /usr/lib/mkdev 子目录:
cd /usr/lib/mkdev
3、备份 fd 脚本:
cp fd fd.orig
4、在 vi 文本编辑器中打开 /usr/lib/mkdev/fd 文件。
a、Openserver 5.0.0 或 5.0.2 ,搜索生成文件系统的命令行:
“/etc/mkfs -y -f EAFS
/dev/marry/tmp/ramdisk 5120: XXXX
>/dev/null 2 >&1”
这里的“XXXX”是一个数值,这是当“mkdev fd ”被调用时将分配给软盘的 i节点总数。系统隐含这个数为1000,确属必要可以增大该数值。从系统性能考虑,该数值不要超出太多。如果你需要2048个以上的 i 节点,那你就有必要结合方法一减少一些不必要的 i 节点占用。
b、Openserver 5.0.4 ,搜索设置 INODES 变量的那行:
INODES=XXX
这里的“XXX”也是一个数值,同其它版本一样,这也是当“mkdev fd ”被调用时将分配给软盘的 i 节点总数。系统隐含这个数为 512 ,由于该数值设置的太小,因此Openserver 5.0.4最容易出现节点逸出这种问题。可将此值改为1000。从系统性能考虑,该数值不要超出太多。如果你需要2048个以上的 i 节点,结合方法一减少一些不必要的 i 节点占用。
5、存盘退出,问题就解决了。
(本文档是根据SCO公司网页资源及其它相关资料撰写的)