My Avatar

Fingerkkk

世事洞明皆学问

Ext4丢失的空间

2020年04月08日 星期三

linux装在ssd上,还有块1t机械盘挂载了用来放数据,但是用df查看空间时发现1t盘总空间只有916GB。按理说1t盘1024GB按厂商算法应该有1024GB/1.024/1.024/1.024/1.024=930.66GB,分区的保留空间Reserved blocks也是算进去的,而且这块数据盘的保留空间已经设置成0了。

931-916=15GB

这少了的15GB哪去了?

不弄清楚心里痒痒的,搜索了半天终于找到了线索——ext4文件系统的索引节点(inode)。

首先介绍下inode

inode包含文件的元信息,具体来说有以下内容:

参考:https://blog.csdn.net/jaryle/java/article/details/78189427

一个文件需要一个inode,如果一个磁盘文件太多把inode用完了,即使磁盘空间还有剩余也无法写入新文件。查看inode可以用df -i。

1
2
文件系统         Inodes 已用(I)  可用(I) 已用(I)% 挂载点
/dev/sdb1      61054976   67384 60987592       1% /mnt/Media

可以看到这块磁盘的inode才用了千分之一,不到1%算作1%,总共6千1百万个。实在是预留的太多了,不过要重新设置需要mkfs重新格式化,还是算了。

而且inode也要占用磁盘空间的,一般分区格式化时就会预留出空间给inode。

下面是1tb盘的inode信息:

1
2
Inode count:              61054976
Inode size:               256

可以据此计算占用空间为:((61054976×256/1024)/1024)/1024=14.556640625GB

总算水落石出了。