← 返回目录

在 Linux 下使用 USB SSD、移动硬盘或 NVMe 外置盒时,不建议直接拔掉设备。更稳妥的做法是:先卸载文件系统,再让 USB 设备安全断电

这样可以避免数据还没写入完成就被拔出,导致文件损坏、分区异常,甚至下次挂载时报错。


🔍 第一步:查看 USB SSD 的设备名

先用 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 设备安全断电

卸载分区之后,建议再对整块 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,会比直接拔出安全很多。