移动硬盘前先确认设备名,选对文件系统;mkfs 三步完成,删除分区回滚。lsblk 可列出当前块设备[1]。
前提:识别设备
插入移动硬盘后,先用 lsblk 查看设备名[1]:
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT
blkid /dev/sdX1
blkid 能读出已有文件系统类型和 UUID[2]。如果硬盘已挂载,umount /dev/sdX1 后再操作[8]。
分区表(MBR/GPT)
parted 支持 MBR 与 GPT。U 盘/移动硬盘常用 MBR,大于 2 TiB 需 GPT[3]:
parted /dev/sdX -s mklabel msdos
parted /dev/sdX -s mkpart primary 1MiB 100%
-s 为无交互模式,1MiB 起始留出对齐空间。操作后再次 lsblk 确认分区节点,如 /dev/sdX1。
格式化文件系统
文件系统由 mkfs 家族生成[4]。三类常见场景:
- ext4(Linux 独占,日志文件系统):
mkfs.ext4 -L 卷标 /dev/sdX1[5] - FAT32(跨平台读写):
mkfs.vfat -F 32 -n 卷标 /dev/sdX1[6] - NTFS(Windows 独占读写):
mkfs.ntfs -F -L 卷标 /dev/sdX1[7]
-F 用于强制操作设备而非镜像,-L 设置卷标,便于 blkid 识别。
回滚与清空
格式化后想还原,只需删除分区再重新建立:
parted /dev/sdX -s rm 1
parted /dev/sdX -s mklabel msdos
dd if=/dev/zero of=/dev/sdX bs=1M count=10 status=none
parted 清空分区表即可恢复空白盘[3]。
排错速查
| 现象 | 原因 | 处理 |
|---|---|---|
device is busy |
分区仍挂载 | umount -l /dev/sdX1 |
wrong fs type |
文件系统与内核模块不匹配 | 安装 ntfs-3g 或 dosfstools |
no space left |
分区表损坏 | parted 重建或 dd 清零 |
Permission denied |
未用 root | 加 sudo 或以 root 运行 |
实测与局限性
- 实测环境:WSL2 Ubuntu 24.04,e2fsprogs 1.47.0,dosfstools 4.2,ntfs-3g 2022.10.3。
- 已验证:
lsblk识别、parted分区、mkfs.ext4、mkfs.vfat、mkfs.ntfs、blkid回读、umount卸载。 - 未覆盖:真实热插拔、USB 3.0/3.1 速度差异、GPT 在 macOS 的兼容性、RAID/USB 桥接芯片的特殊处理。
参考资料
- [1] lsblk(8) – Linux manual page(lsblk)
- [2] blkid(8) – Linux manual page(blkid)
- [3] parted(8) – Linux manual page(parted)
- [4] mkfs(8) – Linux manual page(mkfs)
- [5] mke2fs(8) – Ubuntu manual page(mkfs-ext4)
- [6] mkfs.fat(8) – Linux manual page(mkfs-vfat)
- [7] mkfs.ntfs(8) – Ubuntu manual page(mkfs-ntfs)
- [8] umount(8) – Linux manual page(umount)
文中主要命令已在 WSL Ubuntu(24.04)实测并核对其在 Debian 系与通用发行版的文档口径。