- 主题:btrfs check 时 csum 出错是什么意思呢?
我使用`btrfs scrub start -Bd /home/`这条命令检查我的 home 分区。这是一个使用两块硬盘组成的 RAID1 分区。运行完没有报错。
但是我`umount /home/`,然后执行`btrfs check --check-data-sum -p /dev/sdb1`之后,却是报一大堆的 csum 错误。这是什么原因呢?能不能修复这些错误?
worknas1:~ # btrfs check --check-data-csum -p /dev/sdb1
Opening filesystem to check...
Checking filesystem on /dev/sdb1
...
mirror 2 bytenr 5777268736 csum 4293900968 expected csum 168521404553 items checked)
mirror 2 bytenr 5777276928 csum 2620486707 expected csum 1307804838
mirror 2 bytenr 5777285120 csum 1858861762 expected csum 3875044954
mirror 2 bytenr 5777301504 csum 2285631852 expected csum 777154231
...
--
FROM 124.72.119.*
很奇怪的事情啊。。
为什么我把这些文件复制到其它文件系统,格式化了`/home/` 分区,再重新复制回来,还是报 data csum 错误?难道是磁盘的固定位置出了错。。
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 我使用`btrfs scrub start -Bd /home/`这条命令检查我的 home 分区。这是一个使用两块硬盘组成的 RAID1 分区。运行完没有报错。
: 但是我`umount /home/`,然后执行`btrfs check --check-data-sum -p /dev/sdb1`之后,却是报一大堆的 csum 错误。这是什么原因呢?能不能修复这些错误?
: worknas1:~ # btrfs check --check-data-csum -p /dev/sdb1
: ...................
--
FROM 124.72.119.*
汇报一下几天折腾下来的结果:
1. data-csum 错误是确实存在的。不是 btrfs 乱报。原因是我之前那台电脑的内存不太稳定,可能是内存内存数据错误了,导致写入到硬盘的数据也是错误的。
2. btrfs 碰到这些错误的数据时,会向上层报 IO 错误。
3. btrfs 有个坑,当一个分区出现这个错误时,会引发另外一个分区正在进行中的 IO 任务失败,让另一个分区的写入被中断,留下另一个新的 data-csum 错误!
这个看起来是 btrfs 的一个天坑!大家用 btrfs 要尽量用 ecc 内存啊。
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 我使用`btrfs scrub start -Bd /home/`这条命令检查我的 home 分区。这是一个使用两块硬盘组成的 RAID1 分区。运行完没有报错。
: 但是我`umount /home/`,然后执行`btrfs check --check-data-sum -p /dev/sdb1`之后,却是报一大堆的 csum 错误。这是什么原因呢?能不能修复这些错误?
: worknas1:~ # btrfs check --check-data-csum -p /dev/sdb1
: ...................
--
FROM 121.205.117.*