系统OTA升级之后,发现/etc/config 分区占用率100%,着实郁闷,/etc/config 分配20M空间,实际占用的配置文件<1M, 怎么会磁盘占用率86%???
/ # df -h
Filesystem Size Used Available Use% Mounted on
/dev/system 2.0G 183.7M 1.7G 9% /
devtmpfs 107.1M 0 107.1M 0% /dev
tmpfs 116.5M 88.0K 116.4M 0% /tmp
tmpfs 116.5M 28.0K 116.5M 0% /run
/dev/config 9.7M 7.9M 1.2M 86% /etc/config
/dev/data 1.2G 20.0K 1.1G 0% /data
然后看了linux磁盘异常占用有了思路,系统的进程挨个排查,果然只要其中一个进程启动之后,/etc/config 占用率为86%, 瞬间排除了OTA导致的问题,定位到系统中其中一个应用程序进程导致的。
du操作
du -sh命令通过将指定文件系统路径下所有的目录、符号链接、文件使用的块数累加起来得到总块数以及总大小。它会遍历这个目录,针对所有真实存在的文件、目录等汇总,给出最终结果。所以,通过du -sh给出的已使用空间情况,肯定是真实的!1
df操作
df命令常被用来检查分区空间使用情况。它与du不同,它是查看文件系统磁盘块分配图得出总块数与剩余块数。
文件系统分配一些磁盘块用来记录它自身的一些数据,如i节点,磁盘分布图,间接块,超级块等。这些称为MetaData,对于用户级程序如du是不可见的。而df命令则查看磁盘分配图并考虑MetaData。
而两者主要区别:
df 查看用使用空间大小包含了已删除但没有释放的文件
du 查看使用空间大小只包含当前文件大小
导致该问题的原因包括2:
- 磁盘分区空间实际使用率达到百分之百。
- 磁盘分区inode使用率达到百分之百。
- 僵尸文件:已删除文件因句柄被占用未释放导致相应空间未释放。
- 挂载点覆盖:在原有文件系统的相应目录下已经存在大量文件。