我有只读 USB 驱动器,但无法修复它。我读了一些关于它的文章并尝试修复,但失败了。
我卸载了驱动器并用来dosfsck
检查和修复 MS-DOS 文件系统,因为它是FAT
文件系统并运行:
dosfsck -a /dev/sdb1
它给出了输出:
fsck.fat 4.1 (2017-01-24) 打开:只读文件系统
那么我该如何处理它呢?我可以修复它吗?还是应该把它扔进垃圾桶?
答案1
如果 USB 曾经可写入,但现在不再可写入,则在我看来这表明了 3 件事:
设备上的硬件开关已被切换。
如果是这种情况,简单的解决方法就是找到硬件开关(它们可以真的细微),然后切换该选项。
发生了“不干净”的卸载,例如在操作系统完成向 USB 写入数据之前将其从插槽中拔出
为了延长设备的使用寿命并提高性能,大多数存储介质(包括 USB 驱动器)的写入操作都带有缓冲。实际上,这意味着除非您告诉操作系统弹出/卸载 USB 驱动器,否则无法保证所有数据都已写入。此外,大多数文件系统都有标志来指示它们何时已安装和卸载:在将驱动器从插槽中拔出之前,务必告诉操作系统您要移除驱动器(“弹出”、“卸载”、“关闭”)。
因此,如果简单地检查和修复文件系统不起作用,那么您可以尝试将数据临时复制到其他地方,重新格式化 USB 驱动器,然后再复制数据这种笨拙的方法。通过重新格式化,您将完全覆盖那里的内容,因此操作系统/文件系统将不会记得 USB 驱动器/文件系统在格式化之前是只读的。
修复文件系统的一个细节。首先确保它没有被挂载。你的命令集暗示它已被挂载。所以:
sudo umount /dev/sdb1
sudo dosfsck -a /dev/sdb1
USB 磁盘本身已经不行了,而嵌入式固件正在保护您免于丢失任何数据。
如果 USB 使用基于闪存的存储,则可能您已向设备写入了足够多的次数,以至于现在无法再写入。向基于闪存的存储写入是一个破坏性过程,并且每个扇区只能承受一定次数的重写。许多驱动器会“隐藏”这一事实,通过内部拥有更大的存储空间(例如 16G 的总写入空间),但仅向操作系统显示较小的容量(例如 2G)。随着每个扇区开始磨损,固件会自动将数据移动到新的未使用扇区。但是,在写入次数过多之后,将不再有可用的存储空间,并且智能固件实现将锁定驱动器以防止数据丢失。此时,您唯一的选择就是将数据复制到新的闪存驱动器。
答案2
简单的解决方案:将闪存驱动器插入运行 Windows 的计算机。Windows 将检测到错误并指示您扫描和修复它。然后驱动器将以通常的方式在 Ubuntu 上运行。
答案3
也许直到最近,拇指驱动器才有了某种方式可以将自身变为只读状态几天,就像您在其中刻录某些东西一样 - 也许只是为了进一步延长其作为闪存的使用寿命。
该单元根本没有被破坏,您可能希望尽早将只读标志设置为零......
hdparm --security-help
请从您的设备查看。
您可能想要运行其中一些(如果不是全部的话);尝试找出正确的顺序。
这里的想法是:
hdparm --security-mode m --user-master m --security-freeze device;
hdparm --security-mode m --user-master m --security-set-pass null device;
hdparm --security-mode m --user-master m --security-unlock null device;
hdparm --security-mode m --user-master m --security-disable null device;
hdparm --security-mode m --user-master m --security-erase null device;
hdparm --security-mode m --user-master m --security-erase-enhanced null device;
完全禁用设备的只读功能。一个月前,我在巴西的 USB 2.0 64G 多激光 (tm) 笔式驱动器上成功使用了此功能。
答案4
Ubuntu 实用程序“DISKS”非常强大。它有时可以修复此故障。我用它成功过几次。插入 USB 驱动器。打开 DISKS。左侧会列出它可以看到的驱动器。在主窗口中,它会显示每个驱动器上的分区。从左侧的列表中选择 USB 驱动器。它会在主窗口中打开并将其显示为一个分区(除非您更改了这一点)。窗口下方有 2 个图标,一个可用于安装和卸载驱动器,另一个(齿轮)可用于各种维护操作。在此之下有 4 项有关驱动器的信息 - 大小、设备、UUID、内容。这些将帮助您确保选择了正确的驱动器。单击齿轮,在子菜单上查看大约 7 个项目以找到“修复文件系统”。您会收到警告,但请继续。如果 DISKS 可以修复驱动器,它可能会在驱动器上创建许多 FSCK 文件。完成后,它将列出它创建的 FSCK 文件。您必须打开控制台并使用 sudo rm -rf FSCK* 删除这些文件。完成此操作以整理驱动器后,您就大功告成了。DISK 将删除使文件系统为只读的标志。弹出 USB 驱动器,然后将其从插槽中取出。如果幸运的话,它现在应该可以正常运行。