硬盘分区艺术

安装器里的 /dev/nvme0n1p2、ext4、/home 经常挤在同一个界面里,看起来像一回事;其实它们分别属于设备、分区、文件系统和目录四层。先把这四层拆开,你才不会把“选择挂载点”误解成“给分区改标签”。

ℹ️ 阅读指南
  • 适合你:准备安装 Linux、规划新磁盘或想读懂 lsblk 的读者。
  • 读完能做到:区分整盘与分区;解释 GPT/MBR 结构、ESP 与 BIOS Boot Partition;按用途设计基础布局。
  • 前置与安全条件:会使用终端。观察命令可在任意 Linux 运行;分区练习只能使用新建、可丢弃、没有数据的虚拟机附加盘,并先创建虚拟机快照。
  • 适用范围:截至 2026-07,重点讨论常见 PC 本地块设备;硬件 RAID、SAN、ZFS、LVM/LUKS 仅提示层次,不在本篇展开。
  • 预计用时:阅读 20 分钟;虚拟盘练习约 25 分钟。
  • 完成证据:一张四层映射表,以及一次性虚拟盘修改前后的分区表转储。

1. 先建立四层模型

Linux 块设备、分区与挂载点关系图

块设备(整盘) → 分区 → 文件系统 → 挂载点
/dev/nvme0n1    → p2   → ext4      → /
  • 块设备:内核提供的按块读写对象,例如整块 SATA 盘、NVMe 盘、虚拟盘或逻辑卷。
  • 分区:分区表描述的整盘地址范围。分区本身还不是“可保存文件的文件夹”。
  • 文件系统:把块空间组织成目录、文件和元数据的格式,例如 ext4、Btrfs、XFS 或 FAT。
  • 挂载点:现有 Linux 目录树中的目录。挂载后,访问该目录会进入对应文件系统。

这个模型也有扩展:LUKS、软件 RAID、LVM 可以插在块设备与文件系统之间;Btrfs 子卷不是普通磁盘分区。下一篇会继续解释文件系统与挂载,本篇只负责物理/虚拟磁盘的分区边界。

2. 先认盘,不要先打开分区工具

不同总线的名称不同:SATA/SCSI 风格常见 /dev/sda,NVMe 常见 /dev/nvme0n1,虚拟机还可能出现 /dev/vda。字母与编号受探测顺序影响,不能从教程截图猜出自己的目标。

先只读列出整盘的容量、型号、序列号和连接方式:

lsblk -d -o NAME,PATH,SIZE,MODEL,SERIAL,TRAN,TYPE

再展开分区、文件系统与挂载关系:

lsblk -o NAME,PATH,SIZE,TYPE,FSTYPE,FSVER,PTTYPE,PARTTYPENAME,MOUNTPOINTS
findmnt --real
sudo fdisk --list

识别目标时至少同时核对:

  1. TYPE=disk 还是 TYPE=part
  2. 容量是否与预期一致;
  3. 型号/序列号或虚拟机磁盘槽位;
  4. 是否有已挂载子分区;
  5. 是否承载当前 //home/boot 或 Swap。
🚫 立即停止的情况

只要目标盘包含当前根文件系统、重要数据、无法解释的分区,或容量/型号与预期有任何冲突,就不要进入写入模式。先备份数据并请另一个人复核目标。分区表备份不能代替文件级数据备份。

3. MBR 与 GPT 到底保存什么

分区表只是“哪些逻辑块属于哪个分区”的元数据,不会创建 ext4,也不会自动决定挂载点。

3.1 MBR:历史 PC 布局

经典 MBR 把启动代码、磁盘签名和 4 个分区项放在 LBA 0 的 512 字节扇区。传统工具把分区分为:

  • 最多 4 个主分区表项;
  • 可让其中一个成为扩展分区;
  • 扩展分区内部再用链式记录描述多个逻辑分区。

当逻辑扇区为 512 字节且使用 32 位 LBA 时,常见可寻址上限约为 2 TiB。4Kn 等扇区尺寸会改变数值,但兼容性仍使 MBR 不适合作为现代大盘的首选。

