filesystems - 嵌入式文件系统和断电

标签 filesystems embedded power-off

我正在开发一个没有任何需要使用文件系统的操作系统的嵌入式应用程序。我已经和项目中的人讨论过很多次了,有些人同意我的观点,即每当出现电源故障时,系统必须正确关闭系统,否则文件系统可能会发疯。

有些人说,如果您只是关闭系统电源并让自然运行它并不重要,但我认为这是最糟糕的事情之一,特别是如果您知道这会给您带来问题并可能缩短您的产品生命周期。

在最后一段中,我只是假设这是一个问题,但我的问题仍然存在:

断电对文件系统有任何影响吗?

最佳答案

对于非日志文件系统意外关闭可能意味着某些数据包括目录结构的损坏。如果缓存中有未保存的数据,或者 FS 正在写入多块更新,并且仅写入一些块时会发生中断,则会发生这种情况。

日志主要解决了这个问题——如果中间出现中断,FS 执行的恢复例程或检查和修复操作(通常是隐式的)会使文件系统处于一致状态。然而,这种状态并不总是最新的——即如果内存缓存中有一些数据,即使使用日志记录,它们也可能丢失。这是因为日志可以使您免于损坏文件系统,但不会发挥作用。

直写模式(无写入缓存)降低了数据丢失的可能性,但并不能完全解决问题,因为日志记录将作为缓存工作(在很短的时间内)。

所以不幸的是,备份或数据复制是防止数据丢失的主要方法。

关于filesystems - 嵌入式文件系统和断电,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14460091/

相关文章:

linux - 如何使用 QEMU 和 KGDB 调试 Linux 内核?

linker - 如何用复位向量填充 STM32 上未使用的内存?

android - 按代码关闭菜单

linux - 关机期间的最后命令

android - 如何检测安卓手机是否关机?

ubuntu - 如何在启动时自动响应 fsck 提示

c# - 创建新文件夹时如何复制安全信息?

java - 加速文件系统访问?

linux - 如何以编程方式获取 syscall.Mount() 的文件系统类型

c++ - 绘图圆,OpenGL 风格