在Linux系统运维和日常使用中,磁盘空间不足是最常见的问题之一——应用无法写日志、数据库无法落盘、容器镜像拉取失败,往往都指向同一个原因。Linux提供了三个核心命令来应对不同维度的空间查看需求:df关注文件系统级别的剩余空间,du深入目录级别统计实际占用,lsblk则从硬件层面展示磁盘和分区的物理结构。掌握这三个命令的用法和配合方式,是高效排查磁盘问题的基础。
核心原理:df(disk free)通过读取文件系统的超级块(Super Block)信息,显示每个已挂载文件系统的总容量、已用空间、可用空间和使用率。它关注的是"挂载点还有多少空间",适合快速判断整台机器或某个分区是否快满。
常用参数:-h以人类可读格式(G/M/K)显示;-T额外显示文件系统类型(如ext4、xfs);-i显示inode使用情况而非磁盘块;-a显示所有文件系统(含tmpfs等虚拟文件系统);-x 类型排除指定文件系统类型;--total在末尾追加总计行。
典型用法:
# 查看所有文件系统的空间使用情况(最常用)
df -h
# 查看文件系统类型,便于排查容器或网络挂载问题
df -Th
# 查看inode使用情况(排查"有空间但无法创建文件"的问题)
df -ih
# 查看指定目录所在分区的空间
df -h /var/log
# 排除虚拟文件系统,让输出更聚焦
df -h -x tmpfs -x devtmpfs输出解读:输出包含Filesystem(设备名)、Size(总容量)、Used(已用)、Avail(可用)、Use%(使用率)、Mounted on(挂载点)六列。排查时重点关注Use%和Mounted on两列,当使用率超过85%时就应引起警觉。
核心原理:du(disk usage)通过递归扫描目录树,统计指定目录或文件的实际磁盘占用量。与df不同,du统计的是文件系统中真实存在的文件所占空间,不包含已被删除但仍被进程占用的文件。
常用参数:-h以人类可读格式显示;-s仅显示总计大小,不列出子目录明细;-a显示所有文件和目录(而非仅目录);--max-depth=N控制显示的目录层级深度;-c在末尾追加总计行;--exclude=模式排除匹配的文件或目录。
典型用法:
# 查看指定目录的总大小
du -sh /home
# 查看某目录下各一级子目录的大小
du -h --max-depth=1 /var
# 找出当前目录下占用空间最大的前10项
du -ah . 2>/dev/null | sort -rh | head -n 10
# 查看根目录下各目录占用,快速定位空间大户
du -sh /* 2>/dev/null | sort -rh | head -10注意事项:当目录下文件数量极多时,du -sh *可能触发"Argument list too long"错误,建议改用du -h --max-depth=1代替。此外,du统计结果可能因权限不足而遗漏部分目录,必要时需加sudo执行。
核心原理:lsblk(list block devices)从sysfs文件系统中读取信息,以树状结构展示所有块设备(物理磁盘、分区、LVM逻辑卷等)的层级关系、容量和挂载点。它不直接显示剩余空间,而是帮助理解"磁盘是怎么分区的、分区挂在哪里"。
常用参数:-f显示文件系统类型、UUID和标签;-d仅显示磁盘设备本身,不展开分区;-o 列名自定义输出列;-l以平铺列表格式输出(不显示树状结构);-J以JSON格式输出,适合脚本解析;-m显示设备权限信息。
典型用法:
# 查看所有块设备的树状结构
lsblk
# 查看文件系统类型和UUID等详细信息
lsblk -f
# 仅显示物理磁盘,不展开分区
lsblk -d
# 自定义输出列
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT输出解读:输出中NAME列展示设备层级(如sda下包含sda1、sda2),SIZE列显示容量,TYPE列区分disk(物理磁盘)、part(分区)、lvm(逻辑卷)等类型,MOUNTPOINT列显示挂载路径。需要注意的是,lsblk显示的是设备的物理容量,而非文件系统的可用空间。
标准排查流程:先用df -h快速定位哪个挂载点空间不足,再用du -h --max-depth=1 /对应挂载点逐层深入定位空间大户,最后用lsblk确认磁盘分区结构以便规划扩容方案。这三步构成了磁盘空间排查的完整链路。
df和du结果不一致的原因:最常见的原因是文件已被删除但仍被进程占用(df统计的是文件系统层面的已用空间,包含这些"幽灵文件")。可通过lsof | grep deleted查找这类文件,重启相关进程后即可释放空间。此外,文件系统预留空间(如ext4为root保留5%)和元数据占用也会导致两者存在差异。
inode耗尽问题:当df -h显示空间充足但创建文件报"No space left on device"时,需执行df -ih检查inode使用率。小文件数量过多(如缓存目录、会话文件堆积)会耗尽inode,此时需清理大量小文件而非关注大文件。
![]()
三个命令各司其职:df回答"分区还剩多少空间",du回答"哪些目录/文件占了空间",lsblk回答"磁盘是怎么分区的"。在日常运维中,推荐优先使用df -h做快速巡检,发现问题后用du深入定位,需要扩容时再用lsblk查看物理结构。三者配合使用,能够覆盖从宏观到微观的全部磁盘空间排查场景,是Linux系统管理中不可或缺的基础技能。
声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com
通过手机号码查询近3个月总停机次数标签信息,统计近3个月内停机的次数。
通过手机号查询判断该号码实名用户年龄区间标签信息。
通过三网运营商手机号码和指定月份,查询号码近3个月话费消费区间标签详情及评分。
通过车架号或车牌号查询车辆是否为营运车辆
通过车架号查询车辆的如品牌名称、车系名称、车型、排量、排放标准、外形尺寸、轮胎规格、变速器类型、公告号、轴距等等详细信息