新硬盘用fdisk分区核心三步:确认设备名、交互式建分区、写入后格式化;但须规避MBR限制、2TB容量天花板及内核未重读分区表等风险。

fdisk 分区,核心就三步——确认设备名、交互式建分区、写入后格式化。但别急着敲 w,MBR 限制、2TB 天花板、内核不重读分区表这些坑,一踩一个准。
怎么确认新硬盘设备名,而不是误操作系统盘
很多人一上来就 fdisk /dev/sdb,结果发现 /dev/sdb 其实是旧数据盘或云盘挂载点。必须先验证设备是否“干净”且“确实是新盘”:
-
lsblk看树状结构:找没有MOUNTPOINT的裸盘,容量和你加的物理/云盘一致 -
sudo fdisk -l | grep "Disk /dev/"过滤出所有磁盘行,比对大小(注意单位:GB vs GiB) - 云服务器(如阿里云、腾讯云)大概率是
/dev/vdb而非/dev/sdb;NVMe 盘则是/dev/nvme0n1 - 关键检查:
sudo fdisk -l /dev/sdX(把 X 换成疑似盘符)——如果输出里有Partition table: unknown或Device does not contain a recognized partition table,基本可以确认是空盘
fdisk交互中创建分区时,主分区/扩展分区怎么选
输入 n 后,fdisk 会问 Select (default p)。这里不是随便回车就行:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 选
p(主分区):适用于绝大多数场景,比如只分一个大区(/dev/sdb1),或总共不超过 4 个分区。MBR 下最多 4 个主分区,超了必须用扩展分区 - 选
e(扩展分区):仅当主分区已满(比如已有 3 个主分区),还想再划更多逻辑分区时才需要。扩展分区本身不能格式化,只是容器 - 起始扇区一律回车用默认值(通常是
2048):这是对齐 4K 扇区的最低要求,避免性能下降 - 结束位置别写死柱面数(
cylinders):老教程里的+1000c已淘汰,统一用+20G、+100M这种带单位的写法,fdisk会自动对齐
为什么w之后df不显示新分区,或者mkfs报错“device is busy”
写入分区表(w)只是改了磁盘开头的 512 字节,内核不一定立刻感知。常见现象和解法:
-
lsblk仍看不到/dev/sdb1:执行sudo partprobe /dev/sdb强制内核重读分区表;若失败,重启或换sudo blockdev --rereadpt /dev/sdb -
mkfs.ext4 /dev/sdb1报错device is busy:说明内核还缓存着旧分区信息,或该盘被 udev 规则自动挂载过。先sudo umount /dev/sdb*(星号防漏),再sudo partprobe - 格式化前务必确认没挂载:哪怕只是
/dev/sdb被 LVM 或 RAID 扫描过,也可能导致mkfs拒绝操作 - 不要跳过格式化直接挂载:
/dev/sdb1只是块设备,没文件系统就不能存文件,mount会报unknown filesystem type
超过2TB的硬盘还能用fdisk吗
能进,但不推荐。当你看到 fdisk 启动时输出类似 DOS partition table format cannot be used on drives for volumes larger than 2199023255040 bytes,就该停手了:
- fdisk 默认创建 MBR 表,硬性上限 2TB。超过后虽能强行写入,但高位扇区无法寻址,数据会损坏
- 此时应退出
fdisk,改用gdisk(GPT 专用)或parted(支持 GPT 且可脚本化) - 如果坚持用
fdisk,它会在启动时提示Use GUID partition table format (GPT)——这不是建议,是警告 - GPT 不是万能:某些旧 BIOS + Legacy 启动模式不支持 GPT 启动盘,但纯数据盘无此限制
w 那一刻,分区表已经落盘,而内核、LVM、udev、甚至上层应用可能还在按旧地图跑。所以每次写入前,多看一眼 fdisk -l /dev/sdX 输出里的 Disklabel type 和 Partition table 字段,比背命令重要得多。

















