硬汉嵌入式论坛

 找回密码
 立即注册
查看: 830|回复: 2
收起左侧

[STM32H7] FAT文件系统掉电保护的重要功能FAT日志(FAT Journaling)

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2025-2-19 06:30:01 | 显示全部楼层 |阅读模式
近期更新FlashFS文件系统专题视频教程,整理些关键知识点

日志文件系统(Journaling file system)是一种文件系统。在发生变化时,它先把相关的信息写入一个被称为日志的区域,然后再把变化写入主文件系统。在文件系统发生故障(如内核崩溃或突然停电)时,日志文件系统更容易保持一致性,并且可以较快恢复

【概述】

对文件系统进行修改时,需要进行很多操作。这些操作可能中途被打断,也就是说,这些操作不是“不可中断”(atomic)的。如果操作被打断,就可能造成文件系统出现不一致的状态。

例如:删除文件时,先要从目录树中移除文件的标示,然后收回文件占用的空间。如果在这两步之间操作被打断,文件占用的空间就无法收回。文件系统认为它是被占用的,但实际上目录树中已经找不到使用它的文件了。

在非日志文件系统中,要检查并修复类似的错误就必须对整个文件系统的数据结构进行检查。一般在挂载文件系统前,操作系统会检查它上次是否被成功卸载,如果没有,就会对其进行检查。如果文件系统很大或者I/O带宽有限,这个操作可能会花费很长时间。

为了避免这样的问题,日志文件系统分配了一个称为日志(journal)的区域来提前记录要对文件系统做的更改。在崩溃后,只要读取日志重新执行未完成的操作,文件系统就可以恢复一致。这种恢复是原子的,因为只存在几种情况:

不需要重新执行:这个事务被标记为已经完成
成功重新执行:根据日志,这个事务被重新执行
无法重新执行:这个事务会被撤销,就如同这个事务从来没有发生过
日志本身不完整:事务还没有被完全写入日志,它会被简单忽略

【系统初始化和驱动器格式化】

创建日志的要求如下:

驱动器必须使用两个 FAT 表进行格式化(驱动器 FAT 部分中的两个连续表)。

驱动器必须在分区的末尾(最后 1% 的空间)至少有 64 个扇区(= 32kB)的连续空闲空间。

如果启用了日志功能,挂载驱动器会触发文件系统搜索日志。

当找到日志时,日志系统会初始化,并检查日志内容以查找可能由系统崩溃导致的未完成数据事务。如果发现未完成的数据事务,文件系统会将驱动器恢复到最后一个已知的有效状态。

如果未找到日志,则会自动创建日志。所需的日志空间(32kB)通过在驱动器分区的最后 1% 中标记足够的簇来保留。这会相应地减少驱动器上报告的可用空间。

不需要特殊的驱动器格式化。当在另一台计算机(运行 Windows 或 Linux)上格式化驱动器时,通常在分区的末尾会有空闲空间。如果上述要求未满足,则在可移动媒体上创建日志可能会失败。如果驱动器碎片化或空间不足,可能会发生这种情况。在这种情况下,应对驱动器进行碎片整理或删除一些文件。

当使用文件系统组件的 fformat 函数时,如果启用了“使用 FAT 日志”选项,日志将自动在驱动器上创建。

【系统故障行为】

当文件系统组件在成功关闭以写入模式打开的文件之前遇到电源丢失或崩溃时,该文件的内容将丢失。这会导致丢失的数据簇,可以使用文件系统修复工具(如 Windows 上的 chkdsk 或 Linux 上的 fsck)进行恢复。

【RL-FlashFS的FAT日志支持情况】

FlashFS支持U盘,NAND, SD卡和eMMC的FAT日志功能,勾选如下对勾即可

1.png

2.png

3.png

评分

参与人数 1金币 +6 收起 理由
Vxworks + 6 很给力!

查看全部评分

回复

使用道具 举报

0

主题

121

回帖

121

积分

初级会员

积分
121
发表于 2025-2-19 11:15:38 | 显示全部楼层
支持
回复

使用道具 举报

0

主题

18

回帖

18

积分

新手上路

积分
18
发表于 2025-2-19 11:40:26 | 显示全部楼层
这下彻底明白那个√是意思了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-14 08:58 , Processed in 0.041222 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表