对话 UNIX: 关于 inode( 二 )


清单 1. 使用 df 来监视 inode 的使用
# df -k|head -6
Filesystem1024-blocks Free \usedIused %Iused Mounted on
/dev/hd422937613843640% 473013% /
/dev/hd2 802816096269289003433% /usr
/dev/hd9var183500836640081?24% /var
/dev/hd35242885235641?1% /tmp
/dev/hd132768 324162%5 1% /home
如果由于某种原因,某个文件系统 inode 的使用率达到百分之百,那么您将无法在该文件系统中创建更多的文件、设备、目录等等 。对于这种情况,一种解决方案是通过 smitty chfs 命令为该文件系统添加更多的空间,如图 1 所示 。另一种解决方案是创建较小的 inode 区段 。现在,在增强的日志文件系统 (Enhanced Journal File System) 中,IBM AIX 5L 允许 inode 区段小于 16KB 的缺省大小 。请记住,如果您在 AIX 5L 中使用这个选项,那么将无法从较早版本的 AIX 访问该文件系统 。
图 1. smitty chfs 命令的结果
istat 和 stat
在 AIX 中检查 inode 的一种快捷的方式是使用 istat 命令 。使用这个命令,您可以找到特定文件的索引编号,以及其他的 inode 项目,如权限、文件类型、UID、GID、链接的数目(非符号链接)、文件大小和最近一次更新、最近一次修改以及最近一次访问的时间戳 。
清单 2 显示了 AIX 中文件 /usr/bin/ksh 的 inode 信息 。
清单 2. /usr/bin/ksh 的 inode 信息
# istat /usr/bin/ksh
Inode 18150 on device 10/8 File
Protection: r-xr-xr-x
Owner: 2(bin)Group: 2(bin)
Link count:5 Length 237804 bytes
Last updated:Wed Oct 24 17:37:10 EDT 2007
Last modifIEd: Wed Apr 18 23:58:06 EDT 2007
Last accessed: Mon Apr 28 11:25:35 EDT 2008
除了显示来自 istat 的标准信息之外,现在您还知道了 /usr/bin/ksh 对应的索引编号 。如果您同时还找到了该文件所处的逻辑卷,那么甚至可以显示更多的信息 。要查找该信息,一种方式是通过使用 df 命令来查看该文件位于哪个已挂载的文件系统中:
# df /usr/bin
Filesystem512-blocks Free \usedIused %Iused Mounted on
/dev/hd216056320192538489003433% /usr
文件 /usr/bin/ksh 位于目录 /usr/bin 中 。查看 df 命令的输出,您可以发现,目录 /usr/bin 包含于 /usr 文件系统中,并且 /usr 文件系统位于逻辑卷 /dev/hd2 之中 。现在,您已经知道了索引编号和逻辑卷的名称,那么就可以将这两个信息项作为参数来使用 istat,这样一来,您可以确定组成该文件的磁盘块的十六进制地址,如清单 3 中所示 。
清单 3. 确定文件磁盘块的十六进制地址
# istat 18150 /dev/hd2
Inode 18150 on device 10/8 File
Protection: r-xr-xr-x
Owner: 2(bin)Group: 2(bin)
Link count:5 Length 237804 bytes
Last updated:Wed Oct 24 17:37:10 EDT 2007
Last modified: Wed Apr 18 23:58:06 EDT 2007
Last accessed: Mon Apr 28 11:44:20 EDT 2008
Block pointers (hexadecimal):
11620 ef8c0
Linux 提供了其特有的 istat 版本:stat 。Linux stat 命令可以显示类似的信息,并且还包括一些在 AIX istat 命令中没有提供的命令开关:
# stat /bin/bash
 File: `/bin/bash'
 Size: 722684 Blocks: 1432IO Block: 4096regular file
Device: fd00h/64768dInode: 12799859Links: 1
Access: (0755/-rwxr-xr-x) Uid: (0/root)Gid: (0/root)
Access: 2008-04-06 19:13:50.000000000 -0400
Modify: 2006-07-12 03:11:53.000000000 -0400
Change: 2007-11-22 04:05:30.000000000 -0500
ls 命令
在您的日常工作中总会碰到这样的情况,难以删除或者管理某些文件,因为这些文件的文件名中使用了短横线或者其他特殊字符、或者其文件名完全不正确 。这很可能是有人对该文件进行了错误命名 。
【对话 UNIX: 关于 inode】因为 Unix 中的大多数命令,包括开关或者选项在内,都是以连字符 (-) 或者双连字符 (--) 开头的,很难使用诸如 rm、mv 和 cp 之类常用的命令来操作这些文件 。幸运的是,某些命令提供了一些选项,以用来显示相关文件所关联的 inode 的索引编号 。ls 命令就提供了一个这样的选项:

推荐阅读