磁盘分区
100%

文件系统 · 第 4 课

磁盘分区

学习使用 `parted` 检查、创建和调整分区边界的验证优先工作流程。

编辑分区会改变定义存储边界的映射。选错设备、起点或终点,都可能使现有数据无法访问,或覆盖关键元数据。只应在可丢弃的虚拟磁盘上练习;修改有价值的存储前,必须准备一份位于其他位置且经过恢复测试的备份。

选择工具

常用工具包括:

  • fdisk:util-linux 提供的终端分区编辑器,支持 MBR 和 GPT
  • parted:支持 GPT、MBR 和其他分区表格式的终端及脚本化编辑器
  • gdisk:以 GPT 为重点的交互式编辑器
  • GParted:图形化的分区和文件系统前端

工具能力会不断变化,因此应查阅本机手册和发行版文档。图形界面并不会让破坏性操作变得安全,它仍然修改相同的磁盘元数据。

关于当前 Linux fdisk,哪个说法正确?

识别目标并停止使用

先进行只读清点:

$ lsblk -o NAME,PATH,TYPE,SIZE,MODEL,SERIAL,TRAN,PTTYPE,FSTYPE,MOUNTPOINTS
$ findmnt --real
$ sudo parted --list

应根据持久身份、型号、序列号、容量、传输方式和拓扑确认整个设备,而不能只看 /dev/sdX。随后识别所有使用者:已挂载文件系统、交换空间、LVM、RAID、加密、容器、虚拟机、数据库和打开的文件描述符。

按照各层的文档流程卸载或停用所有相关内容。不能仅仅因为工具可以成功打开,就编辑正在运行系统所在磁盘的分区表。以可恢复的形式记录现有分区表,并确认备份位于不同故障域。

为什么不能把 /dev/sdb 这样的设备名作为唯一目标检查?

在 parted 中检查单个设备

打开已经明确核实的整个设备:

$ sudo parted /dev/VERIFIED-DISK

然后选择统一的显示单位并打印分区表:

(parted) unit MiB
(parted) print free

print free 显示当前条目和未分配区域。parted 命令可能立即更新磁盘元数据,而不是等到最终“保存”,因此必须把交互式提示符视为实时写权限。

parted 中的 print free 有助于显示什么?

创建分区条目

mkpart 的具体语法取决于分区表类型。以 MiB 为单位的 GPT 示例类似于:

(parted) mkpart data ext4 1MiB 5000MiB

这会创建一个包含名称、建议内容类型、起点和终点的分区条目,不会创建 ext4 文件系统。格式化是独立的破坏性步骤,只有在内核识别到预期的新分区且其身份得到核实后才能执行。

应采用工具建议的对齐方式,并了解端点是否包含在内以及如何舍入。使用 printlsblk 检查结果,不要假定请求的十进制边界一定被精确记录。

partedmkpart 会创建什么?

调整边界与内容大小

resizepart NUMBER END 只会移动分区的结束边界,不会调整其中的文件系统或其他结构。

操作顺序至关重要:

  • 扩容时,先扩大外层分区或逻辑设备,再使用对应文件系统支持的工具扩大文件系统。
  • 缩容时,先确认文件系统支持缩小;按照其离线或在线要求先缩小文件系统,再缩短外层边界,并确保边界不会越过新的内容终点。

某些文件系统不支持缩小。加密、LVM、RAID 和嵌套布局还会增加更多必须按顺序操作的层。如果设备繁忙,内核也可能拒绝重新读取更改后的分区表,必须受控重启后才能使用新布局。

文件系统支持缩小时,哪种顺序可以避免截断仍在使用的文件系统数据?

课程已完成

你已完成 磁盘分区

现在,你可以把分区编辑描述为分层且具有破坏性的存储操作。

  • 选择支持实际分区表和工作流程的工具。

  • 核实磁盘的持久身份,并停用所有使用者。

  • 写入前检查单位、分区条目和空闲区域。

  • 牢记 mkpart 不会创建文件系统。

  • 按安全顺序调整内层内容与外层边界。

保存学习进度

创建免费账户即可保存本课进度,并在任意设备上继续学习。

创建免费账户
下一节
返回 文件系统