hum*_*ace 6 ext4 data-recovery block-device
如果/home/user/me在ext4fs的元数据中出现硬盘坏扇区,是否意味着所有子目录的数据丢失?
背景:
我知道许多用户对 ext4 文件系统感到满意,甚至不愿意更改为“最近”开发的替代方案(例如 BTRFS),声称数据丢失的风险增加。事实上,当关于 ext4 的代码在今天出现时,一些发现错误的结果会说话。
有了这个介绍,我的问题是:
ext4文件系统对来自块设备的坏扇区的抵抗力是多少。一个坏扇区可能会吞下 4K 字节,我想如果那些 4K 碰巧吞下了目录结构(即/home/user/me目录)中的一些目录信息,那么我认为这会“造成严重破坏” 。
我知道超级块(更基本的信息源在 ext4 中以冗余形式保存,所以我对坏块进行成像可以在那里修复,但我不确定它是否会被自动删除)
所以我的问题是:ext4 能否阻止在其元数据中丢失坏块?
我知道数据/文件内容中的坏块总是意味着丢失那些 512/4K 扇区(但是我在那里使用 parchive 作为补救措施)。
在对“如果ext4可以处理来自块设备的读取错误”问题进行一些调查后,我的初步结论是:ext4 中仅存在部分冗余
以下是我“调查”ext4的“安全特性”的一些发现(基于Ext4 wiki和
“EXT4 文件系统中的 Inode 结构”)
ext4存储文件内容“数据块”和文件系统“元数据块”。据我所知ext4,仅对后者进行一些维修/冗余的准备。ext4超级block group descriptors信息。ext4因此受保护的新功能部分取代了旧的间接块寻址(IBA)),但旧的 IBA 块不是,如下所述:
请注意,既没有幻数也没有校验和来提供任何级别的置信度,即 [IBA] 块没有充满垃圾。
filespec <inode-number>的debuge2fs.inode table。inode 表中的每个条目(被拆分的表和被写入形成ext4磁盘布局的块组的部分)占用(填充)256 个字节。因此,一个不可读的扇区应该意味着仅丢失 2 到 16 个文件。此外,使用校验和功能,inode 表中的任何损坏都应该是可以纠正的,但也不会被忽视。ext4似乎无法防范什么为了测试和证明ext4磁盘布局的一些列举的挑战(关于它对坏扇区的抵抗力),以下工具很方便
debugfs <blockdev>它允许通过文件规范访问文件(文件路径,或者在通过 inode 编号出现问题的情况下< >)truncate, dd, losetup,mount和mkfs.ext4创建ext4文件系统来玩。dumpe2fs,tune2fs提供信息dm-setup 组装一个模拟读取错误的虚拟块设备,如下所示: $> dmsetup 创建 badsectordevice << EOF 0 2902 线性 /dev/loop1 0 2902 2 错误 2904 17576 线性/dev/loop1 2904 EOF如示例所示,块设备扇区为 512,
ext4块大小为 1024,因此 LBA 扇区 2902,2903 不可读。