硬盘存储的数据发生静态错误的概率

2022-11-28 21:47:38 +08:00
 AncientLibrary

不好意思我不知道这个静态错误是不是正确的术语 就是我们存在硬盘中的数据,什么也没干(没有发生拷贝等一系列操作)自然就发生了变化,可以表现为譬如说 MD5 的值发生了改变。

我想请教一下大量保存数据的各位,大家肯定都有防止机械硬盘一整块挂掉的措施,譬如说 raid 系统,但是大家有没有采取措施来防止内部数据的静态错误(而不仅仅是硬盘的机械故障)?譬如说把所有的数据压缩成一个一个压缩包计算 MD5 再定期对比?一般机械硬盘的静态错误发生的概率是多少,值得我们去这样防范吗?有没有懂的大佬解释一下

1306 次点击
所在节点    程序员
10 条回复
v2tudnew
2022-11-28 23:41:54 +08:00
https://en.wikipedia.org/wiki/Data_degradation
你说的是这个吧?新盘和写入一两年的数据概率非常低的,旧硬盘和长期该区域的数据没有被重复写入,概率会逐渐提高。
RAID 如果支持是可以后台自动定期进行完整性扫描的,如果是冷备份,可以用 PAR2 软件(例如 MultiPar ),也可以用 WinRAR 打包加上恢复记录,当然前提是在制作 PAR2 或者打包的那一刻,你的数据没有损坏。
当然你也无脑多块硬盘多备份,同时损坏一个文件的概率是极低的。
wizardyhnr
2022-11-29 05:05:13 +08:00
买市场风评好的存储硬件。UPS 防断电。好的 PSU 。
文件系统用 btrfs 这样有校验功能的,写入文件时系统同时存入校验值,定期执行 scrub ,有 bit rot 就修复了。
重要数据做 3-2-1 冷数据备份,非光盘用 par2 ,光盘用 DVDisaster 。
julyclyde
2022-11-29 09:27:10 +08:00
MD5 谈不上改变
你这个提问方式有问题
deorth
2022-11-29 15:42:01 +08:00
建议上 zfs
busier
2022-11-29 18:54:51 +08:00
你说的这个情况叫 silent corrupt ,我在移动硬盘上使用都是使用 btrfs 的,btrfs 是可以发现 silent corrupt 的!而 FAT/NTFS/exFAT 都不行。
julyclyde
2022-11-30 09:06:22 +08:00
@zhangjint5 啥原理? btrfs 有后台巡检吗?
AncientLibrary
2022-11-30 19:57:06 +08:00
@zhangjint5 那我现在使用 btrfs ,要怎么做它才能启动检查?是需要 terminal 输入什么命令吗?还是它会自动检查?这方面的资料我 google 了一下感觉很杂,也没有找到直接的答案。感谢前辈了
busier
2022-12-01 18:04:38 +08:00
日常使用磁盘不用管它,遇到发生 silent corrupt 的文件,btrfs 文件系统直接会报文件读写错误,而不会静悄悄的读到错误内容的文件。

如果需要手动检查一遍磁盘所有文件,用 btrfs 命令的 scrub 可以扫描所有文件,如果扫描到发生 silent corrupt 的文件会记录到日志,用 sudo dmesg -k 命令查看。

######################

sudo btrfs scrub --help
usage: btrfs scrub <command> [options] <path>|<device>

btrfs scrub start [-BdqrRf] [-c ioprio_class -n ioprio_classdata] <path>|<device>
Start a new scrub. If a scrub is already running, the new one fails.
btrfs scrub cancel <path>|<device>
Cancel a running scrub
btrfs scrub resume [-BdqrR] [-c ioprio_class -n ioprio_classdata] <path>|<device>
Resume previously canceled or interrupted scrub
btrfs scrub status [-dR] <path>|<device>
Show status of running or finished scrub

verify checksums of data and metadata
busier
2022-12-01 18:08:42 +08:00
你可以这样测试,找一个小 U 盘,格式化成 BTRFS ,写入一个大文件,沾掉空间 90%左右就行。

然后用 16 进制编辑器,以块设备的方式打开 U 盘设备,随便修改一个字节。

然后再通过 BTRFS 正常读取文件,就会被逮住发生 silent corrupt 错误!
busier
2022-12-01 18:10:04 +08:00
然后用 16 进制编辑器,以块设备的方式打开 U 盘设备,随便修改一个字节。

(纠正下,在 U 盘靠近中间位置改,确保是文件的数据区)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/898631

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX