最近我身上的一张 SD 卡被毁了(软件方面)。基本上,据我所知,所有元数据都被擦除了(ext4 卡)。这件事发生在我工作的时候,突然要写一张支票。我拉出我正在处理的卡片,把支票放进我的“会计卡”中,写下支票,扫描它们。拉出了放在工作卡里的“会计卡”。当我开始工作时,我看到我的工作卡的标签与我的“会计卡”相同。我认为我忘记卸载(或者以为我做到了,但失败了),“会计卡”取代了它,随机调用同步然后覆盖了我的工作卡的元数据。
这是一个小烦恼,但它让我开始考虑恢复数据。如果有关哪些扇区构成文件的所有数据都在元数据中。并且元数据被擦除,然后文件就消失了。但是,如果文件包含对其使用的块的引用,则该文件不会丢失。但这在硬盘上可能不实用。
大多数情况下,SD 卡上的用例与硬盘驱动器上的用例有很大不同。在硬盘驱动器上您经常修改文件,而在 SD 卡上您经常读取文件、写入整个文件和删除整个文件。有时您会修改文件,但与普通硬盘相比,这种情况很少见。至少这是我的用法。
HD 卡和 SD 卡的损坏模式也不同。当您遇到某种系统崩溃或突然断电时,硬盘就会损坏。卸载失败时,SD 卡已损坏。如果文件存储了它自己的所有扇区信息,那么元数据是否被刷新就不那么重要了。
那么是否有一种 SD 卡文件系统可以保证恢复,并且具有合理的整体性能呢?
答案1
回答您的具体问题:“那么是否有一个 SD 卡文件系统可以保证恢复?”
NO!
看来您在这里混淆了这个问题。您描述的问题与系统处理可移动介质 I/O 的方式有关,而不是与文件系统本身有关。可以从任何文件系统恢复损坏的信息,但这假设该信息之前已存在以进行恢复。当磁盘的 I/O 操作中断时,信息永远不会写入文件系统,因此无法恢复。
为了避免将来出现此类问题,请为介质使用正确的安装选项。特别是,在安装时使用“sync”选项,这将强制所有写入立即执行,而不是被缓存。默认情况下,会为所有分区启用缓存,这样可以获得更好的性能,但由于 I/O 操作的异步性质,可能会导致这些类型的问题。
答案2
ZFS- 可能是最好的选择。
假设您将一直使用 *nix 系统。例如,这不适用于佳能相机,但适用于任何 Solaris、BSD 和大多数 Linux 发行版。
引用:
ZFS 与其他文件系统的一个主要区别在于,ZFS 从一开始就注重数据完整性。也就是说,保护用户磁盘上的数据免受位衰减、电流峰值、磁盘固件错误、幽灵写入等造成的静默数据损坏。