我有一个从 microSD 卡启动的 Raspberry Pi(运行 Raspbian)。由于它充当家庭服务器,我自然想要监控 microSD 卡是否有错误。但不幸的是,microSD 卡不像我拥有的其他磁盘那样支持 SMART,因此我不确定如何监视磁盘是否有错误。
当不支持 SMART 的磁盘仍在使用/已挂载分区时,如何监控/检查它们是否有错误?
答案1
您可以将smartctl -t long
自测试替换为badblocks
(无参数)。它执行简单的只读测试。您可以在安装文件系统时运行它。 (不要使用所谓的非破坏性写入测试)。
# badblocks -v /dev/loop0
Checking blocks 0 to 1048575
Checking for bad blocks (read-only test): done
Pass completed, 0 bad blocks found. (0/0/0 errors)
请注意,只有在您尚未怀疑存在坏扇区时才应使用此选项;如果您已经知道它会变坏,请改用ddrescue
。 (badblocks
丢弃它读取的所有数据,ddrescue
制作一个稍后可能有用的副本)。
除此之外,您还可以执行 SMART 无法执行的操作:使用校验和文件系统、dm 完整性层或备份和比较来实际验证内容。如果缺少这些,只需运行常规文件系统检查即可。
MicroSD 卡还存在难以检测的故障模式。有些卡最终可能会放弃写入并在读取时继续返回旧数据。即使是简单的校验和在这里也可能不够 - 如果卡碰巧返回旧数据和旧校验和,即使数据错误,它也可能仍然匹配......
还有一些假容量卡,一旦写入太多,就会丢失数据。两者都不会返回任何读取或写入错误,并且即使在其破坏性写入模式下也无法检测到它badblocks
(因为它写入的模式是重复的)。
为此,您需要使用非重复模式进行测试,例如在其上放置加密层(在 LUKS 上写入的坏块会检测到假容量卡,而在原始设备上写入的坏块则不会检测到)。