用 lsblk 与 fdisk -l 认识磁盘布局
发布时间:2025-12-26 12:16       
更新时间:2025-12-26 19:51
分区操作的第一课不是怎么分,而是怎么读懂磁盘现状。lsblk 和 fdisk -l 两个命令配合,机器里每块盘、每个分区的情况一目了然。
lsblk 的树状读法
`lsblk` 以树状列出块设备,输出长这样:
```
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 8:0 0 40G 0 disk
└─vda1 8:1 0 40G 0 part /
vdb 8:16 0 200G 0 disk
```
读法:NAME 列的缩进表示层级,vda 是整块盘,缩进的 vda1 是它的分区,挂载点在根目录;vdb 有 200G 但没有分区也没有挂载点,就是一块待处理的空盘。TYPE 列里 disk 是盘、part 是分区、lvm 是逻辑卷,RM 列为 1 表示可移除设备。RO 列为 1 表示只读挂载,写不进去时先看它;MAJ:MIN 是内核里的设备编号,dmesg 日志里出现的正是它,两边能对上号。想自定义列,用 `lsblk -o NAME,SIZE,FSTYPE,UUID,MOUNTPOINT`,写 fstab 时 UUID 直接照抄。
fdisk -l 的细节
`fdisk -l` 的输出更原始也更全:扇区数、扇区大小、分区表类型都在里面。Disk label type 一行,dos 代表 MBR,gpt 代表 GPT——接手旧机器做扩容前先确认这一项,2TB 的分界线就卡在这里。扇区大小常见 512 字节与 4096 字节两种,做底层恢复或性能调优才需要关注;新盘分区交给现代工具,对齐问题会自动处理。两块盘名字接近时,用 `ls -l /dev/disk/by-id/` 按序列号核对,云主机上也可以到控制台对照云盘 ID,双保险。
别动正在用的盘
读操作随便做,写操作前必须确认目标盘没有挂载、没被占用:`lsblk` 里 MOUNTPOINT 为空只是基本条件,再用 `lsof /dev/vdb` 查一遍进程占用更稳。还有一招交叉验证:`cat /proc/mounts` 列出内核视角的全部挂载,和 lsblk 结果对照,比单一来源可靠。云主机扩容前把这两个命令的输出存档,扩容后再跑一遍对照,能确认云盘确实长到了预期容量。看到类型为 swap 的分区、看到挂在根目录的盘,直接跳过不碰。分错盘的恢复成本极高,云主机先做快照再动手,物理机先确认备份可用。顺带认识新命名:NVMe 盘叫 nvme0n1,读法与 vdb 相同,别被名字吓住。
把这两个命令的输出看熟,后面无论是挂新盘、扩容还是排障,心里都有底,动手时也不会再对着盘符发怵。