我有一个 SSD,我怀疑它时不时会出现无声故障。我已经运行过badblocks
它,很明显这不是坏扇区,而是可能是电子设备中的某些竞争条件,在这种情况下重试可能会正确读取数据。
普通磁盘有一些 ECC,可以通过占用更多空间来纠正错误。 Linux 可以在块设备之上添加 ECC 层吗?
我正在考虑类似于设备映射器的东西,所以也许:
dmsetup create-ecc /dev/orig /dev/mapper/with_ecc
因此对 /dev/mapper/with_ecc 的任何读写都将转换为 /dev/orig 上的 ecc 读/写。
编辑:
似乎其他人也在寻找它: http://permalink.gmane.org/gmane.linux.kernel.device-mapper.devel/8756
答案1
BTFSzfs 专为数据完整性而设计。
默认情况下,btrfs 在单个设备配置上复制元数据。我认为你也可以复制数据,尽管我从未这样做过。
zfs 有copies=n
- 我认为它是单磁盘的 RAID1。请考虑选择的冗余量将对可用设备空间以及设备性能产生负面影响。幸运的是,您可以在每个分区/卷的基础上指定复制/副本。
检查这篇博文来自 Richard Elling / Oracle 关于单个设备上的 zfs 的内容。不幸的是,没有为我加载任何图形图像。
真实证据和轶事证据都表明,当设备仍在很大程度上运行时,可能会发生不可恢复的错误。 ZFS 能够承受此类错误而不丢失数据。很酷。不过,墨菲定律最终会追上你。如果 ZFS 无法恢复数据,ZFS 会告诉您哪个文件已损坏。然后,您可以决定是否应该从备份或源介质中恢复它。
答案2
在 SSD 上运行 SMART 自检。以 root 身份执行以下命令(替换/dev/sda
为您的 SSD 的设备名称):
smartctl -t long /dev/sda
这将需要几个小时。完成后,您可以通过以下方式查询结果
smartctl -a /dev/sda | less
向下滚动到该SMART Selective self-test log
块。如果最上面的结果显示Completed without error
,则您的 SSD 没有问题。如果报告错误,则表明它已损坏,您需要尽快保存数据。