SD 卡读取时出现随机位错误,无故障

SD 卡读取时出现随机位错误,无故障

我部署了大约 20 个 Raspberry Pi,其中装有金士顿 16 GB Micro SD HC Class 10 U1 卡,全部从相同的定制 Raspbian 映像克隆而来。卡上的小文字写着:

SDC10B2/16GB 31608-010-A00LF TAIWAN

该装置已运行了大约 6 个月,其中大约 10 张卡已出现故障并出现了一些奇怪的特性。

首张卡牌在部署。诚然,当时有一些广泛的日志记录。此外,一些卡在没有打开应用程序日志记录的情况下发生故障——只有常规的 Raspbian 日志记录。即使日志记录很高,考虑到写入周期磨损,这些卡也应该可以使用几年。

当这个问题发生时,我碰巧登录了某个 raspi,我注意到:

  • 系统二进制文件,例如vimsudo将无法加载共享库(.so文件)
  • 在编辑器中查看时,我自己的源代码会出现随机字节错误
  • 重新下载我的源代码并写入文件可以暂时修复这些文件的问题。

我现在检查了所有出现故障的卡,发现它们都可以在我的 Mac 上访问和读取。我编写了一个脚本,对分区中的所有文件进行/boot10 次校验,测量时间并计算不同的校验和。

在正常工作的卡上,每次迭代平均需要 0.3 秒,并且每次当然都会返回相同的校验和。

但在这些失败的卡上,时间要长得多——每次迭代需要 7 到 20 秒,并且会返回不同的校验和每次运行某些文件时都会出现错误。错误不会发生在所有文件上,但大多数情况下发生在所有卡上的相同文件上(按字母顺序排列的最后文件)。

示例运行(文件名后面的数字是不同校验和的数量):

在此处输入图片描述

重复运行其中一张卡,如果其中 1 个文件出错,则会产生 4-10 个不同的校验和。以下是一张有 5 个校验和的卡,按出现顺序排列:

["9c91d29a602ac91b6db803aff2589099", "4c5e5e134bdd74c385b3ad69b28ea724", "9c91d29a602ac91b6db803aff2589099", "9c91d29a602ac91b6db803aff2589099", "9c91d29a602ac91b6db803aff2589099", "4ea7e6b69623405081f4db7a80d62bb4", "5a9d78acb7eefbc9839bab3fcc3f7599", "9c91d29a602ac91b6db803aff2589099", "1d6f8ad8a528e0abae0f00032eeb712b", "9c91d29a602ac91b6db803aff2589099"]

如图所示 - 即使在给出不同的结果之后,一个校验和仍可能会重复。

回顾一下:文件系统可以访问,卡似乎正常工作,但重复读取文件会产生不同的结果,导致无法使用。似乎卡上的某些块在读取时只返回垃圾。

问题 1:这种损坏是否与卡上的写入磨损有关,如果是,是否有针对长期、低写入使用进行优化的 Raspberry 发行版?

问题2:这是因为显卡太便宜了吗?我应该买更好的吗?买哪种?

相关内容