|
使用 inode
了解如何在 UNIX 中使用 inode 可以节约大量的时间,并提高工作效率。在尚未了解 inode 之前,您可以使用下面的命令,以减少可能碰到的问题。
df 命令
如前所述,当您在 UNIX 中创建一个文件系统时,将为 inode 表分配大约百分之一的总磁盘空间。每次在文件系统中创建一个文件时,都会为该文件分配一个 inode 。通常,与一个文件系统相关联的 inode 的数目足够多,但耗尽 inode 的可能性始终存在。要监视是否发生了这种情况,您可以观察 df 的输出。
使用 df 命令,您可以查看所有已挂载的文件系统或者特定的文件系统。在该命令的输出中,您可以查看各个文件系统中已使用的 inode 的数目,以及文件系统中总体使用情况百分比,如清单 1 中所示。
清单 1. 使用 df 来监视 inode 的使用
# df -k|head -6
Filesystem 1024-blocks Free %Used Iused %Iused Mounted on /dev/hd4 229376 138436 40% 4730 13% / /dev/hd2 8028160 962692 89% 110034 33% /usr /dev/hd9var 1835008 366400 81% 25829 24% /var /dev/hd3 524288 523564 1% 98 1% /tmp /dev/hd1 32768 32416 2% 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
Filesystem 512-blocks Free %Used Iused %Iused Mounted on
/dev/hd2 16056320 1925384 89% 110034 33% /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: 1432 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 12799859 Links: 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
|
|