由于 ext4 引入了块日志功能,比 ext3 更可靠,那么是否可以假设它 100% 可靠?如果启用默认情况下禁用的块日志功能,会怎么样?
作为朋友的指导,更详细地解释了我的情况:我有一个嵌入式 Linux 设备,安装后键盘和显示器分离,并且可以独立工作。
我的职责是确保它具有可靠的文件系统,这样当出现错误时就无法手动纠正设备上的故障。我不能强迫我的客户在每台设备上使用不间断电源来确保不会因断电而发生故障。
除了块日志功能之外,ext4 还能提供什么?
提前致谢。
答案1
不。你永远不能假设某件事是 100% 可靠的。
日志文件系统可以最大限度地减少意外中断时的数据丢失。范围和障碍虽然能提供更多帮助,但无法消除所有相关问题。就我个人而言,在使用日志文件系统时,我从未遇到过由于文件系统损坏而导致数据丢失的情况。
此外,日记不是默认禁用。
以下是对 ext4 及其改进的良好概述:http://kernelnewbies.org/Ext4
答案2
在内核 3.5 中引入并添加到 ext4 的一个新功能是所谓的“元数据校验和”,这是 ext4 的另一个功能,旨在提高文件系统结构的可靠性和完整性。
总体实施情况在内核新手:
现代文件系统(例如 ZFS 和 Btrfs)已经证明,使用校验和确保文件系统的完整性是一项有价值的功能。Ext4 增加了存储各种元数据字段校验和的功能。每次读取元数据字段时,都会将读取数据的校验和与存储的校验和进行比较,如果它们不同,则意味着元数据已损坏(请注意,此功能不涵盖数据,仅涵盖内部元数据结构,并且它不具备“自我修复”功能)。
任何 ext4 文件系统都可以在创建时使用“tune2fs -O metadata_csum”命令或“mkfs -O metadata_csum”升级为使用校验和。在文件系统中启用此功能后,不支持校验和的旧内核将只能以只读模式挂载它。
诸如此类的文章这个在 kernel.org进一步详细讨论如何使用元数据校验和防止损坏的元数据损坏文件系统结构。
然而文章还警告说:
元数据校验和代码在 Linux 3.5 中开始进入主线,从 3.7-rc1 开始,它正在进行一些用户测试。此代码尚未完全稳定。
Ubuntu 12.10 默认不启用此功能,并且最好不要在最近 ext4 文件系统出现问题后启用此功能。这里。
答案3
您可以禁用 ext4 (nodelalloc) 下的延迟分配,这样如果/当您在写入过程中确实遭遇断电时,您更有可能恢复更多数据,但随着时间的推移,这会以文件系统的更多碎片为代价。