因为个人有对归档文件全量 HASH 的习惯,近期迁移 NAS ,从 UNRAID 迁移部分影视文件到新建的 NAS ,校验某 1T 大小的影视文件夹时遇到单个文件 HASH 校验失败,还好可以通过互联网恢复,看到具体的损坏位置。
117603,117606c117591,117594
< "ed2k": "FDFF75DAFA7FD8F021F7A40C5A0207D7",
< "md5": "23C34E593BBB73375D600A526C6A291E",
< "sha1": "79AF053BF5BE32A7265382DB9041FE8D0F86F804",
< "sha256": "36A6A32A5082D020DA35FD638E79A33294B264ECF07869C195856FD2D120132B"
---
> "ed2k": "803F36E469191335169FC8EA7B95E504",
> "md5": "518E50F7445DE606B2792CEE05157EE6",
> "sha1": "717761CF027EB1F88D142E2C344080DEDE468246",
> "sha256": "D44610A581BBFE241E9E97C6D362DA39DB3C14FF7BE03473CA53F483D6CD8A0E"
licsber@10 Downloads % xxd ori.mkv > ori
licsber@10 Downloads % xxd unraid.mkv > unraid
licsber@10 Downloads % diff ori unraid
15246551c15246551
< 0e8a4d60: 882a a172 2e55 8626 ee7b 6be9 095d 7cb4 .*.r.U.&.{k..]|.
---
> 0e8a4d60: 882a a072 2e55 8626 ee7b 6be9 095d 7cb4 .*.r.U.&.{k..]|.
可以看出来,一个 1 变成了 0 ,应该是奇怪的比特翻转。
暂时还想不起这个文件夹的由来,因为之前 PT 下载的机器和存储位置都变过很多次,自己挪文件大都通过 rsync ,并且每次删除源文件前,都会对目的位置做校验,所以应该不会是传输损坏,那静默损坏的可能性就很高。
搬迁前因为最近机器遇到过读写过程中突然断电,所以对单校验盘( 8 盘 8T 留 1 盘做 SNAP RAID )的 UNRAID 做了一次 check ,勾选了自动修正校验盘数据,但是之前修正计数都是 0 ,这次遇到一万多,所以开始排查问题。
首先是不勾选自动修正校验盘,重新 CHECK 两遍,错误计数都是 0 ,可以基本排除软件逻辑本身问题。
不过排查日志发现了更严重的事情,这个机器是三年前在 B 站 优易电子 买的 万由 810A 套装,配了一块 微星 B460M PRO-VDH 主板,原装配了一条 4G 内存,自己又加了一条 16G 内存,买来之后才发现八盘位其中主板原生 SATA 只有 4 个,另外四个通过 M.2 转 SATA 实现,此为背景。
可能性 1:M.2 转 SATA 模块问题,但感觉底层不至于影响上层,而且这个也没缓存。
之前遇到过一次主板亮 DRAM 灯,无法启动,拔掉两根内存条,擦一擦,交换位置之后正常启动。
可能性 2:内存问题,兼容性(两条不一样大)或者内存损坏,但是试了试跑 memtest 可以 PASS 。
又排查启动日志和 dmesg ,发现一条 SATA 始终是 3Gb/s 速率,遇到了降速。
交换 M.2 转 SATA 的接口顺序,交换硬盘顺序后,发现是万由的机箱背板问题,但是查到 SATA 降速应该不影响数据本身内容的安全,只会增加硬盘 SMART 信息中 UDMA CRC error count 的计数,现在这个盘的数值是 556 。
可能性 3:硬盘背板问题,因 SATA 降速,可能引起损坏。
root@LicsberPro:~# for i in /dev/sd* ; do echo $i && smartctl -a $i | grep SATA ; done
/dev/sda
SATA Version is: SATA 3.2, 6.0 Gb/s (current: 6.0 Gb/s)
/dev/sdb
SATA Version is: SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
/dev/sdc
SATA Version is: SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
/dev/sdd
SATA Version is: SATA 3.2, 6.0 Gb/s (current: 6.0 Gb/s)
/dev/sde
SATA Version is: SATA 3.1, 6.0 Gb/s (current: 3.0 Gb/s)
/dev/sdf
SATA Version is: SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
/dev/sdg
SATA Version is: SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
/dev/sdh
SATA Version is: SATA 3.2, 6.0 Gb/s (current: 6.0 Gb/s)
UDMA CRC Error 日志:
[ 35.757890] ata7.00: exception Emask 0x10 SAct 0x8000 SErr 0xba0100 action 0x6
[ 35.757898] ata7.00: irq_stat 0x08000000
[ 35.757899] ata7: SError: { UnrecovData PHYInt 10B8B Dispar BadCRC LinkSeq }
[ 35.757904] ata7.00: failed command: READ FPDMA QUEUED
[ 35.757906] ata7.00: cmd 60/e0:78:20:02:00/00:00:00:00:00/40 tag 15 ncq dma 114688 in
res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x10 (ATA bus error)
[ 35.757912] ata7.00: status: { DRDY }
[ 35.757916] ata7: hard resetting link
[ 35.761755] RAPL PMU: API unit is 2^-32 Joules, 4 fixed counters, 655360 ms ovfl timer
[ 35.761761] RAPL PMU: hw unit of domain pp0-core 2^-14 Joules
[ 35.761763] RAPL PMU: hw unit of domain package 2^-14 Joules
[ 35.761765] RAPL PMU: hw unit of domain dram 2^-14 Joules
[ 35.761766] RAPL PMU: hw unit of domain pp1-gpu 2^-14 Joules
[ 35.764759] cryptd: max_cpu_qlen set to 1000
[ 36.221271] intel_rapl_common: Found RAPL domain package
[ 36.221277] intel_rapl_common: Found RAPL domain core
[ 36.221280] intel_rapl_common: Found RAPL domain uncore
[ 36.221282] intel_rapl_common: Found RAPL domain dram
[ 36.226724] ata7: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[ 36.228189] ata7.00: configured for UDMA/133
[ 36.228201] sd 6:0:0:0: [sde] tag#15 UNKNOWN(0x2003) Result: hostbyte=0x00 driverbyte=DRIVER_OK cmd_age=0s
[ 36.228206] sd 6:0:0:0: [sde] tag#15 Sense Key : 0xb [current]
[ 36.228208] sd 6:0:0:0: [sde] tag#15 ASC=0x0 ASCQ=0x0
[ 36.228211] sd 6:0:0:0: [sde] tag#15 CDB: opcode=0x88 88 00 00 00 00 00 00 00 02 20 00 00 00 e0 00 00
[ 36.228214] I/O error, dev sde, sector 544 op 0x0:(READ) flags 0x80700 phys_seg 24 prio class 2
[ 36.228226] ata7: EH complete
SATA 协商降速日志:
[ 19.636335] ata8: hard resetting link
[ 20.108593] ata8: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[ 20.110056] ata8.00: configured for UDMA/133
[ 20.110067] sd 7:0:0:0: [sde] tag#14 UNKNOWN(0x2003) Result: hostbyte=0x00 driverbyte=DRIVER_OK cmd_age=0s
[ 20.110069] sd 7:0:0:0: [sde] tag#14 Sense Key : 0xb [current]
[ 20.110071] sd 7:0:0:0: [sde] tag#14 ASC=0x0 ASCQ=0x0
[ 20.110073] sd 7:0:0:0: [sde] tag#14 CDB: opcode=0x88 88 00 00 00 00 00 00 00 01 08 00 00 00 f8 00 00
[ 20.110074] I/O error, dev sde, sector 264 op 0x0:(READ) flags 0x80700 phys_seg 31 prio class 2
[ 20.110083] ata8: EH complete
[ 20.143988] ata8: limiting SATA link speed to 3.0 Gbps
[ 20.143992] ata8.00: exception Emask 0x10 SAct 0x800000 SErr 0xb00100 action 0x6
[ 20.143994] ata8.00: irq_stat 0x08000000
[ 20.143995] ata8: SError: { UnrecovData Dispar BadCRC LinkSeq }
[ 20.143998] ata8.00: failed command: READ FPDMA QUEUED
[ 20.143999] ata8.00: cmd 60/08:b8:d8:01:00/00:00:00:00:00/40 tag 23 ncq dma 4096 in
res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x10 (ATA bus error)
[ 20.144004] ata8.00: status: { DRDY }
[ 20.144006] ata8: hard resetting link
[ 20.610811] ata8: SATA link up 3.0 Gbps (SStatus 123 SControl 320)
[ 20.612275] ata8.00: configured for UDMA/133
[ 20.612283] ata8: EH complete
等待后续继续排查。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.