服务器测评网
我们一直在努力

Linux如何查看分区大小,查看硬盘空间用什么命令

在Linux系统运维与服务器管理中,准确掌握磁盘分区的使用情况是保障业务连续性的基础技能,针对“Linux查看分区大小”这一需求,核心上文归纳是:使用 df -hT 命令快速查看文件系统级别的空间使用情况,结合 lsblk 命令直观展示分区挂载结构,并利用 du -sh 命令深入排查目录级占用。 这三者结合,能够覆盖从宏观监控到微观排查的所有场景,是系统管理员必须掌握的标准操作流。

Linux如何查看分区大小,查看硬盘空间用什么命令

基础与常用命令:宏观掌控分区状态

对于大多数用户而言,查看分区大小的首要目的是确认剩余空间是否充足,以及文件系统是否已满,Linux提供了两个最基础且强大的工具:dflsblk

使用 df 命令查看文件系统磁盘空间
df(Disk Free)命令是查看磁盘分区剩余空间最直接的工具,为了获得更人性化的输出,建议始终配合 -h 参数使用,即 df -h

  • 核心参数解析:

    • -h:以人类可读的格式显示(如 GB, MB, KB)。
    • -T显示文件系统类型(如 ext4, xfs, overlay),这对于判断是否需要扩容或进行特定文件系统维护至关重要。
    • -x:排除特定文件系统类型,例如在容器环境中查看宿主机磁盘时,可以使用 df -h -x overlay 来过滤掉容器的虚拟文件系统。
  • 输出解读:
    执行 df -hT 后,重点关注 Use%(使用率)列,如果某个分区(如 或 /home)的使用率超过 90%,系统性能可能会受到影响,甚至导致无法写入日志或数据,需要立即清理或扩容。Mounted on 列明确指出了分区挂载的具体路径。

使用 lsblk 命令查看块设备树状结构
df 命令侧重于文件系统的空间,而 lsblk(List Block Devices)则侧重于物理存储设备的层级关系,它能清晰地展示磁盘与分区的从属关系。

Linux如何查看分区大小,查看硬盘空间用什么命令

  • 核心优势:
    lsblk 默认以树状图输出,能够直观看到哪块物理硬盘(如 sda, nvme0n1)被划分了哪些分区(如 sda1, sda2),以及这些分区挂载到了哪个目录。
  • 专业参数:
    使用 lsblk -f 可以额外显示 UUID文件系统类型(FSTYPE),UUID在配置 /etc/fstab 实现开机自动挂载时非常重要,因为它比设备名称(如 /dev/sdb1)更稳定,不会因硬件插拔顺序改变而变化。

进阶与深度分析:精准定位空间占用

df 显示磁盘空间已满,但通过常规查找却找不到大文件,这通常涉及到隐藏空间、inode耗尽或已删除但仍被进程占用的文件,此时需要更深入的分析手段。

使用 du 命令排查目录级占用
du(Disk Usage)命令用于估算文件和目录的磁盘使用量,当根分区爆满时,使用 du -sh /* 可以快速定位是哪个顶级目录占用了大量空间。

  • 最佳实践组合:
    du -h --max-depth=1 / | sort -hr
    这条命令的含义是:统计根目录下第一层目录的大小(--max-depth=1),以人类可读格式显示(-h),并按占用大小从高到低排序(sort -hr)。这是排查磁盘空间异常最有效的“黄金命令”之一,能迅速将嫌疑范围缩小到具体的业务目录。

检查 Inode 使用情况
Linux文件系统除了存储数据块(Block)外,还需要存储文件的元数据(Inode),有时候虽然磁盘空间(Block)还有剩余,但如果 Inode 被耗尽,系统同样无法创建新文件。

  • 检查命令: df -i
  • 解决方案: IUse% 达到 100%,通常意味着系统中存在大量极小的文件(如数万个零碎的缓存文件或会话文件),解决方法是使用 find 命令批量清理这些小文件,或者调整分区的 Inode 密度(这通常需要格式化,需提前备份数据)。

专业场景与特殊处理:LVM与挂载点

在生产环境中,服务器通常配置了 LVM(逻辑卷管理)以实现弹性扩容,或者存在未挂载的空闲磁盘。

查看LVM逻辑卷信息
对于使用 LVM 的系统,普通的 lsblk 可能无法完全展示逻辑卷的详细信息,此时应使用 LVM 专用命令:

Linux如何查看分区大小,查看硬盘空间用什么命令

  • vgs:查看卷组(Volume Group)汇总信息,了解总池子还有多少空闲空间。
  • lvs:查看逻辑卷(Logical Volume)详细信息,确认每个逻辑卷的大小和数据百分比。
  • 专业见解: 在扩容前,必须先通过 vgs 确认 VG(卷组)是否有剩余空间(Free PE/Size),如果没有,需要先接入新的物理硬盘并初始化为 PV(物理卷),然后扩展到 VG 中,最后才能扩展 LV。

处理“幽灵”文件占用
这是一个高阶运维场景:执行 rm -rf 删除了大文件后,df 显示的空间并没有释放,这是因为该文件仍被某个进程占用(文件句柄未关闭)。

  • 排查方法: 使用 lsof | grep deleted 命令,该命令会列出所有已被标记为删除但仍有进程打开的文件。
  • 解决方案: 找到对应的进程 PID,重启该服务(如 systemctl restart nginx),或者直接杀掉进程(kill -9 <PID>),文件句柄释放后,磁盘空间即刻归还。

常见问题与解决方案

在查看和管理分区大小时,用户常遇到以下误区:

  1. 误判“丢失”的空间: 许多用户发现 df 显示的总空间小于硬盘标称值,这是因为操作系统计算时采用二进制(1024进位),而硬盘厂商采用十进制(1000进位),且部分空间会被保留给文件系统元数据和超级用户(root reserved blocks,默认5%),这是正常现象,并非故障。
  2. 挂载点覆盖: 如果向一个目录写入数据,但该目录恰好是一个独立分区的挂载点,数据将写入该分区而非父分区,使用 lsblkmount | grep <目录名> 确认挂载关系,避免因误判写入路径导致根分区意外爆满。

相关问答

Q1:为什么删除了文件后,使用 df 查看磁盘空间没有减少?
A: 这通常是因为被删除的文件仍被某个正在运行的进程占用,在Linux中,只要文件句柄未被关闭,磁盘空间就不会被真正释放,解决方法是使用 lsof | grep deleted 查找并重启占用该文件的进程,或者直接重启服务器。

Q2:df -hdu -sh 统计的目录大小不一致,且 df 显示的占用更大,是什么原因?
A: 这种差异通常由以下原因造成:一是被删除但未释放的文件(如Q1所述);二是该目录下挂载了其他文件系统,du 会忽略挂载点下的内容,而 df 统计的是整个文件系统;三是存在大量硬链接,du 可能会重复计算或计算方式不同,建议优先检查被删除的文件句柄。

赞(0)
未经允许不得转载:好主机测评网 » Linux如何查看分区大小,查看硬盘空间用什么命令