什么是inode
inode是指Unix文件系统中的索引节点(index node),用于存储关于文件或目录的元数据信息,例如文件大小、拥有者、权限、时间戳等。每个文件或目录在文件系统中都有一个唯一的 inode 号码,通过这个号码可以快速定位并访问文件的元数据信息。因此,inode 在文件系统中起着非常重要的作用,它记录了文件或目录的属性和位置,而实际的文件数据则存储在数据块中。
查看文件/目录的inode信息
bash
[root@localhost ~]# stat flannel.yaml
File: 'flannel.yaml'
Size: 4821 Blocks: 16 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 266507 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2023-12-08 16:58:33.373412736 +0800
Modify: 2023-12-08 16:58:27.716315686 +0800
Change: 2023-12-08 16:58:27.716315686 +0800
Birth: -
查看inode的使用情况
bash
[root@localhost ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 262144 262104 40 100% /data0
devtmpfs 16426671 620 16426051 1% /dev
tmpfs 16429256 6 16429250 1% /dev/shm
tmpfs 16429256 1481 16427775 1% /run
tmpfs 16429256 16 16429240 1% /sys/fs/cgroup
/dev/sda1 786432 172461 613971 22% /
/dev/sda5 524288 39 524249 1% /usr
/dev/sda6 524288 14089 510199 3% /var
调整inode数量
如需要调整inode节点的数量需要进行以下几步:
卸载文件系统
bash
[root@localhost ~]# umount /data0
建立文件系统,指定inode节点数
bash
[root@localhost ~]# mkfs.ext4 /dev/sda3 -N 18276352
修改fstab文件
bash
[root@localhost ~]# vi /etc/fstab
/dev/sda6 /data0 ext4 defaults 1 2
挂载文件系统
csharp
[root@localhost ~]# mount -a
查看修改后的inode参数
bash
[root@localhost ~]# dumpe2fs -h /dev/sda3 | grep node
注意:调整inode数会格式化磁盘,执行前应确定磁盘上没有重要数据或是先备份数据
清理 inode
bash
# 分析根目录下的每个二级目录下有多少个文件
for i in /*; do echo $i; find $i | wc -l; done
逐层进入inode占用最高的目录,继续执行上述指令,逐步定位占用过高空间的文件或目录,最后进行相应清理。
本次故障经查发现/var/spool/postfix/maildrop
目录占用较高,永久性解决该问题需要进行如下配置修改:
bash
[root@localhost ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO="" # 默认为MAILTO=root
[root@localhost ~]# crontab -e
MAILTO="" # 在最前面直接加入MAILTO=""
46 8 * * * /usr/sbin/ntpdate tiger.com.cn >/dev/null
最后重启crond服务,之后执行crond定时任务时将不会再发送邮件。
如果是var/spool/clientmqueue
占用,两种方法:
- 删除此目录;
- 在cron 任务中的后面加上
> /dev/null 2>&1
。