一块 8TB 的盘插到服务器上,fdisk 直接懵了——它默认用 MBR 分区表,而 MBR 最大只能认到 2TB。这不是少数派场景了,现在几 TB 的企业盘、监控盘满地走,parted 这类支持 GPT 分区表的工具就成了 Linux 运维绕不开的基本功。
parted 能做什么?简单说,它是 GNU 出品的磁盘分区工具,核心价值是原生支持 GPT 分区表,能管理超过 2TB 的大磁盘,同时保留了传统 MBR 分区的能力。它既有交互式操作,也支持一行命令完成全流程,写脚本批量分区也方便。这篇东西适合谁看?运维工程师、刚接触 Linux 服务器管理的同学,以及搞嵌入式、自建 NAS 的玩家。你不需要背一堆命令,关键是理解分区表的底层逻辑,再配合实际操作,就能把这块硬骨头啃下来。
1. 为什么大磁盘分区必须用 parted
1.1 MBR 的 2TB 天花板
先解释一个让很多人困惑的问题:为什么 2TB 成了传统分区方式的物理极限?因为 MBR 分区表里,每个分区表项用 32 位(bit)来记录起始扇区号和扇区数,32 位无符号整数最大是 4294967295。传统磁盘扇区大小是 512 字节,两者一乘:4294967295 × 512 = 2199023255040 字节,约等于 2.2TB。于是 MBR 对单块盘容量的上限就是 2TB 左右,再多就超出地址空间了。
这个限制是硬性的,不是换个工具就能绕过的。所以当你面对一块 4TB、8TB、16TB 甚至更大容量的磁盘时,分区表必须换成 GPT(GUID Partition Table)。GPT 用 64 位来记录逻辑块地址,理论上限是 8 ZiB(泽字节),在现实世界中基本等于无限。parted 的核心价值就在这里——它是 Linux 下支持 GPT 分区表的成熟工具,fdisk 虽然新版也加了 GPT 支持,但历史包袱重,对超大磁盘、高级对齐和脚本化操作的支持都不如 parted 纯粹。
1.2 parted 与 fdisk 的核心差异
很多人在刚接触 parted 时会拿它和 fdisk 对比,我说说实际使用中的感受。
fdisk 是经典老牌工具,交互式菜单清晰,几 GB、几十 GB 的小盘用起来顺手。但在大磁盘场景下它有几个硬伤:早期的 fdisk 版本对 GPT 支持不完整,有些发行版默认 fdisk 还是只认 MBR;分区对齐方面 fdisk 比较弱,老版本不会自动帮你做 1MiB 对齐,对于 SSD 或者 4K 扇区盘,分区没对齐会直接影响性能。
parted 的设计更现代,它从一开始就把 GPT 和高级格式化(AF)的 align 考虑进去了。用 parted 创建分区时,默认会按 optimal 方式对齐,减少了不少手动计算的麻烦。另外 parted 有两种操作方式,交互模式和命令行直接传参模式,后者在批量分区、脚本自动化上非常方便。fdisk 虽然也有脚本模式,但格式不稳,容易出错。
下面用表做个直观对比:
| 项目 | parted | fdisk |
|---|---|---|
| GPT 支持 | 原生完整支持 | 新版支持,老版本弱 |
| 2TB 以上磁盘 | 完全支持 | 视版本而定 |
| 分区对齐 | 默认按 optimal 对齐 | 需手动指定 |
| 批量脚本化 | 命令行参数支持好 | 支持一般 |
| 交互体验 | 操作风格独特,需适应 | 菜单式,上手快 |
| 适用场景 | 大磁盘、脚本化、多盘批量 | 小磁盘、快速交互分区 |
1.3 什么时候该用 parted、什么时候别用
我见过有人只学 parted、完全抛弃 fdisk,也有人至今守着 fdisk 不放。我的建议是:别搞崇拜,工具是看场景的。
如果你只是给一块 500GB 的系统盘分个 /boot、/ 和 swap,fdisk 更顺手,交互菜单直接、误操作风险低。但如果你要给一块 4TB 数据盘做分区,或者你有 12 块盘要做同样的 GPT 分区,这时候 parted 就是正解——它一次命令就能完成,而且不需要交互确认。
还有一种情况得用 parted 而不是 fdisk:你在处理 4K 扇区(4096 字节物理扇区)的磁盘时,parted 的 align-check 功能可以直接告诉你当前分区是否对齐,fdisk 没有这么直观的检查手段。后面我在实操部分会详细演示这个功能。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. GPT 分区表的底层原理
2.1 保护性 MBR 的作用
用 parted 创建 GPT 分区表后,你可能会注意到磁盘第 0 扇区依然存在一个 MBR。这就是所谓的“保护性 MBR”(Protective MBR)。它的作用不是用来引导传统 BIOS 的,而是为了防止老旧的磁盘工具把整块 GPT 盘误判成“未分区磁盘”然后覆盖数据。
想象一下,如果你把一块 GPT 盘插入一个只认识 MBR 的 Windows 系统,如果没有保护性 MBR,系统会认为这块盘完全没有分区、是个空盘,弹窗提示“是否要初始化磁盘”——手一抖点确认,整个分区表就被毁掉了。有了保护性 MBR,老系统会识别出这块盘“存在一个未知类型的分区”,从而拒绝轻易覆盖。GPT 真正的重要数据并不在这个保护性 MBR 里,而是写在磁盘的第二个扇区开始的 GPT Header 和分区表项中。
2.2 GPT 头部与分区表备份机制
GPT 的设计有个亮点:它把分区表存了两份。主 GPT 表存放在磁盘头部(LBA 1 开始),备份 GPT 表存放在磁盘最尾部。这样做的好处显而易见——如果磁盘头部的分区表因意外损坏(比如电源故障、误写操作),系统可以从备份 GPT 恢复。
我实际维护的服务器里,有一台机器就出现过引导扇区被写坏的情况,当时就是用 sgdisk 配合 parted 从备份头恢复的分区表,数据完好无损。这一点上,GPT 比 MBR 要稳健得多。MBR 只有一份且没有校验机制,一个字节坏了整块盘的分区表就没了。
另一个特点是 GPT 对每个分区表项都有 CRC32 校验值。所以当系统启动或者工具读取分区表时,会先校验头部、再校验分区表项,不一致就会报告错误。这虽然是好事,但也意味着如果你用老旧的、不支持 GPT 的工具去随便修改磁盘,可能会把校验值弄坏,导致系统识别异常。所以大磁盘一定别用老版本分区工具随便碰。
2.3 对齐与性能的关系
分区对齐是个绕不开的话题。机械硬盘时代大家不太在意对齐,因为磁盘物理结构不同;到了 SSD 时代,对齐问题直接决定读写性能和寿命。
现代硬盘不管是 SSD 还是 HDD,物理扇区基本都是 4096 字节(4K 扇区)。如果分区的起始扇区不是 8 的整数倍(512 字节 × 8 = 4096 字节),也就是没有和物理扇区边界对齐,那么一次 IO 请求可能跨越两个物理扇区,导致读写放大。SSD 上这直接影响闪存磨损,机械硬盘上则体现为随机读写性能下降。
parted 默认的分区起始位置是按 optimal 对齐计算的,它会把起始扇区定位在某种内置的对齐策略上,通常是 1MiB 对齐(2048 扇区)。这在现代磁盘上完全够用且性能最佳。如果你想检查已有分区是否对齐,可以执行:
bash复制parted /dev/sdb align-check optimal 1
输出 1 aligned 就说明分区 1 对齐正常。如果不放心所有分区,可以循环检查。这个功能在批量部署服务器时非常实用——它能帮你避免“分区表建好了但性能跑不满”的尴尬。
3. parted 命令实操:从查看磁盘到完成分区
3.1 查看磁盘信息:别急着创建分区
实操之前,强烈建议先养成一个习惯:查看目标磁盘的信息。因为 parted 操作磁盘是直接写分区表的,搞错盘符等于搞错数据。在服务器上插了新盘,我一般会同时用以下几条命令确认:
bash复制# 查看系统识别的块设备列表
lsblk
# 查看内核是否识别到磁盘及容量
cat /proc/partitions
# 用 parted 查看分区信息和磁盘容量
parted /dev/sdb print
parted /dev/sdb print 是核心命令。如果磁盘还没有分区表,输出会提示 Partition Table: unknown。如果已经有分区表,会显示分区表类型(gpt / msdos)、磁盘总容量、扇区大小以及现有分区列表。
新手有个误区:拿到新盘直接 fdisk /dev/sdb 分区,分完发现盘符可能不对。所以多看一眼 lsblk 和 /proc/partitions,尤其是服务器上有多块相同容量盘的时候,确认无误再动手。
3.2 交互模式和命令行模式:parted 的两种用法
parted 的交互模式类似 fdisk 的菜单,输入命令后实时生效。进入交互模式很简单:
bash复制parted /dev/sdb
进入后会看到 (parted) 提示符,输入 help 能看到所有支持的命令。常用命令包括 mklabel(创建分区表)、mkpart(创建分区)、print(打印分区信息)、rm(删除分区)、resizepart(调整分区大小)、rescue(恢复丢失分区)等。
命令行模式则是在 shell 中直接传参,适合脚本和一次性操作。比如:
bash复制parted -s /dev/sdb mklabel gpt
parted -s /dev/sdb mkpart primary ext4 1MiB 100%
-s 参数是 script 模式,表示不进行交互确认,适合自动化。这两条命令合起来,就能在 /dev/sdb 上完成“创建 GPT 分区表”和“创建一个从 1MiB 开始、占满整个剩余空间的分区”。
我强烈建议在实际工作中多使用命令行模式。一方面脚本化方便,另一方面交互模式下误打一个命令就直接生效了,没有二次确认机制。刚开始不熟悉的时候,命令行模式可以帮你精确控制每一步。
3.3 创建 GPT 分区完整流程(4TB 数据盘实例)
下面我以一块全新的 4TB 数据盘 /dev/sdb 为例,演示完整的 GPT 分区流程。
第一步:创建 GPT 分区表
bash复制parted -s /dev/sdb mklabel gpt
这条命令执行后,磁盘的分区表就被初始化成 GPT。这里注意,如果磁盘原来有数据,此操作会清空分区表,相当于所有数据不可见。对于一块新盘,直接执行没问题;对于要重分的旧盘,务必先备份数据。
第二步:创建第一个分区
bash复制parted -s /dev/sdb mkpart primary ext4 1MiB 1GiB
这条命令创建了一个 primary 分区,文件系统类型参数写的是 ext4。这里有个容易混淆的地方:mkpart 的第二个参数本身是分区类型名称,在 GPT 下面写什么都行(比如 primary、data、linux-server 都可以),它并不是真正在分区上创建文件系统。我在第一次用的时候也以为这个参数会顺带格式化,实际上不会。真正的格式化要靠后面的 mkfs.ext4 完成。所以你可以写 primary,也可以写任意标签,不影响实际文件系统类型。
第三步:创建数据分区,占满剩余空间
bash复制parted -s /dev/sdb mkpart primary ext4 1GiB 100%
注意起始位置写 1GiB,结束位置写 100%。parted 支持多种单位:MiB、GiB、TiB、% 等。这里有两个常见坑:
第一个坑,起始位置如果用 1G 而不是 1GiB,parted 会从 1GB 位置开始,结果会多出 24MiB 的偏差(1GB = 1000MB,1GiB = 1024MiB,两者不相等)。为了精确控制和避免边界问题,建议统一用 MiB/GiB/TiB 这类基于二进制倍数的单位,或者直接用扇区号。
第二个坑,使用 100% 作为结束位置是一个安全的选择,它会自动算到磁盘最末尾。但注意如果磁盘末尾有备份 GPT 表,parted 会自动保留备份头所需的空间,不会把分区顶到磁盘物理末尾。
第四步:验证分区结果
bash复制parted /dev/sdb print
输出大致如下:
code复制Model: ATA WDC WD40EFZX-68A (scsi)
Disk /dev/sdb: 4001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 1074MB 1073MB primary
2 1074MB 4001GB 4000GB primary
看到 Partition Table: gpt 和两个分区,说明 GPT 分区创建成功。这里还能看到物理扇区大小是 4096B,说明这是 4K 扇区盘,对齐检查就更有必要了。
第五步:对齐检查
bash复制parted /dev/sdb align-check optimal 1
parted /dev/sdb align-check optimal 2
如果输出都是 aligned,说明分区对齐没有问题。
到这里,分区层面就完成了。之后需要格式化:
bash复制mkfs.ext4 /dev/sdb1
mkfs.ext4 /dev/sdb2
实际工作中,数据盘一般建议用 xfs 或者 ext4,看你的系统和需求。格式化和挂载这块是另一个话题,分区完成后就可以交给文件系统去处理了。
3.4 创建 MSDOS(MBR)分区的场景
parted 不只做 GPT,它也能做传统的 MBR 分区。虽然 2TB 以上必须上 GPT,但有些场景仍然需要用 MBR 分区表,比如老旧机器的系统盘、某些嵌入式设备或者和特定 bootloader 的兼容性考虑。
创建 MBR 分区的命令如下:
bash复制parted -s /dev/sdb mklabel msdos
parted -s /dev/sdb mkpart primary ext4 1MiB 100%
注意,MBR 限制单块盘 2TB,所以如果磁盘实际容量大于 2TB,100% 也不会超过 2TB 的限制范围,但多出来的空间就浪费了。MBR 还只能创建 4 个 primary 分区,如果要更多,就得把第四个分区设为 extended 分区,再在里面建 logical 分区。
对于需要多分区加兼容性的场景,我建议还是优先考虑 GPT。现代 Linux 系统全都支持从 GPT 启动(通过 GRUB2 引导),BIOS 也能引导 GPT 盘,只是需要额外的 BIOS 引导分区(BIOS boot partition),这个分区在 parted 里可以用 set 1 bios_grub on 标记。但如果你只是练手或者老系统部署,MSDOS 还是能应付的。
3.5 删除、调整、救援分区:parted 的进阶能力
日常运维中,除了创建分区,还有几个操作避免不了,这里一并说掉。
删除分区
bash复制parted -s /dev/sdb rm 2
这条命令删除编号为 2 的分区。注意删除后该分区上的文件系统也会失效,谨慎操作。我一般会在删除前用 p 打印分区表,确认编号和分区一一对应。
缩小/扩大分区
parted 支持 resizepart 命令调整分区大小。举例:把分区 2 扩展到磁盘末尾:
bash复制parted -s /dev/sdb resizepart 2 100%
这里有两个重点。第一,调整分区大小不会自动调整文件系统大小,所以缩小前你需要先缩小文件系统(比如用 resize2fs 对 ext4 操作,xfs 只能扩大不能缩小),扩大的话则可以先扩分区再扩文件系统。第二,对于正在挂载使用的分区,内核不会自动识别新的分区大小,需要运行 partprobe /dev/sdb 让内核重新读取分区表,或者重启系统。
救援分区
如果磁盘分区表意外损坏或某些分区丢失,parted 提供了 rescue 命令进行分区救援。它会在指定范围内扫描磁盘,尝试找回丢失分区的起始和结束位置。
bash复制parted /dev/sdb rescue 1MiB 100%
这个命令在交互模式下执行会提示找到疑似分区,让你选择是否恢复。命令行模式下可能需要小心处理交互逻辑。这个功能在数据恢复场景下很有用,但我不建议过度依赖——分区表丢失后的恢复成功率并非 100%,定期备份分区表(比如 sgdisk --backup)才是正道。
3.6 分区后的格式化与挂载(完整闭环)
分区建好了,最后一步是格式化和挂载,让你的数据盘真正能用。这块虽然不属于 parted 的职责范围,但既然文章是讲大磁盘分区,我就把完整链路走完,免得读者分完区卡在下一步。
bash复制# 格式化分区(根据需求选文件系统)
mkfs.ext4 /dev/sdb1
mkfs.xfs /dev/sdb2
# 创建挂载点
mkdir -p /data /logs
# 临时挂载验证
mount /dev/sdb1 /data
mount /dev/sdb2 /logs
# 查看磁盘使用情况
df -hT
如果要开机自动挂载,需要把挂载信息写入 /etc/fstab。一般建议用分区的 UUID 而不是设备名,因为设备名在重启后可能发生变化。获取 UUID 的方法:
bash复制blkid /dev/sdb1
输出里会有 UUID="xxxx-xxxx",把这一行按 fstab 格式写入即可:
code复制UUID=xxxx-xxxx /data ext4 defaults 0 2
写完之后建议用 mount -a 测试一下 fstab 配置是否正确,没问题再重启,避免系统起不来的尴尬。
4. 脚本化批量分区与自动化场景
4.1 命令行非交互模式:脚本化的关键
凡是需要重复性操作的地方,命令行的价值就体现出来了。用 parted -s 可以一次性完成多个操作,不需要人工确认,特别适合在新服务器批量初始化数据盘时配合循环脚本使用。
-s 是 --script 的缩写,表示静默模式。这个模式下不会弹出交互确认,命令会直接执行。注意,正因为少了确认环节,脚本里写错盘符或分区号的代价也变大了,所以脚本里必须加保护机制。
4.2 批量分区脚本示例
假设你有 4 块新盘,/dev/sdb 到 /dev/sde,想全部初始化为 GPT 并各创建一个占满全盘的分区,脚本可以这样写:
bash复制#!/bin/bash
for disk in /dev/sdb /dev/sdc /dev/sdd /dev/sde; do
# 安全保护:检查是否为块设备
if [ ! -b "$disk" ]; then
echo "警告: $disk 不存在,跳过"
continue
fi
# 安全保护:检查分区表是否为 unknown(无分区表才初始化)
parted -s "$disk" print | grep -q "Partition Table: unknown" || {
echo "警告: $disk 已有分区表,跳过"
continue
}
parted -s "$disk" mklabel gpt
parted -s "$disk" mkpart primary xfs 1MiB 100%
sleep 1
partprobe "$disk"
echo "已初始化 $disk"
done
这个脚本里我加了两层保护。第一层检查设备是否存在;第二层检查分区表状态,只有 unknown 状态才操作,防止在已有数据的盘上误操作。这个保护逻辑在实际生产环境里非常有用,比传统 echo y | parted ... 粗暴方式安全得多。
4.3 自动化中的对齐与容量规划
自动化场景里还有个细节:当你不确定磁盘大小时,直接用 100% 结尾是安全的;但当你需要在一个大盘上规划多个分区时,建议先查清楚磁盘容量再计算起点终点。
比如给 2TB 盘分三个区:一个 500GB 系统区、一个 500GB 数据区、剩余全部分配。可以这样:
bash复制parted -s /dev/sdb mklabel gpt
parted -s /dev/sdb mkpart primary ext4 1MiB 500GiB
parted -s /dev/sdb mkpart primary ext4 500GiB 1000GiB
parted -s /dev/sdb mkpart primary ext4 1000GiB 100%
这里用 GiB 作为单位,起始位置接上一个分区的结束位置,环环相扣,不会出现重叠或者空隙。如果需要把起始位置精确到某个值,也可以用扇区数,比如 2048s 表示从第 2048 扇区开始。在部分场景下,用扇区号可以避免单位换算带来的误差。
我自己的经验是:除非有特殊需求(比如预留某段空间给特殊用途),否则在生产环境直接用 1MiB 到 100% 是最不容易出错的组合。复杂分区规划虽然看着灵活,但一旦产生几 MiB 的空隙,后期强迫症会很难受。
5. 常见问题与排查技巧实录
5.1 系统提示 "unable to open /dev/sdb: No such file or directory"
这是新手最常遇到的情况之一。原因不一定是设备真的不存在,更可能是当前用户没有该设备的操作权限。Linux 下操作块设备通常需要 root 权限,普通用户无法直接访问。
排查方法:先看设备是否存在,再确认权限。
bash复制ls -l /dev/sdb
如果输出显示权限是 brw-rw---- 且属于 root 用户,说明只有 root 或者属于 disk 组的用户才能操作。最直接的办法是用 sudo 执行 parted 命令。另外还有一种可能性,如果设备刚插入系统,内核还没识别完成,稍等片刻或者运行 partprobe 让内核重新扫描。
5.2 分区创建成功但系统看不到新分区
分区表修改后,内核不一定实时刷新。这时你需要手动让内核重新读取分区表:
bash复制partprobe /dev/sdb
partprobe 是 parted 包自带的工具,专门用于通知内核重新读取分区表。如果用了 partprobe 还是看不到,可以试试 lsblk 刷新缓存:
bash复制lsblk -f
在部分场景里,某个分区还在挂载使用中,对同一块磁盘的其他分区做修改后,内核也会拒绝刷新。这种情况下确认没有分区在使用,或者重启系统后就正常了。
5.3 磁盘明明有分区,但 parted 显示 Partition Table: unknown
这种情况一般说明磁盘头部的分区表信息已经损坏或者格式非常规。不要急着重新 mklabel——那会直接覆盖当前分区表,如果上面有数据,数据就找不回来了。
正确的做法是先用 fdisk -l /dev/sdb 或 gdisk -l /dev/sdb 查看是否能识别出分区信息。很多情况下,虽然主 GPT 表损坏,但备份 GPT 表还在,用 gdisk 的 r 修复功能可以从备份恢复主表。恢复之后再用 parted 查看,分区信息就正常了。这个操作的前提是:你清楚这个磁盘上的数据结构,能够确认没有其他更严重的问题。
5.4 磁盘有残留文件系统签名
给一块旧盘重做分区表时,有时会碰到磁盘上残留了之前的文件系统信息(比如 LVM 元数据、旧的 RAID 超级块),导致创建分区后挂载时提示 wrong fs type, bad option, bad superblock。清理残留信息可以用 wipefs:
bash复制wipefs -a /dev/sdb
这条命令会把磁盘上所有可见的文件系统签名清除。注意,它同样会破坏数据,所以只对确定不需要保留数据的盘使用。我一般在重新分区数据盘之前,都会先执行一遍 wipefs 再 mklabel,相当于给磁盘做一次干净的重置,省得后面各种奇怪问题。
5.5 分区表已满或分区数过多的提示
GPT 分区表理论上是支持 128 个分区的(默认配置下),但某些系统或者特定配置下这个数字可能更少。如果你创建大量分区时报了“分区表空间不足”之类的错误,可能是之前创建又删除过大量分区,导致分区表项碎片化。
在 GPT 模式下,解决方法是备份分区信息后重建分区表。用 sgdisk 备份和恢复是比较可靠的:
bash复制sgdisk --backup=table.sdb /dev/sdb
# 重建后恢复
sgdisk --load-backup=table.sdb /dev/sdb
这个操作有一定风险,我不建议在日常操作中反复使用。但如果确实遇到分区表空间不足,这就是比较干净的解决路径。
5.6 关于 --warn 参数和磁盘忙碌
parted 在命令行模式下遇到一些特殊情况时,会输出警告或者直接拒绝操作。比如磁盘被系统占用时,执行 mkpart 可能会报错。这时候可以用 --warn 参数来控制行为:
bash复制parted --warn -s /dev/sdb mkpart primary ext4 1MiB 100%
--warn 让 parted 在遇到问题时会尽量给出警告而不是直接终止。但在生产环境里,我更建议先排查磁盘为什么忙碌。用 lsof /dev/sdb 或者 fuser -v /dev/sdb 查看哪些进程占用着设备,先解占用再操作,比强行操作更稳妥。
5.7 parted 版本差异与兼容性问题
不同发行版自带的 parted 版本差别挺大。Debian/Ubuntu 系的 parted 版本通常较新,CentOS 7 自带的 3.1 版本相对老一些,而 CentOS 10 这类较新的系统一般会带 3.4+ 以上版本。老版本 parted 在部分命令的参数解析上有差异,比如某些版本 mkpart 的参数顺序必须是 mkpart [part-type] [fs-type] start end,新版本则更加灵活。
遇到命令参数报错时,先检查版本:
bash复制parted --version
然后根据文档调整。不要拿旧版的习惯直接套新版,也不要拿新版的语法去跑旧版环境。我踩过最典型的一个坑是:CentOS 7 上用 parted -s /dev/sdb mkpart primary 1MiB 100%(省略 fs-type)可以正常执行,但在某个旧版本上必须显式写 mkpart primary ext4 1MiB 100%,不写 fs-type 就会报语法错误。所以写脚本的时候,最好是先把命令在单台机器上测试通过,再批量执行。
6. 最后再分享一个小技巧
前面讲了很多操作细节,最后说一个我实际用了很久的分区小技巧。
当你需要在新磁盘上创建多个分区时,不要上来就手动计算每个分区的起始点和结束点。先用 parted /dev/sdb unit GiB print 查看磁盘总容量,然后根据容量规划分区布局,最后用百分比或者固定容量写脚本一次性创建。这样可以避免手动计算导致的“分区间隔 1MiB”或“起始位置错误”这类低端问题。
另外一个容易被忽略的点:分区命名。在 GPT 下,mkpart 可以给每个分区起名字(比如 data1、logs、backup),这些名字会在后面的运维中帮你快速识别分区用途。虽然不写也能用,但建议养成写名字的习惯。比如:
bash复制parted -s /dev/sdb mkpart backup ext4 1MiB 500GiB
在 lsblk -f 的输出里,你会看到 sdb1 的 PARTLABEL 显示为 backup。服务器上插着十几块盘的时候,这种命名能帮你省下不少排查时间。
我个人的体会是:parted 这个工具,刚开始接触会觉得它的交互方式和 fdisk 不太一样,不太习惯;但一旦你把常用命令变成脚本和肌肉记忆,它就变成了管理大磁盘最顺手的那把刀。希望这篇内容能帮你少走一些我走过的弯路。
