不好意思我不知道这个静态错误是不是正确的术语 就是我们存在硬盘中的数据,什么也没干(没有发生拷贝等一系列操作)自然就发生了变化,可以表现为譬如说 MD5 的值发生了改变。
我想请教一下大量保存数据的各位,大家肯定都有防止机械硬盘一整块挂掉的措施,譬如说 raid 系统,但是大家有没有采取措施来防止内部数据的静态错误(而不仅仅是硬盘的机械故障)?譬如说把所有的数据压缩成一个一个压缩包计算 MD5 再定期对比?一般机械硬盘的静态错误发生的概率是多少,值得我们去这样防范吗?有没有懂的大佬解释一下
1
v2tudnew 2022-11-28 23:41:54 +08:00
https://en.wikipedia.org/wiki/Data_degradation
你说的是这个吧?新盘和写入一两年的数据概率非常低的,旧硬盘和长期该区域的数据没有被重复写入,概率会逐渐提高。 RAID 如果支持是可以后台自动定期进行完整性扫描的,如果是冷备份,可以用 PAR2 软件(例如 MultiPar ),也可以用 WinRAR 打包加上恢复记录,当然前提是在制作 PAR2 或者打包的那一刻,你的数据没有损坏。 当然你也无脑多块硬盘多备份,同时损坏一个文件的概率是极低的。 |
2
wizardyhnr 2022-11-29 05:05:13 +08:00
买市场风评好的存储硬件。UPS 防断电。好的 PSU 。
文件系统用 btrfs 这样有校验功能的,写入文件时系统同时存入校验值,定期执行 scrub ,有 bit rot 就修复了。 重要数据做 3-2-1 冷数据备份,非光盘用 par2 ,光盘用 DVDisaster 。 |
3
julyclyde 2022-11-29 09:27:10 +08:00
MD5 谈不上改变
你这个提问方式有问题 |
4
deorth 2022-11-29 15:42:01 +08:00 via Android
建议上 zfs
|
5
busier 2022-11-29 18:54:51 +08:00
你说的这个情况叫 silent corrupt ,我在移动硬盘上使用都是使用 btrfs 的,btrfs 是可以发现 silent corrupt 的!而 FAT/NTFS/exFAT 都不行。
|
6
julyclyde 2022-11-30 09:06:22 +08:00
@zhangjint5 啥原理? btrfs 有后台巡检吗?
|
7
AncientLibrary OP @zhangjint5 那我现在使用 btrfs ,要怎么做它才能启动检查?是需要 terminal 输入什么命令吗?还是它会自动检查?这方面的资料我 google 了一下感觉很杂,也没有找到直接的答案。感谢前辈了
|
8
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 |
9
busier 2022-12-01 18:08:42 +08:00
你可以这样测试,找一个小 U 盘,格式化成 BTRFS ,写入一个大文件,沾掉空间 90%左右就行。
然后用 16 进制编辑器,以块设备的方式打开 U 盘设备,随便修改一个字节。 然后再通过 BTRFS 正常读取文件,就会被逮住发生 silent corrupt 错误! |
10
busier 2022-12-01 18:10:04 +08:00
然后用 16 进制编辑器,以块设备的方式打开 U 盘设备,随便修改一个字节。
(纠正下,在 U 盘靠近中间位置改,确保是文件的数据区) |