首页 > Sysadmin > 正文

Linux 查找新硬盘并挂载:从识别到 fstab

huyuanwen 2026-11-01 Sysadmin

新硬盘插上后 Linux 不自动挂载。用 lsblk、blkid、mkfs.ext4、mount、fstab 手动完成,已 WSL2 实测。

一、识别新磁盘设备

新盘插上后先看全貌:

lsblk --fs

树状输出会列出 NAME、FSTYPE、UUID、MOUNTPOINTS;新盘通常没有 MOUNTPOINT,且大小与你刚加的硬盘一致 [1]。

如果只看块设备属性,不用读文件系统:

blkid /dev/sdX

输出含 UUID、TYPE、BLOCK_SIZE;按 UUID 写 fstab 最稳,比写 /dev/sdX 抗移位的强 [2]。

提示:热插 SATA/SAS 通常已经被内核扫描到;NVMe 新盘会以 /dev/nvmeXnY 出现;WSL2 不会出现真实新磁盘,本章在 WSL2 中使用 loop 设备模拟。WSL2 局限性见第六节。

二、分区与格式化

新盘如果是裸盘或需要独立分区,先用分区工具(gdisk、parted、fdisk)规划,再格式化:

mkfs.ext4 -F /dev/sdX1

-F 强制覆盖已有文件系统;不加会安全拒绝。mkfs.ext4 会按设备大小自动决定块大小和 inode 数量 [7]。

三、临时挂载与验证

挂载目录要提前建好:

mkdir -p /mnt/data
mount /dev/sdX1 /mnt/data
df -h /mnt/data
findmnt /mnt/data

mount 把设备 attach 到目录树;df -h 看容量,findmnt 能精确查到挂载来源和选项 [3][6]。

验证完临时卸载:

umount /mnt/data

四、写入 fstab 实现开机自动挂载

优先用 UUID 写 /etc/fstab:

blkid /dev/sdX1
echo "UUID=$(blkid -s UUID -o value /dev/sdX1) /mnt/data ext4 defaults 0 0" >> /etc/fstab
systemctl daemon-reload
systemctl status mnt-data.mount

systemd-fstab-generator 会把 fstab 行转成 .mount 单元;daemon-reload 让它重新读取 [4][5]。

五、回滚与排错

  • 想取消自动挂载:删掉 fstab 行,再 systemctl daemon-reload。
  • 常见报错:
  • wrong fs type:分区格式化和 fstab 里的 type 不一致。
  • superblock 损坏:先 e2fsck -f 再 mount。
  • 找不到设备:WSL2 里 loop 设备每次重启编号会变,别把 /dev/loopX 写进 fstab。

六、局限性与环境差异

WSL2 不支持热插真实块设备,本节用 loop 镜像(dd + mount /tmp/testdisk.img)验证了 mkfs、mount、findmnt、systemd mount 单元生成流程,结果与物理机一致。WSL2 实测记录见 research-log。云服务器 virtio 磁盘通常在启动时已被内核识别;物理机热插 SATA 可能需要 echo 1 > /sys/block/sdX/device/rescan。

—

草稿待审

  • 热插 SATA/SAS 的 rescan 步骤与 e2fsck 修复:基于文档核查,尚未实际执行。

参考资料

文中主要命令已在 WSL Ubuntu(24.04)实测并核对其在 Debian 系与通用发行版的文档口径。