水木社区手机版
首页
|版面-Linux系统与应用(LinuxApp)|
新版wap站已上线
返回
1/1
|
转到
主题:关于ext4文件系统的数据完整性
1楼
|
atzlinux
|
2022-07-04 10:37:40
|
展开
这个要看下这个数据块被破坏的原因
如果是文件存储在 ext4 文件系统后,硬盘出现物理坏道导致该磁盘块无法读取,
在这种情况下,打开文件,会遇到读取错误,dmesg 也会有报错。
如果文件在写入过程中,机器掉电,再次开机时,需要进行文件系统日志恢复,
有可能导致文件某个块的数据无法恢复,这个在进行 fsck 时,也会有提示错误的。
【 在 bochum 的大作中提到: 】
: ext4里一个文件的某个块的数据被破坏了,文件打开的时候会报错吗?
: 谢谢
--
FROM 183.240.8.*
8楼
|
atzlinux
|
2022-07-04 17:38:42
|
展开
RAID 知道坏了的块是存放的文件数据,还是校验和数据。
只不过一般使用场景,无需关心这个细节问题,
raid 能够发现的坏块问题,一般是可以自己 重建修复的。
无论这个块是文件数据,还是校验和数据。
【 在 ERen 的大作中提到: 】
: 是这样,如果底下用了raid会好一点。
: 但raid没法判断是数据坏了还是校验坏了。
--
FROM 183.240.8.*
9楼
|
atzlinux
|
2022-07-04 17:46:48
|
展开
https://git.kernel.org/pub/scm/utils/mmc/mmc-utils.git
这个 mmc 工具可以检查 emmc 卡的相关状态,有空可以研究下是否有
数据完整性这块的内容。
对文件数据完整性要求比较高的,可以自己在上层应用,单独对文件数据内容进行校验和检查,把校验和检查文件,也放在文件系统上。
【 在 bochum 的大作中提到: 】
: 我们是嵌入式项目,就一个emmc片子
--
FROM 183.240.8.*
12楼
|
atzlinux
|
2022-07-04 21:20:20
|
展开
Raid 知道那个磁盘块是存放的校验数据,哪个磁盘块是存放的文件数据。
当出现不一致时,raid 本身有判断机制来进行验证,恢复异常的块。
raid 卡的判断逻辑,无非就是把文件的数据块全部读取一遍,看是否读取正常,
如果不正常,则有问题的块,会用到校验和块,在新的磁盘块恢复,这种情况是 文件数据块坏了;
如果文件数据块读取正常,校验和块在读取的时候,触发了硬件读取错误,则会判断是校验和块物理异常.......
当然,每个厂家的 raid 卡具体的异常检测逻辑是不一样的,细节会有差别,但是总体方法是类似的,能够判断出磁盘是坏在 文件数据块,还是校验和 块的。
【 在 ERen 的大作中提到: 】
: 不是说坏块。
: 说得是silent corruption, 例如楼主提到的比特翻转,
: 存储只知道校验和数据不一致,但不知道到底是数据出问题了,还是校验出问题了。
: ...................
--
FROM 183.240.8.*
14楼
|
atzlinux
|
2022-07-05 08:37:16
|
展开
我上个回复,只是说明, raid 卡是可以知道哪些是 文件数据块,哪些是校验快。
静默错误,检测最靠谱的办法是端到端校验和验证,
当然,某些型号 raid,具体以下功能,也能够检测到部分静默错误:
“某些磁盘阵列运行后台进程,以验证数据和RAID奇偶校验是否匹配,并且可以捕获这些类型的错误。”
MMC卡一般不使用 raid 技术,raid 在这块确实帮不上忙,
那还是校验和验证靠谱。
https://www.sohu.com/a/245885406_116366
【 在 ERen 的大作中提到: 】
: silent corruption根本就不会触发你所说的“硬件读取错误”.
: 你再想想,然后搜索silent corruption和raid.
--
FROM 183.240.8.*
20楼
|
atzlinux
|
2022-07-06 23:59:12
|
展开
debugfs
这个命令,能够查询到某个文件的一些底层信息。
比较难用,需要对 ext2 文件系统的底层知识有相当了解才行
【 在 bochum 的大作中提到: 】
: 这种错可以通过向指定文件对应的块直接写数据来仿真吧
: linux有这种查询某个文件对应物理块的接口吗?
--
FROM 183.240.8.*
1/1
|
转到
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版