我有一个从 microSD 卡启动的 Raspberry Pi(运行 Raspbian)。由于它充当家庭服务器,因此我自然要监视 microSD 卡的错误。不幸的是,microSD 卡不像我拥有的其他磁盘那样支持 SMART,所以我不确定如何监控磁盘的错误。
如何在不支持 SMART 的磁盘仍在使用/已安装分区时监控/检查错误?
我有一个从 microSD 卡启动的 Raspberry Pi(运行 Raspbian)。由于它充当家庭服务器,因此我自然要监视 microSD 卡的错误。不幸的是,microSD 卡不像我拥有的其他磁盘那样支持 SMART,所以我不确定如何监控磁盘的错误。
如何在不支持 SMART 的磁盘仍在使用/已安装分区时监控/检查错误?
您可以用(无参数)替换
smartctl -t long
自检。badblocks
它执行一个简单的只读测试。您可以在挂载文件系统时运行它。(不要使用所谓的无损写入测试)。请注意,如果您还没有怀疑有坏扇区,您应该只使用它;如果您已经知道它会变坏,请
ddrescue
改用。(badblocks
丢弃它读取的所有数据,ddrescue
制作一个以后可能有用的副本)。除此之外,您可以做 SMART 不做的事情:使用校验和文件系统、dm-integrity 层或备份和比较来实际验证内容。缺少这些,只需运行常规文件系统检查。
MicroSD 卡还具有难以检测的故障模式。有些卡最终可能会丢弃写入并在读取时继续返回旧数据。即使是简单的校验和在这里也可能不够 - 如果卡碰巧返回旧数据和旧校验和,即使它是错误的数据,它也可能仍然匹配......
还有一些假容量卡,一旦你写得太多就会丢失数据。既不返回任何读取或写入错误,也无法用 检测到
badblocks
,即使在其破坏性写入模式下(因为它写入的模式是重复的)。为此,您需要一个使用非重复模式的测试,例如通过在其上放置一个加密层(在 LUKS 上写入的坏块会检测到假容量卡,而在原始设备上写入的坏块则不会)。