fdisk仅用于分区,不执行格式化;格式化需用mkfs系列命令(如mkfs.ext4或mkfs.xfs),且必须在正确分区并写入(w)后操作,否则会因设备节点不存在或分区未识别而失败。

fdisk 不是格式化命令,它只负责分区;真正执行格式化的是 mkfs 系列命令。直接用 fdisk 对未分区磁盘执行 w 会报错或无效果——这是新手最常卡住的第一步。
确认目标磁盘并检查分区表类型
先用 lsblk 或 fdisk -l 看清设备名(如 /dev/sdb)和当前状态:
- 若输出中显示
Disk label type: dos,说明是 MBR 分区表,可用fdisk - 若显示
Disk label type: gpt,且磁盘 >2TB,fdisk会警告“DOS partition table format cannot be used”,此时应改用gdisk或parted - 若设备后无任何
/dev/sdb1类似分区行,说明尚未分区,可安全操作 - 特别注意:不要对
/dev/sda这类系统盘误操作,fdisk /dev/sda输错w可能导致系统无法启动
用 fdisk 创建分区的实操要点
进入交互模式后,关键动作不是狂按 n,而是先输入 p 确认当前空表,再操作:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
n→ 选p(主分区)→ 默认分区号 → 回车用起始扇区默认值(通常是2048)→ 结束位置写+50G(带加号!不加就是扇区数,极易出错) - 如果磁盘已存在旧分区表但损坏,
fdisk可能提示Device does not contain a recognized partition table,此时直接n即可,无需先d - 输完
n后务必用p再看一遍,确认大小和起止范围符合预期,再按w写入 -
w执行后内核未必立即识别新分区,尤其在旧内核或虚拟机里,需运行partprobe /dev/sdb或重启,否则mkfs会报No such file or directory
mkfs 格式化时的关键参数与陷阱
mkfs 不是万能通配命令,必须指定文件系统类型,否则默认行为因发行版而异(CentOS 默认 ext4,Ubuntu 可能是 ext2):
- 明确指定:用
mkfs.ext4 /dev/sdb1,而不是mkfs /dev/sdb1 - 大文件场景优先选
xfs:mkfs.xfs /dev/sdb1,它对单个大文件读写更稳,且无需e2fsck那种强制检查 - 避免
-t参数混淆:mkfs -t ext4等价于mkfs.ext4,但部分老版本不支持-t,直接写全名更可靠 - 格式化前
ls -l /dev/sdb*确认节点存在;格式化中 Ctrl+C 不会中断写入,但可能留下半成品文件系统,再次运行会提示“already has a filesystem”
为什么格式化后 df -h 看不到空间?
因为分区只是画了格子,格式化只是铺了地砖,还没开门营业——没挂载就不可见:
- 临时挂载:
mkdir -p /data && mount /dev/sdb1 /data,然后df -h才会显示 - 开机自动挂载必须写
/etc/fstab,但别直接抄网上的示例:检查blkid /dev/sdb1输出的 UUID,用 UUID 替代设备名,避免设备名变动(如热插拔后变成sdc1)导致开机卡住 - fstab 中第 5 列(dump)设为
0,第 6 列(pass)设为2(非根分区),设成1可能引发 fsck 报错阻塞启动
fdisk 对 >2TB 磁盘的支持是残缺的,即使强行分出 3TB 分区,系统也可能只识别前 2TB。这不是 bug,是 MBR 本身的 32 位扇区地址限制。遇到这种磁盘,跳过 fdisk 直接上 parted 更省事。










