首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对数据进行编码以处理损坏

对数据进行编码以处理损坏
EN

Stack Overflow用户
提问于 2011-04-16 18:48:00
回答 3查看 158关注 0票数 0

我有一些数据需要存储在磁盘(硬盘)上。我看到损坏,通常是一个或两个扇区(512字节),当写入U盘时。

数据存储在文件中,文件大小一般为1 MB或2 MB

我希望对数据进行编码,这样我就可以从一些错误中恢复-而不是常见的位翻转错误,在我的情况下,我往往会丢失更大的块

我希望探索一些选择,有谁有想法吗?

EN

回答 3

Stack Overflow用户

发布于 2011-04-16 18:58:18

您可能需要研究CD、DVD和蓝光光盘所使用的Reed–Solomon error correction。与ECC存储器中使用的位翻转校正相比,它可以校正更长的错误序列。不过,老实说,我只会买更可靠的磁盘,或者每个文件写两次。

票数 3
EN

Stack Overflow用户

发布于 2011-04-17 01:24:14

我想知道是否有什么东西没有在正确的时间写入磁盘-例如,当你关闭电源的时候。

如果你想用编码理论来实现这一点,我会从http://en.wikipedia.org/wiki/RAIDhttp://en.wikipedia.org/wiki/Erasure_code开始。

如果你从一个普通的代码开始,你几乎肯定会想要交错代码-如果你把扇区看作行,你想把数据写在列中,这样丢失一个完整的扇区= row,每N个字节(或1位)只丢失1个字节(或1位),其中你有N路交织-每列是N行深。

如果是不可靠的硬件--也许底层闪存的内容被重写了太多次(你的U盘做http://en.wikipedia.org/wiki/Wear_levelling了吗?)在每个扇区中放置一个校验和可能是有意义的,这样您就可以知道哪些扇区被破坏了。如果你根本没有写东西,你需要做一些更棘手的事情,比如校验一些文件元数据以及扇区本身,以确保本应被覆盖但看起来不是有效的扇区,因为以前的内容也有一个有效的校验和。

票数 1
EN

Stack Overflow用户

发布于 2011-04-17 00:08:54

听起来正确的做法是

  • 验证写入数据的代码是否正确检查来自写入例程的错误代码和返回值。如果它是您自己的代码,则可能是您没有检查数据是否真正完整地存入磁盘
  • 如果代码没有问题,您的硬件已损坏,需要修复
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5685979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档