fdisk 不行是因为其默认使用 mbr 分区表,仅支持最大约 2.2 tb(2³²×512 字节),超限后会截断或报错;gdisk 和 parted 支持 gpt,采用 64 位 lba 寻址,无容量限制。

必须用 GPT 分区表,不能用 fdisk;否则写入失败或只识别前 2TB。
为什么 fdisk 不行,而 gdisk 或 parted 才能处理大于 2TB 的硬盘
fdisk 默认操作 MBR 分区表,其地址空间仅支持最大 232 个扇区(512 字节/扇区 × 232 ≈ 2.2 TB)。超过此值后,fdisk 会静默截断、报错 Value out of range,或创建出无法挂载的分区。gdisk 和 parted 内置 GPT 支持,直接使用 64 位 LBA 寻址,无此限制。
常见错误现象:
- 运行
fdisk /dev/sdb后输入p显示分区大小始终卡在 2TB 左右 - 格式化时报
mkfs.ext4: invalid argument passed to ext2 library - 挂载后
df -h显示容量远小于物理磁盘实际大小
用 gdisk 创建 GPT 分区并写入(推荐新手)
gdisk 交互清晰、容错提示明确,适合首次操作大容量盘。关键步骤如下:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 先确认设备名:
lsblk或sudo fdisk -l | grep "Disk /dev/sd",找到目标盘(如/dev/sdb),切勿选错系统盘 - 执行
sudo gdisk /dev/sdb;若提示Found invalid GPT and valid MBR,直接继续 —— gdisk 会自动清除旧结构 - 输入
o(小写 o)创建空 GPT 表(⚠️清空所有现有分区) - 输入
n新建分区:起始扇区回车(默认对齐 1MB),结束扇区可输+100G或直接回车用满剩余空间,类型码保持默认8300(Linux filesystem) - 输入
p预览,确认Partition table显示GPT且大小正确 - 输入
w写入 —— 此步不可逆,务必核对设备名和预览结果
格式化与挂载要点(尤其注意 UUID 和 fstab)
分区完成后设备节点为 /dev/sdb1(不是 /dev/sdb),格式化前请再次确认:
- 格式化命令示例:
sudo mkfs.ext4 -F /dev/sdb1(-F 强制覆盖,避免误判已有文件系统) - 创建挂载点:
sudo mkdir -p /mnt/data - 临时挂载:
sudo mount /dev/sdb1 /mnt/data - 获取 UUID:
sudo blkid /dev/sdb1,输出类似UUID="a1b2c3d4-..." TYPE="ext4" - 写入
/etc/fstab(务必用 UUID,避免设备名变动导致开机失败):UUID=a1b2c3d4-... /mnt/data ext4 defaults 0 2 - 测试 fstab:
sudo mount -a,无报错即生效
parted 脚本化操作(适合批量部署)
如果需自动化处理多块盘,parted 更易写进脚本。注意单位必须显式指定,且不能依赖交互确认:
- 清空并初始化 GPT:
sudo parted /dev/sdb mklabel gpt - 新建主分区占满全盘:
sudo parted /dev/sdb mkpart primary 0% 100% - 强制对齐(可选但推荐):
sudo parted /dev/sdb align-check optimal 1 - 格式化后挂载流程同上
⚠️ parted 的 mkpart 不校验重叠或越界,若已有分区未清除就执行,可能破坏数据;建议先 sudo parted /dev/sdb print 确认为空,再 mklabel gpt。










