我有一些数据需要存储在磁盘(硬盘驱动器)上。写入USB磁盘时,我看到损坏,通常是一个或两个扇区(512字节)。编码数据来处理损坏
的数据被存储在文件中,这些文件往往是在大小
一个或两个MB,我想对数据进行编码,这样我可以从一些错误中恢复 - 不是通常的位翻转错误,在我的情况下,我往往缺少更大的块
我希望探索一些选项,任何人有想法?
我有一些数据需要存储在磁盘(硬盘驱动器)上。写入USB磁盘时,我看到损坏,通常是一个或两个扇区(512字节)。编码数据来处理损坏
的数据被存储在文件中,这些文件往往是在大小
一个或两个MB,我想对数据进行编码,这样我可以从一些错误中恢复 - 不是通常的位翻转错误,在我的情况下,我往往缺少更大的块
我希望探索一些选项,任何人有想法?
您可能想要研究用于CD,DVD和蓝光光盘的Reed–Solomon error correction。与ECC内存中使用的位翻转校正相比,它可以纠正更长的错误序列。老实说,我只是买更可靠的磁盘或写每个文件两次。
听起来就像是正确的事情做的
我想知道是否有某些东西没有在正确的时间写入磁盘 - 例如当你关掉电源时。
如果你想用编码理论做到这一点,我首先看http://en.wikipedia.org/wiki/RAID和http://en.wikipedia.org/wiki/Erasure_code。
如果你从一个普通的代码开始,你几乎肯定希望交错代码 - 如果你想把这些扇区看作行,你想要在列中写入你的数据,那么失去一个整个扇区= row,会失去你在每个N中只有1个字节(或1个位),其中有N路交错 - 每列为N行深。
如果它是狡猾的硬件 - 也许是潜在的闪光灯已经有东西覆盖次数太多(没有你的USB驱动器做http://en.wikipedia.org/wiki/Wear_levelling?)它可能是有意义的把校验在每个扇区,所以你知道哪些是坏。如果你没有写任何东西,你需要做一些棘手的事情,例如,校验一些文件元数据以及扇区本身,以确保应该被覆盖但不是看起来有效的扇区,因为之前的内容也具有有效的校验和。