我有一些数据需要存储在磁盘(硬盘)上。我看到损坏,通常是一个或两个扇区(512字节),当写入U盘时。
数据存储在文件中,文件大小一般为1 MB或2 MB
我希望对数据进行编码,这样我就可以从一些错误中恢复-而不是常见的位翻转错误,在我的情况下,我往往会丢失更大的块
我希望探索一些选择,有谁有想法吗?
发布于 2011-04-16 18:58:18
您可能需要研究CD、DVD和蓝光光盘所使用的Reed–Solomon error correction。与ECC存储器中使用的位翻转校正相比,它可以校正更长的错误序列。不过,老实说,我只会买更可靠的磁盘,或者每个文件写两次。
发布于 2011-04-17 01:24:14
我想知道是否有什么东西没有在正确的时间写入磁盘-例如,当你关闭电源的时候。
如果你想用编码理论来实现这一点,我会从http://en.wikipedia.org/wiki/RAID和http://en.wikipedia.org/wiki/Erasure_code开始。
如果你从一个普通的代码开始,你几乎肯定会想要交错代码-如果你把扇区看作行,你想把数据写在列中,这样丢失一个完整的扇区= row,每N个字节(或1位)只丢失1个字节(或1位),其中你有N路交织-每列是N行深。
如果是不可靠的硬件--也许底层闪存的内容被重写了太多次(你的U盘做http://en.wikipedia.org/wiki/Wear_levelling了吗?)在每个扇区中放置一个校验和可能是有意义的,这样您就可以知道哪些扇区被破坏了。如果你根本没有写东西,你需要做一些更棘手的事情,比如校验一些文件元数据以及扇区本身,以确保本应被覆盖但看起来不是有效的扇区,因为以前的内容也有一个有效的校验和。
发布于 2011-04-17 00:08:54
听起来正确的做法是
https://stackoverflow.com/questions/5685979
复制相似问题