编辑分区会改变定义存储边界的映射。选错设备、起点或终点,都可能使现有数据无法访问,或覆盖关键元数据。只应在可丢弃的虚拟磁盘上练习;修改有价值的存储前,必须准备一份位于其他位置且经过恢复测试的备份。
文件系统 · 第 4 课
磁盘分区
学习使用 `parted` 检查、创建和调整分区边界的验证优先工作流程。
选择工具
常用工具包括:
fdisk:util-linux 提供的终端分区编辑器,支持 MBR 和 GPTparted:支持 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 文件系统。格式化是独立的破坏性步骤,只有在内核识别到预期的新分区且其身份得到核实后才能执行。
应采用工具建议的对齐方式,并了解端点是否包含在内以及如何舍入。使用 print 和 lsblk 检查结果,不要假定请求的十进制边界一定被精确记录。
parted 的 mkpart 会创建什么?
调整边界与内容大小
resizepart NUMBER END 只会移动分区的结束边界,不会调整其中的文件系统或其他结构。
操作顺序至关重要:
- 扩容时,先扩大外层分区或逻辑设备,再使用对应文件系统支持的工具扩大文件系统。
- 缩容时,先确认文件系统支持缩小;按照其离线或在线要求先缩小文件系统,再缩短外层边界,并确保边界不会越过新的内容终点。
某些文件系统不支持缩小。加密、LVM、RAID 和嵌套布局还会增加更多必须按顺序操作的层。如果设备繁忙,内核也可能拒绝重新读取更改后的分区表,必须受控重启后才能使用新布局。
文件系统支持缩小时,哪种顺序可以避免截断仍在使用的文件系统数据?
请只在管理 Linux 分区和文件系统实验指定的辅助虚拟磁盘上操作,不要替换成主机磁盘。
课程已完成
你已完成 磁盘分区
现在,你可以把分区编辑描述为分层且具有破坏性的存储操作。
选择支持实际分区表和工作流程的工具。
核实磁盘的持久身份,并停用所有使用者。
写入前检查单位、分区条目和空闲区域。
牢记
mkpart不会创建文件系统。按安全顺序调整内层内容与外层边界。