- 主题:关于ext4文件系统的数据完整性
不是说坏块。
说得是silent corruption, 例如楼主提到的比特翻转,
存储只知道校验和数据不一致,但不知道到底是数据出问题了,还是校验出问题了。
【 在 atzlinux 的大作中提到: 】
: RAID 知道坏了的块是存放的文件数据,还是校验和数据。
: 只不过一般使用场景,无需关心这个细节问题,
: raid 能够发现的坏块问题,一般是可以自己 重建修复的。
: ...................
--
FROM 124.65.245.*
raid 也没这个校验,得上 zfs 或者 btrfs.
【 在 ERen 的大作中提到: 】
: 是这样,如果底下用了raid会好一点。
: 但raid没法判断是数据坏了还是校验坏了。
--
FROM 47.243.39.*
Raid 知道那个磁盘块是存放的校验数据,哪个磁盘块是存放的文件数据。
当出现不一致时,raid 本身有判断机制来进行验证,恢复异常的块。
raid 卡的判断逻辑,无非就是把文件的数据块全部读取一遍,看是否读取正常,
如果不正常,则有问题的块,会用到校验和块,在新的磁盘块恢复,这种情况是 文件数据块坏了;
如果文件数据块读取正常,校验和块在读取的时候,触发了硬件读取错误,则会判断是校验和块物理异常.......
当然,每个厂家的 raid 卡具体的异常检测逻辑是不一样的,细节会有差别,但是总体方法是类似的,能够判断出磁盘是坏在 文件数据块,还是校验和 块的。
【 在 ERen 的大作中提到: 】
: 不是说坏块。
: 说得是silent corruption, 例如楼主提到的比特翻转,
: 存储只知道校验和数据不一致,但不知道到底是数据出问题了,还是校验出问题了。
: ...................
--
FROM 183.240.8.*
silent corruption根本就不会触发你所说的“硬件读取错误”.
你再想想,然后搜索silent corruption和raid.
【 在 atzlinux 的大作中提到: 】
: Raid 知道那个磁盘块是存放的校验数据,哪个磁盘块是存放的文件数据。
: 当出现不一致时,raid 本身有判断机制来进行验证,恢复异常的块。
: raid 卡的判断逻辑,无非就是把文件的数据块全部读取一遍,看是否读取正常,
: ...................
--
修改:ERen FROM 114.250.183.*
FROM 114.250.183.*
我上个回复,只是说明, raid 卡是可以知道哪些是 文件数据块,哪些是校验快。
静默错误,检测最靠谱的办法是端到端校验和验证,
当然,某些型号 raid,具体以下功能,也能够检测到部分静默错误:
“某些磁盘阵列运行后台进程,以验证数据和RAID奇偶校验是否匹配,并且可以捕获这些类型的错误。”
MMC卡一般不使用 raid 技术,raid 在这块确实帮不上忙,
那还是校验和验证靠谱。
https://www.sohu.com/a/245885406_116366
【 在 ERen 的大作中提到: 】
: silent corruption根本就不会触发你所说的“硬件读取错误”.
: 你再想想,然后搜索silent corruption和raid.
--
FROM 183.240.8.*
eMMC在存储的NAND颗粒上,有一层校验
如果这层校验出错,eMMC是报错还是直接向上层提交有问题的数据,没见有地方说
如果eMMC选择提交有问题的数据,那一般的文件系统不管,此时文件内容或目录表就坏特
【 在 bochum 的大作中提到: 】
: 我们是嵌入式项目,就一个emmc片子
--
FROM 123.118.97.*
这种错可以通过向指定文件对应的块直接写数据来仿真吧
linux有这种查询某个文件对应物理块的接口吗?
【 在 zkr 的大作中提到: 】
: eMMC在存储的NAND颗粒上,有一层校验
: 如果这层校验出错,eMMC是报错还是直接向上层提交有问题的数据,没见有地方说
: 如果eMMC选择提交有问题的数据,那一般的文件系统不管,此时文件内容或目录表就坏特
: ...................
--
FROM 101.84.34.*
直接操作blockdev等价于修改磁盘扇区,并不能注入ECC错
理论上,如果和eMMC厂商有合作,那是能仿真的,一般用户没啥办法
【 在 bochum 的大作中提到: 】
: 这种错可以通过向指定文件对应的块直接写数据来仿真吧
: linux有这种查询某个文件对应物理块的接口吗?
--
FROM 123.112.188.*
如果是 btrfs 的话,能发现这种直接修改磁盘扇区的错误。
ECC 错的话,磁盘会通知操作系统,如果是 RAID1 就会去读取另外一个块,否则向应用程序报 IO 错误。
那个跟静默错误并不一样。
【 在 zkr 的大作中提到: 】
: 直接操作blockdev等价于修改磁盘扇区,并不能注入ECC错
: 理论上,如果和eMMC厂商有合作,那是能仿真的,一般用户没啥办法
--
FROM 47.243.39.*