给新硬盘分区不是找命令,而是一条固定操作链:看盘 → 建分区表 → 建分区 → 格式化 → 挂载持久化。坑最多的不是建分区,而是最后一步 fstab [5]。
第一步:先看盘
lsblk 列出磁盘和挂载点,fdisk -l 列出各盘的分区表。这两条只读命令随时可跑,不会改动任何数据 [1]:
lsblk
sudo fdisk -l
第二步:先确认分区表存在
fdisk 能读写 GPT、MBR 等分区表;分区表通常写在磁盘的第 0 扇区,新空盘往往没有分区表,需要先创建(fdisk 里用 o/g),而不是直接建分区 [1]。手册还明确:CHS(柱面-磁头-扇区)寻址已废弃,别照老教程传 fdisk -S 63 -H 255 那套参数——fdisk 默认已按设备 4K 扇区对齐 [1]。
第三步:建分区
fdisk 是交互式工具,官方定位就是”面向人”;脚本场景改用 partx 读分区布局 [1]。输入大小时用 +2G 这种相对写法,fdisk 会按设备属性自动对齐 [1]:
sudo fdisk /dev/sdb # 按 n 新建分区,大小写 +2G
更直观可以用 cfdisk, curses 图形界面,同样是 util-linux 出品 [2]。
第四步:格式化
分区只是地址范围,要用还得格式化:数据分区 mkfs.ext4 /dev/sdb1 [3],交换分区用 mkswap /dev/sdb2 [4]。对已挂载正在使用的分区跑 mkfs 等于清空它,先 umount 再动手。
第五步:挂载,并写进 fstab
临时挂载:sudo mount /dev/sdb1 /mnt/data。开机自动挂载要写 /etc/fstab,手册推荐用 UUID= 或 LABEL= 而不是设备名,因为设备名取决于硬件检测顺序,插拔另一块盘就可能变化 [5]:
sudo blkid /dev/sdb1
echo 'UUID=你的UUID /mnt/data ext4 defaults 0 2' | sudo tee -a /etc/fstab
sudo systemctl daemon-reload
systemd 系统改完 fstab 建议 daemon-reload,让挂载配置重新生效 [5]。
swap 和 /home 要不要独立分区看场景:桌面系统分区越少越省心,服务器把用户数据独立出来,系统重装时数据才不容易被牵连。
五步都不难,真正的麻烦在 fstab 里写死 /dev/sdb1——换一次硬件,它可能就指向别的盘。
参考资料
- [1] fdisk(8) — Linux manual page(fdisk 手册)
- [2] cfdisk(8) — Linux manual page(cfdisk 手册)
- [3] mkfs(8) — Linux manual page(mkfs 手册)
- [4] mkswap(8) — Linux manual page(mkswap 手册)
- [5] fstab(5) — Linux manual page(fstab 手册)
文中主要命令已在 WSL Ubuntu(24.04)实测,个别条目(未装工具/安装类命令)仅核对官方文档,未实际执行。