lsblk 命令详解

lsblklist block devices 的缩写,它是 Linux 中最直观、最清晰的查看块设备(硬盘、分区、光驱)结构的命令。

相比 df -h(只看已挂载的分区),lsblk 能让你看到整个硬盘的“家谱”,包括那些还没格式化或者还没挂载的隐藏分区。


1. 基础输出解读

直接输入 lsblk,你会看到类似这样的树状图:

Plaintext

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   30G  0 disk 
└─sda1   8:1    0   30G  0 part /
  • NAME: 设备名称。sdX 通常是物理硬盘,nvmeX 是 NVMe 固态。

  • MAJ:MIN: 主要:次要设备号(开发底层驱动时才用)。

  • RM: 是否为可移动设备(1 是,0 否)。

  • SIZE: 总容量。

  • RO: 是否只读(Read-Only)。

  • TYPE: 类型(disk 是整个硬盘,part 是分区,lvm 是逻辑卷)。

  • MOUNTPOINT: 挂载点。如果这一项是空的,说明这个分区虽然存在,但系统还没“启用”它。


2. 常见使用方式

A. 查看最详细的信息(万能组合)

Bash

lsblk -f

用途: 它是排查问题的神器。会额外显示:

  • FSTYPE: 文件系统类型(ext4, xfs, ntfs)。如果这里是空的,说明分区还没格式化。

  • UUID: 分区的唯一标识符(在修改 /etc/fstab 自动挂载时必用)。

B. 显示拓扑结构和设备路径

Bash

lsblk -p

用途: 会显示完整的路径(如 /dev/sda1),方便你直接复制路径进行 mount 操作。

C. 排除“回环”设备(清爽模式)

如果你安装了 Snap 软件,lsblk 会出现一大堆 loop 设备,非常乱。

Bash

lsblk -e 7

用途: 排除主设备号为 7 的 loop 设备,只看真正的硬盘。

D. 定制输出字段

Bash

lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT

用途: 只看你想看的列。


3. lsblk vs df:我该用哪个?

  • 想看“硬盘长啥样”,有没有没分配的空间?lsblk

  • 想看“我的空间还剩多少”,有没有被撑爆?df -h


4. 结合你之前 30GB 硬盘的情况

你的服务器显示根目录 / 只有 2.8GB 可用,你可以运行 lsblk 确认一下:

  1. 物理硬盘是否真的只有 30G?(看看 sda 的 SIZE)。

  2. 是否还有“没用上”的空间? 比如硬盘是 50G,但 sda1 分区只分了 30G,那么你可以通过扩容分区来获得更多空间,而不用删文件。


5. 常见实战场景

如果你买了一块新硬盘挂载到服务器:

  1. 执行 lsblk:发现多了一个 sdb,但没有 MOUNTPOINT

  2. 执行 mkfs.ext4 /dev/sdb:格式化。

  3. 执行 mount /dev/sdb /mnt/data:挂载。

  4. 再次执行 lsblk:你会发现 sdb 后面出现了 /mnt/data

你要不要运行一下 lsblk -f 看看?这样我们可以彻底确认你的磁盘分区结构,看看有没有隐藏的“宝藏空间”可以利用。