Unix/Linux 操作系统上的可用磁盘空间

kra*_*uke 11 linux unix hard-drive

如何在 Unix/Linux 操作系统上获得可用磁盘空间,包括未分配的空间(未分配给任何分区)?

Hub*_*rio 20

在 Linux 上,可用空间可以隐藏在多个地方:

  1. 可用文件系统空间(最明显):

    df -h
    
    Run Code Online (Sandbox Code Playgroud)
  2. 未分区空间:

    for dev in /dev/sd?; do parted "$dev" print; done
    
    Run Code Online (Sandbox Code Playgroud)

    或者

    for dev in /dev/sd?; do fdisk -l "$dev"; done
    
    Run Code Online (Sandbox Code Playgroud)

    并仔细研究分区之间以及分区和设备末端之间有多少空间

  3. LVM 系统中的可用空间:

    vgs
    
    Run Code Online (Sandbox Code Playgroud)

    或者

    pvs
    
    Run Code Online (Sandbox Code Playgroud)

    物理卷可以使用比分区大小更少的空间,因此将其大小与分区大小进行比较

  4. MD系统中未分配给分区的空间:

    for dev in /dev/md*; do mdadm --detail "$dev"; done
    
    Run Code Online (Sandbox Code Playgroud)

    您需要将“Used Dev size”与分区大小进行比较

  5. 文件系统可以小于它们所在的卷(感谢@PaulGear!)。您应该将 LVM 逻辑卷、MD RAID 设备、分区或文件系统所在的其他设备的大小与文件系统的大小(由 返回df)进行比较。

如果您有多个磁盘或 LVM 卷组以及相对较新的发行版,您可以使用lsblk显示块设备树和挂载点。

注意:营销 GB(即 10^9B)与操作系统或工程 GB(即 2^30B,应编写为 GiB 以区分两者)之间也存在差异。40GB 大约是 37.25GiB。除了parted使用二进制千兆字节作为默认单位之外,所有上述工具。添加unit MiB到 parted 命令之前,print以获得以兆字节为单位的答案(对于对齐 SSD 和 4KiB 扇区磁盘上的分区也很有用)。