今天同事发现一问题,所有文件夹大小加起来和磁盘空间不一样
[root@10-10-49-150 data]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 20G 8.3G 11G 45% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
/dev/vdb 197G 189G 0G 100% /data
逐个文件夹du -sh *排查了一会。也没有找出问题所在,查看了一下linux文件系统。
inode译成中文就是索引节点,每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份: 一部份是inode, 另一部份是 Block,
Block是用来存储数据用的。
而inode呢,就是用来存储这些数据的信息,
这些信息包括文件大小、属主、归属的用户组、读写权限等。 inode为每个文件进行信息索引,所以就有了inode的数值。
操作系统根据指令,能通过inode值最快的找到相对应的文件
原理分析:
1. 当前access.log日志正在被tomcat进程占用。
2. 通过rm命令删除access.log,实际只删除了文件名(该日志文件应用记数不为0,因此空间不会被释放)。
3. 通过rm命令删除了access.log后,tomcat依然写日志到access.log中,当开启tomcat进程时,已经通过access.log定位到该文件的inode了,就是说再写日志是不通过access.log,因此即使删除了access.log,tomcat依然写日志到access.log所在的inode节点,所以导致硬盘空间增加。
4. 因为删除了access.log,所以我们就找不到该文件了,du也查不到,就会出现硬盘满了但看不到究竟是哪些文件占用的。
最后重启tomcat得已解决
[root@10-10-49-150 data]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 20G 8.3G 11G 45% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
/dev/vdb 197G 89G 99G 48% /data
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 20G 8.3G 11G 45% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
/dev/vdb 197G 89G 99G 48% /data