查看Linux服务器磁盘,最直接的方式是执行 df -h 命令,输出结果的第一列就是盘符(如 /dev/vda1),最后一列是挂载点(如 /),你需要根据挂载点和容量使用率判断当前占用的是哪块盘。
查看linux服务器哪个盘:先分清物理盘和挂载点
刚接触服务器运维的朋友,最容易搞混一个概念:盘符不等于分区,分区不等于挂载点,一台云服务器上,你看到的 /dev/vda1 是物理磁盘的第一个分区,而 是这个分区被”挂”到系统里的位置,我们讨论”查看linux服务器哪个盘”,本质上是搞清楚三件事:系统里有哪些物理磁盘、每个磁盘分成了几个区、每个分区挂载在哪个目录下。
df -h 命令:最常用的盘符查看方式
df -h 是使用频率最高的命令,它的输出会直接告诉你每个挂载点对应的盘符、总容量、已用、可用和利用率,执行后你会看到类似下面的信息:
文件系统 容量 已用 可用 已用% 挂载点 /dev/vda1 40G 28G 12G 70% / /dev/vdb1 200G 89G 111G 45% /data tmpfs 7.8G 0 7.8G 0% /dev/shm
这里 /dev/vda1 和 /dev/vdb1 就是两块不同的盘。/dev/vda1 挂载在根目录 ,/dev/vdb1 挂载在数据目录 /data,当你发现根目录空间告急,实际就是 /dev/vda1 这块盘快满了。
lsblk 命令:看清物理磁盘和分区的从属关系
df -h 只能看到已挂载的分区,如果你想知道服务器上一共插了几块物理硬盘,需要用到 lsblk,它会把磁盘、分区、挂载点的树状关系完整列出来:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 253:0 0 40G 0 disk ├─vda1 253:1 0 40G 0 part / vdb 253:16 0 200G 0 disk └─vdb1 253:17 0 200G 0 part /data loop0 7:0 0 87M 1 loop /snap/core/...
从上面的输出可以清楚看到:vda 是一块40G的物理盘,vdb 是另一块200G的物理盘。这个命令尤其适合排查系统里是否有一块盘没被分区或没挂载,例如一块新的200G磁盘想加进系统,但忘记挂载,lsblk 里就能看到它孤零零地挂在 disk 类型下,没有 MOUNTPOINT 信息。
fdisk -l 命令:查看未挂载的裸盘
当服务器新挂载了一块云盘,但系统里完全看不到它时,fdisk -l 是最后的确认手段,它能列出所有物理磁盘的详细信息,包括磁盘容量、扇区数、分区表类型。行业共识认为,凡是 df -h 看不到但 fdisk -l 能看到的盘,基本就是没分区或没格式化,这时候需要手动 mkfs.ext4 格式化并 mount 挂载。
对于首次接触服务器的人来说,掌握

