输出有什么区别
cat /proc/sys/fs/inode-nr
和
df -i
两者都记录了返回正在使用的 inode 数量,但它们返回的数字显然不相关。
$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
devtmpfs 954448 464 953984 1% /dev
tmpfs 956943 1 956942 1% /dev/shm
/dev/xvda1 1310720 272395 1038325 21% /
/dev/xvdb1 1966080 26278 1939802 2% /tmp
tmpfs 956943 1 956942 1% /hdd1/mnt/data
$ cat /proc/sys/fs/inode-nr
199563 122925
答案1
/proc/sys/fs/inode-nr
显示 RAM(内核缓存)中 inode 的数据,首先是当前已分配的 inode,然后是空闲的 inode。内核使用 inode 做很多事情,而不仅仅是文件。例如,网络套接字也是通过 inode 来识别的。
看https://www.kernel.org/doc/Documentation/sysctl/fs.txt:
文件 inode-nr 包含 inode-state 的前两项,因此我们将跳到该文件...
Inode-state 包含三个实际数字和四个虚拟数字。实际数字按出现顺序依次为 nr_inodes、nr_free_inodes 和 preshrink。
Nr_inodes 代表系统已分配的 inode 数量,该数量可能略大于 inode-max,因为 Linux 每次分配一页。
Nr_free_inodes 表示空闲的 inode 数量(?),当 nr_inodes > inode-max 时,preshrink 非零,系统需要修剪 inode 列表而不是分配更多。
df -i
显示磁盘上的 inode,因此每个文件系统都可以使用其特定的 inode 集来执行任何操作。
因此这两组数字将始终保持彼此不相关。