新硬盘插上后 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修复:基于文档核查,尚未实际执行。
参考资料
- [1] lsblk(8) – Linux manual page (man7.org)(lsblk(8) 手册页)
- [2] blkid(8) – Linux manual page (man7.org)(blkid(8) 手册页)
- [3] mount(8) – Linux manual page (man7.org)(mount(8) 手册页)
- [4] fstab(5) – Linux manual page (man7.org)(fstab(5) 手册页)
- [5] systemd.mount(5) – Linux manual page (man7.org)(systemd.mount(5) 手册页)
- [6] findmnt(8) – Linux manual page (man7.org)(findmnt(8) 手册页)
- [7] mkfs.ext4(8) – Ubuntu 24.04 noble manual page(Ubuntu mkfs.ext4(8))
文中主要命令已在 WSL Ubuntu(24.04)实测并核对其在 Debian 系与通用发行版的文档口径。