目录
步骤1:先找到外接移动硬盘,在 Mac “终端”执行命令
步骤2:加载移动硬盘,可以在终端执行以下两个命令之一
步骤3:终止后台自动执行的“磁盘修复进程”
步骤4:手动执行磁盘修复命令
步骤5:Windows系统的磁盘修复
参考6:修复方案及相关命令详解
MAC系统下连接的移动硬盘非正常推出后(断电、直接拔掉等),重新连接后无法在“Finder桌面”或“磁盘工具”里正常看到移动硬盘的图标。如果遇到移动硬盘无法正常推出,可以参考笔者另外一篇文章:MAC移动硬盘无法正常推出。
不记得有几次出现这样的情形了,每次都是在网上搜索一番,在“终端”敲几行命令执行下,运气好的话很快恢复,运气不好就只能放一边,也碰到过些时间再接上居然又能用了😅。但是,只有搞清楚背后的原因才能避免抓瞎和浪费时间,下面是详细的解决步骤,也包括一些执行命令的解释和注意事项:
步骤1:先找到外接移动硬盘,在 Mac “终端”执行命令
diskutil list
执行后,显示的信息:
从终端提示内容可以看到,外接移动硬盘(external, physical)名称是:disk2, 容量1TB,硬盘的文件格式没有明确标注,从microsoft Basic Data 几个字样推断,再加上之前在 Windows 系统也能正常使用,应该是能兼容 Windows 和 Mac 系统的 exFAT 格式(不同的文件格式,请参考文末链接),当然从后面运行命令后,系统提示的信息也能看到。
另外,disk2 下面包括两个盘符标记:disk2s1 和 disk2s2, 多个盘符表示硬盘包括多个分区,可以看到disk2s1的 TYPE NAME 是 EFI :
EFI系统分区中存放了可供引导启动的文件,作用是引导操作系统正常启动。EFI系统分区是一个使用FAT32格式化的小分区,该分区在Windows操作系统下一般是不可见的,其中存储已安装系统的EFI引导加载程序以及启动时固件使用的应用程序。
因为 EFI 分区在这里对我们没有什么意义,我们实际存储数据的的硬盘分区是 disk2s2,后面命令的操作对象和执行结果也是针对的硬盘分区 disk2s2 来说的。
步骤2:加载移动硬盘,可以在终端执行以下两个命令之一
# mount命令可以只挂载硬盘的某个分区
diskutil mount /dev/disk2s2
# mountdisk命令可以实现挂载整个硬盘(包括所有分区)
diskutil mountdisk /dev/disk2
通常异常退出的移动硬盘,执行这两个命令都会提示错误信息:
# 执行 sudo diskutil mount /dev/disk2s2 命令报错
Volume on disk2 timed out waiting to mount
# 执行 sudo diskutil mountDisk /dev/disk2 命令报错:
One or more volume(s) failed to mount
为什么会提示等待超时呢?其实是因为你把硬盘的数据线重新接上电脑时,系统检测到硬盘异常,Mac 系统会在“后台自动运行” 磁盘修复进程: fsck,从而导致 diskutil mount 命令运行超时。
如果你刚接上硬盘不能识别,不要着急反复拔掉和重新连接,可以稍微耐心等待系统的自动修复完成。如果等待时间过长还没有恢复,可以继续执行下面的步骤。
步骤3:终止后台自动执行的“磁盘修复进程”
先执行下面命令,找到后台运行的 fsck 进程的PID:
ps aux | grep fsck
显示后台正在运行的 fsck 进程,从下面截图能看到:fsck_exfat -y -x /dev/rdisk2s2 ,从这里也能判断硬盘文件格式应该是:exfat。
执行命令 kill fsck,终止自动修复进程:
# 21364 是 PID 进程号
sudo pkill -f fsck 或 sudo kill -9 21364
注意:执行完毕后,再次执行【步骤2】的磁盘加载命令,一般都能装载成功,桌面上会出现移动硬盘盘符标志。但是运气比较差的话,杀死 fsck 进程后,硬盘会自动以"只读状态"完成加载,并弹出提示对话框,如下图所示。接下来可以继续尝试后面的步骤来进行硬盘修复。
步骤4:手动执行磁盘修复命令
sudo fsck_exfat -y -x /dev/disk2s2
一般常用的磁盘修复命令有: fsck_hfs、fsck_exfat、fsck_apfs 等,fsck 代表磁盘修复命令,下划线后面 hfs,exfat,apfs 代表硬盘的文件格式。(fsck 命令详解,请参考文末链接)。
注意,fask_[文件格式] 命令要正确,另外,“手动执行修复命令”与“系统提供【磁盘工具】- 【急救】”是一样的原理和效果,在终端手动执行修复命令后,会显示修复过程中的详细信息,例如那些文件是问题的,截图一小段如下:
【步骤4】如果能顺利执行完毕就可以加载硬盘成功,但是【步骤4】的时长不好判断,从几分钟到半个小时的都有,甚至还有人等待十几个小时最后放弃的。笔者碰到的情况是:“手动修复方式”和“磁盘工具-急救”两种方案都试过了,都是等待几个小时也没有等到修复结束的时刻。虽然“磁盘工具 - 急救”对话框有个“详情”标签展开可以检测到错误文件的信息,对话框页面也有一个进度条,但是一直都只显示空空进度条,没有任何进度更新,只好放弃!
步骤5:Windows系统的磁盘修复
如果【步骤四】不幸失败了,但是你必须要拯救这块硬盘的话,就去找一台 Windows 系统的电脑,既然 Mac 系统修复失败,那么为什么不试试 Windows 系统的磁盘修复功能呢?前面提到过,这块硬盘文件格式是 exFAT,兼容两个系统。
在接上安装有 Windows 10 系统的笔记本电脑后,系统提示:“磁盘错误,需要扫描和修复”,于是点击“确认”,开始修复和修复结束的对话框如图所示:
这次等待时间接近3个小时,虽然时间很长,但是进度条在缓慢移动,相比 Mac 系统,至少让你还有等待下去的期待。这个时间可能跟硬盘大小、速度、文件数量有关系(笔者的硬盘是机械硬盘,2T,剩余空间60G)。以上是 Win10 的提供的磁盘修复对话框,如果接上硬盘后,系统没有任何提示,你可以在 DOS 窗口手动输入命令来实现相同的修复过程。(Windows Dos磁盘修复方法,参考文末链接)。
由于等待过程太长,且已打算购买新的固态硬盘,本来想放弃了,但是希望这篇文章有个好结果,能帮到为了挽救硬盘快要崩溃的同学,一直等到凌晨两点终于修复完毕,然后正常退出Windows, 再次接上Mac电脑,图标出现,检查一下正常读写功能,果然一切都OK了!😄
如果最终没有成功的话,可能真的是磁盘数据损坏无法修复了,需要及时备份以防数据丢失。上面提到过,在执行【步骤3】后,磁盘以“只读状态”加载成功。所以在多次修复失败后,最好在这个时候将硬盘数据及时备份。另外,笔者使用的是比较老旧的机械硬盘,可以考虑换个 PSSD 的固态硬盘了,如果老是出现故障,还是用金钱换时间更划算些吧^_^
参考6:修复方案及相关命令详解
# mac下移动硬盘异常退出修复方法
https://zhuanlan.zhihu.com/p/83542978
https://blog.csdn.net/Bobdragery/article/details/95086132
https://apple.stackexchange.com/questions/235309/external-drive-does-not-mount-after-plug-off-without-eject
# Windows Dos磁盘修复方法
https://blog.csdn.net/qq_26834611/article/details/107968650
# MacOS 磁盘管理工具 diskutil 介绍
https://www.jianshu.com/p/6a1f365617ad
# Linux fsck命令介绍:检测和修复文件系统
http://c.biancheng.net/view/887.html
# unmount, unmountdisk, eject命令的区别
http://newsn.com.cn/say/mac-umount.html
# mount与mountdisk命令的区别
https://newsn.net/say/mac-mount-2.html
# Fat32、NTFS、exFAT、HFS+、APFS文件系统的区别
https://blog.csdn.net/qq_39111085/article/details/103800464