我对 i 节点很困惑。他们说删除文件以减少 i 节点,但我已经从服务器上的不同 cpanel 中删除了 100 个日志文件,但 inode 计数仍然相同。
答案1
您可以使用该命令确定给定文件系统上 inode 的细分情况tune2fs
。
您通常tune2fs
使用-l
交换机和您想要查询的设备进行呼叫,通常/dev/sda1
为 或/dev/sdb1
。对于我的示例,我有一个 RAID 设备/dev/md0
。
例子
$ tune2fs -l /dev/md0 | grep -i inode
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Inode count: 22872064
Free inodes: 6270088
Inodes per group: 128
Inode blocks per group: 8
First inode: 11
Inode size: 256
Journal inode: 8
Journal backup: inode blocks
上面的命令显示了 inode 的总数以及可用的数量。
如果您不确定自己拥有什么设备,可以使用该blkid
命令获取设备列表。
$ blkid
/dev/mapper/VolGroup00-LogVol01: TYPE="swap"
/dev/mapper/VolGroup00-LogVol02: UUID="3130f689-814a-436d-8c0a-feb271c06245" SEC_TYPE="ext2" TYPE="ext3"
/dev/mapper/VolGroup00-LogVol00: UUID="7a2a5b5b-8c20-4925-a359-c6574d9bc1fd" TYPE="ext3"
/dev/sda1: LABEL="/boot" UUID="ed298397-2e7e-4e18-80c3-4ecd00e4cab9" TYPE="ext3"
/dev/VolGroup00/LogVol00: UUID="7a2a5b5b-8c20-4925-a359-c6574d9bc1fd" TYPE="ext3"
/dev/VolGroup00/LogVol01: TYPE="swap"
/dev/sr0: LABEL="CentOS_5.6_Final" TYPE="iso9660"
答案2
一般来说,你是对的 - 如果你删除对文件的所有引用(如果文件是硬链接的,则引用可能 > 0),那么当你删除文件时,索引节点应该被释放。
但是,如果某个进程打开了文件(就像正在写入日志文件的任何进程一样),则在该进程关闭文件之前,索引节点不会被释放。正如文件所使用的磁盘空间在文件关闭之前不会被释放一样。
在删除文件之前,您可以对文件使用 lsof 命令来查看是否某个进程打开了这些文件。现在您已经删除了文件,您仍然可以使用 lsof 查看系统上所有打开的文件并搜索已删除的文件。