3.2 GPT:带标识、校验与备份

GPT(GUID Partition Table)常见结构如下:

LBA 0:保护性 MBR
LBA 1:主 GPT Header(含自身与分区项数组的 CRC)
后续:主分区项数组
中间:各分区数据区域
磁盘末尾:备份分区项数组 + 备份 GPT Header

保护性 MBR 用来提醒只认识 MBR 的旧工具“这块盘已被占用”。主、备 Header 和 CRC 能发现部分元数据损坏,但不是数据备份,也不保证损坏一定能自动恢复。GPT 规范允许大量分区;常见工具默认创建 128 个分区项,但这不是 GPT 对所有实现强制的固定上限。

选择更适合需要注意
GPT现代 UEFI 安装、大容量磁盘、新系统旧固件/旧工具兼容性需单独确认
MBR必须兼容旧式 BIOS 与旧工具的既有系统传统分区项与容量边界更紧,元数据冗余较弱

BIOS 可以配 GPT,UEFI 也不能简单等同于“只认 GPT”。在现代 PC 新装系统时选择 UEFI + GPT 是兼容性建议;固件路径与分区表的详细边界见 BIOS/UEFI 系统详解

4. 启动相关的特殊分区

EFI System Partition(ESP)

ESP 带有专用分区类型标识,PC 上通常格式化为 FAT32,用于保存 UEFI 可执行文件。它可能挂载到 /boot/efi/efi/boot;挂载点不是 ESP 身份本身。

新装系统常为 ESP 预留约 512 MiB–1 GiB,足以容纳多个常见加载器;若内核和 initramfs 也放入 ESP,实际需求会更高。双系统机器已有 ESP 时,通常复用并保留其中所有厂商目录,不要格式化。先用 lsblkfindmnt 和分区类型确认。

BIOS Boot Partition

这是 GRUB 在 Legacy BIOS + GPT 场景可能需要的小分区,用于嵌入 core image。它没有普通文件系统,也不挂载为 /boot。不要把它与 ESP、单独的 /boot 文件系统混淆。

5. 按场景规划,而不是套容量公式

场景可作为起点的布局主要取舍
学习虚拟机ESP(UEFI 时)+ 单一 /;Swap 文件或发行版默认方案简单、易快照;不必为练习切太多分区
普通桌面/笔记本ESP + /;按重装、配额、备份需求决定是否独立 /home单文件系统共享空间最灵活;独立 /home 隔离容量但也会固定边界
需要休眠的笔记本在上述基础上为可用的 Swap 方案留足空间需求取决于休眠时实际内存占用、压缩和实现,不应只套“内存 1–2 倍”
快照型 Btrfs 桌面ESP + Btrfs 文件系统,以子卷分离 //home子卷共享容量,不等于分区;快照不等于异机备份
服务器/容器主机按日志、数据库、容器数据与恢复策略划分文件系统或逻辑卷容量隔离可限制故障范围,但扩容和监控更复杂

数字只能由工作负载决定。作为教学估算,轻量桌面根文件系统可以从 40–80 GiB 量级开始评估;大型 SDK、游戏、容器镜像或本地模型会迅速突破它。先列出软件、增长速度、快照保留和至少 15%–20% 的运行余量,再定最终大小。

独立 /home 不会保证重装零丢失:安装时仍可能选错格式化目标;用户 UID、旧配置与新版本应用也可能冲突。它只提供布局隔离,外部备份仍是必要条件。

6. 一次性虚拟盘分区练习

⚠️ 风险、备份与目标范围

本节会重写目标盘分区表,目标盘上的分区和数据可能全部不可用。只允许使用虚拟机中新建的空白附加盘:先关机添加一块约 4 GiB 的新虚拟盘,创建快照,再启动。不要把宿主机磁盘、USB 备份盘或虚拟机系统盘传入练习。

6.1 探测并记录修改前状态

lsblk -d -o NAME,PATH,SIZE,MODEL,SERIAL,TRAN,TYPE
lsblk -o NAME,PATH,SIZE,TYPE,FSTYPE,PTTYPE,MOUNTPOINTS

