在 Linux 下使用 USB SSD、移动硬盘或 NVMe 外置盒时,不建议直接拔掉设备。更稳妥的做法是:先卸载文件系统,再让 USB 设备安全断电。
这样可以避免数据还没写入完成就被拔出,导致文件损坏、分区异常,甚至下次挂载时报错。
先用 lsblk 查看当前磁盘、分区和挂载点:
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINTS,MODEL
可能会看到类似输出:
sdb 1.8T
└─sdb1 1.8T ext4 /media/user/SSD
这里需要区分两个概念:
| 名称 | 含义 |
|---|---|
/dev/sdb |
整块 USB SSD |
/dev/sdb1 |
这块 SSD 上的第一个分区 |
/media/user/SSD |
文件系统挂载点 |
日常卸载时,通常卸载的是分区,例如 /dev/sdb1,而不是整块盘 /dev/sdb。
如果刚刚复制过大文件,可以先执行:
sync
sync 会把系统缓存中的数据写回磁盘。正常 umount 时系统也会处理未写入的数据,但手动执行一次 sync 会更稳妥。
可以通过设备名卸载:
sudo umount /dev/sdb1
也可以通过挂载点卸载:
sudo umount /media/user/SSD
二选一即可。
如果命令没有输出,一般表示卸载成功。
卸载分区之后,建议再对整块 USB 设备执行 power-off:
udisksctl power-off -b /dev/sdb
注意这里用的是整块磁盘 /dev/sdb,不是分区 /dev/sdb1。
完整流程可以写成:
sync
sudo umount /dev/sdb1
udisksctl power-off -b /dev/sdb
执行 power-off 后,如果设备灯熄灭,或者系统里不再显示该设备,就可以安全拔出了。
udisksctl在桌面 Linux 环境中,也可以不用 sudo umount,直接使用 udisksctl:
udisksctl unmount -b /dev/sdb1
udisksctl power-off -b /dev/sdb
其中:
| 命令 | 作用 |
|---|---|
udisksctl unmount -b /dev/sdb1 |
卸载分区 |
udisksctl power-off -b /dev/sdb |
关闭整块 USB 存储设备 |
这个方式比较适合 GNOME、KDE 等桌面环境。
target is busy有时候卸载时会遇到:
target is busy
这说明还有程序正在使用这个磁盘。
最常见的情况是当前终端正停留在该磁盘目录中。可以先切回 home 目录:
cd ~
然后再次尝试卸载:
sudo umount /media/user/SSD
如果仍然失败,可以查看是谁在占用:
sudo lsof +f -- /media/user/SSD
或者:
sudo fuser -vm /media/user/SSD
找到占用进程后,关闭相关程序,再重新执行卸载命令。
一般不推荐一上来就强制卸载。除非确认没有重要写入操作,并且普通卸载无法完成。
如果确实遇到卡住的情况,可以考虑 lazy unmount:
sudo umount -l /media/user/SSD
umount -l 会先从文件系统树中移除挂载点,等设备不再被占用时再真正完成卸载。
不过这不是日常首选方案。正常情况下,还是应该先找出占用进程并关闭它。
Linux 下安全卸载 USB SSD 的常用流程是:
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINTS,MODEL
sync
sudo umount /dev/sdX1
udisksctl power-off -b /dev/sdX
其中:
| 示例 | 含义 |
|---|---|
/dev/sdX1 |
分区,例如 /dev/sdb1 |
/dev/sdX |
整块磁盘,例如 /dev/sdb |
记住一个原则:
卸载文件系统用分区,关闭 USB 设备用整块磁盘。
也就是说:
sudo umount /dev/sdb1
udisksctl power-off -b /dev/sdb
完成后再拔掉 USB SSD,会比直接拔出安全很多。
完