df 与 du:Linux 磁盘查看入门
磁盘空间不足、应用写文件失败时,先分清问题:是整块盘满了,还是某个目录太大?Linux 里 df 和 du 各管一面:df 看文件系统还剩多少空间,du 看目录或文件实际占了多少。分清再动手,排查才不会走弯路。
一、df:先看还剩多少
df 是 disk free 的缩写,查看所有已挂载文件系统的使用情况。最常用的是 df -h,h 表示用人易读的单位显示,如 G、M:
df -h
重点看挂载点和使用率:挂载点说明这块空间挂在哪个目录上。只看根目录用 df -h /;看类型用 df -hT。还有空间却写不进去时,查 inode:df -i 统计索引节点,小文件太多、空间没满、inode 先满,也无法新建文件。
二、du:再看谁占了空间
du 是 disk usage 的缩写,统计目录或文件占用的空间。看当前目录多大:
du -sh .
列出当前目录下各子目录的大小:
du -sh *
只统计一层子目录用 --max-depth=1:
du -h --max-depth=1 /var
找到大目录后,再进一层继续查,就能定位到大户。配合排序更直观,列出 /var 下最大的十个子目录:
du -h --max-depth=1 /var | sort -rh | head -10
三、df 和 du 对不上怎么办
df 说盘满了,du 却找不到大文件,最常见的原因是文件被删了、还被进程占着。日志被 rm 后,写日志的进程没重启,句柄仍占空间,df 按已用来算,du 已看不到它。办法是重启占用的进程,或清空而不是删除正在写的文件,再看 df 是否恢复。也可能是挂载点遮挡:先写进未挂载目录的大文件,被后来挂载的磁盘挡住了,先取消挂载再核对。
四、排查流程
磁盘告警时按这个顺序走:df -h 确认哪个挂载点满了;du -h --max-depth=1 加排序,找出最大的几个目录;进到大目录里重复上一步,直到找到大文件或日志目录;最后再决定清理。能清的是过期日志、临时文件和废弃备份,清前确认归属和业务影响;正在写的日志优先截断或轮转;系统目录和不认识的文件不要动手。
记住:df 定方向,du 找目标。两条命令配合,多数磁盘空间问题都能快速定位。
- 点赞
- 收藏
- 关注作者
评论(0)