根据“新增容量 + 型号/槽位 + 没有挂载子分区”三项识别目标,再把占位符替换为真实整盘路径:

disk="/dev/<一次性虚拟整盘>"
lsblk -o NAME,PATH,SIZE,TYPE,FSTYPE,PTTYPE,MOUNTPOINTS "$disk"
sudo wipefs --no-act "$disk"
sudo sfdisk --dump "$disk" | tee "$HOME/partition-table-before.txt"

wipefs --no-act 只探测签名,不擦除。全新空盘上的 sfdisk 子进程可能报告没有可识别分区表;这就是“修改前为空”的证据,不要为了消除报错选择别的盘。由于输出经过 tee,应以屏幕消息和保存文件为准,不要用整条管道的退出码判断空盘状态。

6.2 创建 GPT 与两个分区

再次确认 disk 不是系统盘,然后才启动交互工具:

sudo cfdisk "$disk"

在界面中选择 gpt,创建一个约 1 GiB 分区和一个使用剩余空间的分区,检查列表后选择 Write 并输入确认文本,最后 Quit。cfdisk 的最终写入会改变分区表;在按 Write 之前仍可退出而不提交。

本篇不格式化、不挂载这两个分区:那属于下一篇的文件系统操作。

6.3 验证结果

lsblk -o NAME,PATH,SIZE,TYPE,FSTYPE,PTTYPE,PARTTYPENAME,MOUNTPOINTS "$disk"
sudo sfdisk --dump "$disk" | tee "$HOME/partition-table-after.txt"

成功证据是整盘显示 PTTYPE=gpt,出现两个 TYPE=part 的子项,且 FSTYPE 仍为空。若目标没有变化,先记录 cfdisk 的退出信息;若出现意外文件系统或挂载点,立即停止,不要再次写入。

6.4 回滚

关闭虚拟机并恢复练习前快照,然后重新运行 lsblk,确认新增盘回到初始状态或被快照移除。恢复快照是本练习的可靠回滚;不要用 wipefs 冒充“恢复原数据”,它只能删除签名,不能还原内容。

7. 常见故障与下一步

症状可能原因只读诊断下一步决策
无法判断哪块是新盘名称随探测顺序变化、型号相似lsblk -d -o PATH,SIZE,MODEL,SERIAL,TRAN,对照虚拟机/硬件管理界面无法唯一确认就停止,不启动写入工具
分区工具提示 device busy子分区已挂载、被用作 Swap/LVM/RAIDfindmnt --source /dev/<分区>swapon --showlsblk查清使用者;系统盘或重要卷不要在线改分区
写入后内核仍显示旧分区设备正在使用,内核无法重读表lsblkjournalctl -k -n 50不重复写表;在可中断的测试环境卸载后重启再看
UEFI 安装器说没有 ESP分区类型错误、未使用 FAT,或安装介质从 Legacy 启动lsblk 查看类型/文件系统,检查 /sys/firmware/efi先确认启动模式和真实 ESP,避免格式化已有 ESP
GPT 工具报告主/备 Header 不一致磁盘克隆/扩容或元数据损坏sudo fdisk --list /dev/<整盘> 保存完整输出停止改写;重要数据先做只读备份,再按专业恢复流程处理

8. 小结与下一站

你现在能沿着“块设备 → 分区 → 文件系统 → 挂载点”解释磁盘布局,能安全识别整盘,也知道 GPT/MBR 与 UEFI/BIOS 不是简单一一绑定。下一篇 文件系统基础 会从空分区继续讲格式、VFS、手动挂载与 /etc/fstab

官方参考

修订记录

2026-02-24 初版发布 介绍 MBR、GPT、常见挂载点与基础分区建议。
2026-07-21 实质修订 重建四层存储模型,补充安全识盘、GPT/MBR 结构、ESP 与 BIOS Boot Partition 边界、分场景容量规划,以及一次性虚拟盘的完整验证与回滚练习。
Navigation