parted是大于2tb磁盘的首选分区工具,因其原生支持gpt、直接处理超大扇区地址、内置对齐检查、支持直观相对语法及脚本化操作。

超过2TB的磁盘不能用 fdisk 分区,必须用 parted 或 gdisk 创建 GPT 分区表;否则最多只能分出 2TB,剩余空间不可见、不可用。
为什么 parted 是大于2TB磁盘的首选分区工具
parted 原生支持 GPT,无需额外切换模式,能直接处理超大扇区地址(如 20TB 磁盘的 42965401600 个扇区),而 fdisk 在 MBR 模式下受限于 32 位 LBA 寻址,理论上限就是 2TB。
它还内置对齐检查(optimal 对齐策略),避免因扇区未对齐导致 I/O 性能下降——这点在 SSD 或 NVMe 盘上尤为明显。
-
parted的mkpart命令可直接指定起止位置(支持+500GB、-1这类相对语法),比gdisk的扇区编号更直观 - 不依赖交互式菜单:整套操作可写成脚本,适合自动化部署(比如云服务器初始化)
- 但注意:
parted执行命令后立即写入磁盘,没有“确认保存”步骤,误操作无法回退
parted /dev/sdb 创建 GPT 分区的最小可靠流程
以新挂载的 20TB 磁盘 /dev/sdb 为例,执行以下操作:
sudo parted /dev/sdb (parted) mklabel gpt (parted) mkpart primary ext4 1MiB 100% (parted) align-check optimal 1 (parted) q
关键点说明:
-
mklabel gpt必须第一步执行——它会清空原有分区表,包括隐藏的 MBR 签名,否则后续mkpart可能失败或静默忽略 -
mkpart primary ext4 1MiB 100%中的1MiB是为对齐留出的起始偏移(避开传统 512B 扇区边界),100%表示用尽全部剩余空间,比手算扇区数安全 -
align-check optimal 1验证第 1 个分区是否对齐,返回1 aligned才算合格;若提示not aligned,需删掉重做(rm 1)
parted 和 gdisk 在实际使用中的核心差异
两者都能建 GPT,但行为逻辑不同:
-
parted默认按“字节”或“%”单位操作,输入mkpart primary 0 20TB会被拒绝,必须用100%或带单位的+20TB(需版本 ≥3.3) -
gdisk强制按扇区编号(sector),n后要手动输起始/结束扇区号,容易算错;但它有l命令列出所有可用类型,对需要指定EFI System或Linux RAID类型的场景更可控 -
parted不显示分区类型 ID(如 EF00、8E00),所有分区默认为0FC63DAF-8483-4772-8E79-3D69D8477DE4(Linux filesystem),如需特定类型(如 swap),得用set 1 boot on或后续mkswap - 如果磁盘已存在数据且你只想扩容现有分区,
parted的resizepart比gdisk更直接,但务必先卸载文件系统并用e2fsck校验
挂载前最容易被跳过的三件事
分区完成 ≠ 可用。漏掉任一环节都会导致 mount: wrong fs type 或 device is busy:
- 用
lsblk确认新分区设备名是/dev/sdb1(不是/dev/sdb)——GPT 下设备名不会自动更新,有时需partprobe /dev/sdb或重启内核识别 - 格式化必须用支持大容量的工具:
mkfs.ext4 -T largefile /dev/sdb1(-T largefile优化 inode 分布),而不是默认参数,否则小文件多时元数据易耗尽 -
/etc/fstab中推荐用 UUID 而非设备名:UUID=xxxx /data ext4 defaults 0 2;因为云环境热插拔或多盘时,sdb可能下次变成sdc,导致开机卡住
真正麻烦的不是分区本身,而是分区后没验证对齐、没确认内核识别、也没用 UUID 写 fstab——这些细节在批量部署时会集中爆发。