df -h 和 lsblk 两个命令已经能回答 “查看linux服务器哪个盘” 九成的问题,接下来我们聊更有实战价值的场景:磁盘满了怎么办。
linux怎么查看哪个盘满了:从系统盘到数据盘逐个排查
服务器报警最常见的形式是磁盘空间不足,但警报通常只告诉你”某个分区满了”,不会直接告诉你具体是哪个目录吃掉了空间,业内专家指出,排查磁盘满的通用思路是:先用 df 确认哪个挂载点满了,再用 du 逐步向下一层目录钻取,直到找到占用空间最大的文件。
du -sh 定位大目录:按层次逐级排查
假设 df -h 显示根分区 已用 98%,现在要找出是哪里的文件在膨胀,先从根目录开始执行:
cd / sudo du -sh | sort -rh | head -20
这条命令会列出根目录下每个子目录的占用情况,并按照从大到小排序。sort -rh 里的 -h 参数让排序能正确识别 G、M 这种容量单位,输出大致如下:
28G /var 8.2G /usr 2.1G /opt 1.3G /home
看到 /var 占了 28G,基本可以判断是日志文件在作怪,继续深入:
sudo du -sh /var/ | sort -rh | head -10
大概率会看到 /var/log 目录体积很大,再往下就是 journal 日志目录、nginx 访问日志等具体文件了,这种从大目录到小文件逐层下钻的方式,比盲目全盘扫描高效得多。
iNode 消耗占满:ls 无法创建新文件的常见元凶
另一种”盘满”的表现形式是 df -h 显示分区还有空间,但系统提示”磁盘空间不足”无法创建文件,此时需要查看 iNode(索引节点)是否用尽:
df -i
IUse% 达到 100%,说明该分区下小文件数量过多,挤爆了索引节点,这种情况常见于邮件服务器、缓存目录(如 /tmp 下的 session 文件)、以及小程序员误写造成的垃圾文件堆积,清理时可以用 find /data -type f | wc -l 先统计文件数量,再定位具体目录删除。
常用磁盘查看命令横向对比
| 命令 | 核心作用 | 适用场景 | 优点 | 局限 |
|---|---|---|---|---|
df -h |
查看已挂载分区空间 | 快速判断哪个盘满了 | 输出简洁,含使用率 | 看不到未挂载盘 |
lsblk |
查看物理盘-分区-挂载点树状关系 | 确认有几块盘、是否挂载 | 结构清晰,树状展示 | 不含空间使用率 |
du -sh |
统计目录大小 | 定位大文件、大目录 | 支持逐层钻取 | 大目录遍历较慢 |
fdisk -l |
查看所有物理磁盘信息 | 排查未识别的新盘 | 信息完整 | 需要 root 权限 |
df -i |
查看 iNode 使用率 | 排查文件数占满的情况 | 专门针对小文件场景 | 需要配合 du 定位 |
linux磁盘满了后的清理实操:从定位到回收空间
找到是哪块盘满了只完成了第一步,真正的目标是让磁盘使用率降下来,清理动作要克制,先备份后删除是底线原则,下面按常见场景给出可落地的操作路径。
清理 journal 日志:系统日志占用的空间回收
使用 systemd 的现代 Linux 发行版,journal 日志是常见的磁盘杀手,检查日志占用:
journalctl --disk-usage
如果显示占用超过 500M,可以通过以下命令限制日志大小和保留时间:
sudo journalctl --vacuum-time=7d # 只保留最近7天日志 sudo journalctl --vacuum-size=200M # 限制日志最大为200M
想要永久生效,编辑 /etc/systemd/journald.conf 文件,找到 SystemMaxUse 参数,取消注释并改为 SystemMaxUse=200M,然后重启 journald 服务。
清理包管理器缓存:适合 apt 和 yum 两种体系
Debian/Ubuntu 系的 apt 缓存:
sudo apt clean sudo apt autoremove
CentOS/RHEL 系的 yum 缓存:
sudo yum clean all
新版本的 Fedora/RHEL 还在用 dnf:
sudo dnf clean all
这些操作主要是清理下载的 .deb、.rpm 安装包缓存,以及自动移除不再需要的依赖包,多数情况下能释放几个 G 的空间,具体取决于系统的升级频率。
定位并清理大文件:find 命令的精确打击
当你明确知道 /data 盘满了,但所有子目录看着都不大时,可以用 find 直接扫描超过一定大小的文件:
find /data -type f -size +1G -exec ls -lh {} ;
这条命令会列出 /data 下所有超过 1G 的文件并显示大小,常见的可疑对象包括:nohup.out(后台任务输出重定向文件)、核心转储文件(core.)、数据库 binlog 文件。找到大文件后先确认用途再删,对于不熟悉的文件宁可挪到 /tmp 下观察几天。
删除后空间没释放:文件被进程占用的情况
这是一个相当经典的坑:明明删除了一个 10G 的日志文件,df -h 一看使用率纹丝不动,原因是该文件仍被某个进程以”打开”状态持有,空间要等进程释放文件句柄后才真正回收,排查方式:
lsof | grep deleted
输出里会列出所有已被删除但仍被占用的文件,最后一列是持有该文件的进程 PID,确认无误后重启对应进程或 kill 掉,空间就会立刻释放。注意:这条命令的输出可能很长,可以配合 grep 筛选特定目录,lsof | grep deleted | grep /var/log。
linux查看磁盘空间命令的组合使用:让故障定位更高效
单条命令只能回答一个问题,实际工作中需要组合运用,举个典型场景:一台 Web 服务器突然访问缓慢,你需要快速判断是否由磁盘引起。
第一步,执行 df -h 看整体使用率,如果某盘使用率超过 90%,进入第二步;第二步,用 du -sh /home /var /data 2>/dev/null | sort -rh 列出主要目录占用;第三步,对疑似目录用 du -sh /var/ 2>/dev/null | sort -rh 或 find /var -type f -size +500M 锁定具体文件;第四步,确认文件类型和用途后清理或转储。
这套流程熟练后,从接到告警到定位问题的耗时能压缩到 5 分钟以内。排查的效率和命令的熟练度成正比,建议在测试服务器上多跑几遍 lsblk 和 du 的组合练习。
再补充一个日常巡检习惯:建议将 df -h 和 df -i 加入定时任务,每天自动执行一次并把结果发送到运维群,文件数膨胀比空间膨胀更隐蔽,df -i 的使用率更能提前暴露出小文件增长的趋势。磁盘空间监控的核心是提前发现趋势,而不是等到 100% 才慌张处理。
linux查看磁盘空间命令相关Q&A
Q1:df -h 和 df -i 的输出有什么区别?
df -h 统计的是数据块(block)的占用情况,显示的是容量大小;df -i 统计的是索引节点(inode)的占用情况,反映的是文件数量,当磁盘上存放了大量小文件时,可能出现容量没满但 inode 已满的情况,此时必须用 df -i 才能发现异常。
Q2:为什么 lsblk 能看到磁盘,但 df -h 里找不到?
lsblk 展示的是内核识别到的所有块设备,df -h 只展示已经挂载到文件系统上的分区,如果一块新磁盘还没有格式化或者没有执行 mount 操作,它就不会出现在 df -h 中,这是未挂载盘的典型特征,需要执行 mkfs.ext4 /dev/vdb 格式化再 mount /dev/vdb /data 挂载。
Q3:du -sh 和 du -sh ./ 有什么区别?
两条命令在绝大多数场景下执行结果一致,区别在于通配符展开的路径形式: 展开为相对路径(如 var), 展开为带路径前缀的相对路径(如 ./var),当目录中存在以连字符开头的特殊文件名(如 -abc)时,使用 可以避免被误认为命令参数,相对更安全。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/866504.html


评论列表(3条)
这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是查看部分,给了我很多新的思路。感谢分享这么好的内容!
@风风4631:这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于查看的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!
@风风4631:这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是查看部分,给了我很多新的思路。感谢分享这么好的内容!