mad*_*adu 5 filesystems embedded corruption
这些天我正在研究嵌入式系统。需要在没有正确关闭的情况下关闭电源。我们正在考虑 Aufs 之类的只读文件系统。但问题是应用程序中有一些可更新的数据,并且允许用户更改 IP、日期时间等。因此,系统需要一个额外的 R/W 分区。
我有几个问题需要澄清。
小智 3
从文件系统的角度来看,使用带有默认选项的 ext3 或 ext4 通常会为您提供足够的崩溃一致性。您当然不会遭受文件系统丢失或断电前尚未写入的任何文件的损坏。
关于如何处理任何文件系统上的崩溃一致性,有很多考虑因素。如果您的应用程序仅创建新文件,或者通过创建临时文件并使用重命名自动覆盖来覆盖现有文件,则 ext4 的默认 data=ordered 模式就可以了。尽管在文件和目录条目上对 fsync() 的调用完成之前,或者操作系统刷新其缓存之前,无法保证数据在电源故障后仍然存在。这还假设您的存储设备支持 fsync()。
如果应用程序需要保证文件元数据和数据之间的一致性而不关心性能,则可以使用 data=journal ,以便记录对文件和文件系统元数据的所有更改,而不仅仅是元数据。这将避免不完整的写入情况,例如文件大小变大,但附加的数据丢失并被空字符替换。