linux磁盘扩容必须完成识别设备→分区→格式化→挂载四步,缺一不可;确认设备名应以lsblk为准,查看无mountpoint且type为disk的设备,并核对容量与型号;大于2tb硬盘须用parted或gdisk创建gpt分区表,fdisk仅适用于≤2tb的mbr场景。

直接说结论:Linux磁盘分区不是“画个框就完事”,而是分三步走——识别设备 → 划分区表 → 格式化并挂载,缺一不可;用错工具(比如对GPT盘硬上fdisk)或漏掉w保存,分区就等于没做。
怎么确认新硬盘设备名?别瞎猜/dev/sdb
很多操作失败,根源是搞错了目标设备。系统里可能有多个 SCSI/SATA/NVMe 盘,sda不一定是你刚插的那块。
- 运行
lsblk,看哪个设备没有MOUNTPOINT且TYPE是disk(不是part) - 对比大小:
lsblk -o NAME,SIZE,MODEL能显示物理型号,和你添加/插入的硬盘容量对得上才靠谱 - 警惕虚拟机场景:关机后加的硬盘,必须重启或执行
echo "- - -" > /sys/class/scsi_host/host*/scan才能被识别 - 别依赖
fdisk -l单独判断——它可能列出已损坏或只读设备,lsblk更轻量、更真实
fdisk 创建主分区时,起始扇区别手敲
fdisk 是 MBR 分区的主力工具,但它交互里一堆数字容易填错,尤其起始扇区。
- 默认回车即可:现代内核要求对齐到 2048 扇区(1MB),
fdisk默认值通常就是安全的,手动输2048反而可能出问题(比如在某些旧 BIOS 或嵌入式环境) - 结束位置写
+5G比输绝对扇区号可靠得多;单位支持K/M/G/T,例如+20G - 主分区最多 4 个;想建第 5 个?必须先建一个扩展分区(
e),再在里面建逻辑分区(n→l) - 输完所有操作后,**必须输
w才写入磁盘**;输q或直接 Ctrl+C,前面全白干
格式化前先确认分区是否已“活”过来
执行 fdisk /dev/sdb 并 w 后,内核不一定立刻识别新分区——尤其在旧内核或某些 RAID 场景下。
- 运行
lsblk,如果看不到sdb1,说明内核没重读分区表 - 尝试
partprobe /dev/sdb(无需重启),多数情况能立即生效 - 再运行
lsblk -f:如果FSTYPE列为空,说明还没格式化;如果显示ext4或其他类型,说明这分区可能已被别人用过、甚至挂载过 - 格式化命令别漏
-t:虽然mkfs.ext4 /dev/sdb1可以,但显式写mkfs -t ext4 /dev/sdb1更清晰,也方便替换成xfs或btrfs
临时挂载能测通,但永久挂载必须用 UUID
用 mount /dev/sdb1 /mnt/data 测试没问题,不代表开机自动挂载就稳——设备名会变。
-
/dev/sdb1不稳定:加一块新盘,原来的sdb可能变成sdc,导致/etc/fstab挂载失败甚至系统卡住 - 必须用 UUID:
blkid /dev/sdb1查出那一长串UUID="...",复制进/etc/fstab -
/etc/fstab行末两个数字别乱填:0 0表示不备份、不检查;根分区要用1,swap 用0,数据盘一律0 - 改完
/etc/fstab后,**务必执行mount -a**:没报错才代表语法和路径都对;报错就立刻修正,别等重启
真正容易被忽略的是:分区表类型(MBR vs GPT)决定了工具选择。如果硬盘大于 2TB,或你想建超过 4 个主分区,fdisk 就不适用了——得换 gdisk 或 parted。看不准?先 fdisk -l /dev/sdb,注意输出里有没有 Disk label type: gpt 这行。











