Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
a963b94e
D
Docs
项目概览
OpenHarmony
/
Docs
大约 1 年 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
a963b94e
编写于
8月 02, 2021
作者:
O
openharmony_ci
提交者:
Gitee
8月 02, 2021
浏览文件
操作
浏览文件
下载
差异文件
!489 修改M核LittleFS基本概念描述
Merge pull request !489 from 野生毛霉君/master
上级
1893e5b6
f38822b8
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
2 addition
and
70 deletion
+2
-70
zh-cn/device-dev/kernel/figure/Cow机制示意图.png
zh-cn/device-dev/kernel/figure/Cow机制示意图.png
+0
-0
zh-cn/device-dev/kernel/figure/zh-cn_image_0000001124307264.png
...device-dev/kernel/figure/zh-cn_image_0000001124307264.png
+0
-0
zh-cn/device-dev/kernel/figure/zh-cn_image_0000001132085260.png
...device-dev/kernel/figure/zh-cn_image_0000001132085260.png
+0
-0
zh-cn/device-dev/kernel/figure/元数据存储示意图.png
zh-cn/device-dev/kernel/figure/元数据存储示意图.png
+0
-0
zh-cn/device-dev/kernel/figure/日志方式示意图.png
zh-cn/device-dev/kernel/figure/日志方式示意图.png
+0
-0
zh-cn/device-dev/kernel/kernel-lite-mini-extend-file-lit-basic.md
...vice-dev/kernel/kernel-lite-mini-extend-file-lit-basic.md
+2
-70
未找到文件。
zh-cn/device-dev/kernel/figure/Cow机制示意图.png
已删除
100644 → 0
浏览文件 @
1893e5b6
36.3 KB
zh-cn/device-dev/kernel/figure/zh-cn_image_0000001124307264.png
已删除
100644 → 0
浏览文件 @
1893e5b6
19.0 KB
zh-cn/device-dev/kernel/figure/zh-cn_image_0000001132085260.png
已删除
100644 → 0
浏览文件 @
1893e5b6
20.8 KB
zh-cn/device-dev/kernel/figure/元数据存储示意图.png
已删除
100644 → 0
浏览文件 @
1893e5b6
45.3 KB
zh-cn/device-dev/kernel/figure/日志方式示意图.png
已删除
100644 → 0
浏览文件 @
1893e5b6
15.7 KB
zh-cn/device-dev/kernel/kernel-lite-mini-extend-file-lit-basic.md
浏览文件 @
a963b94e
# 基本概念<a name="ZH-CN_TOPIC_0000001153060453"></a>
LittleFS是一个小型的的Flash文件系统,它结合日志结构(log-structured)文件系统和COW(copy-on-write)文件系统的思想,以日志结构存储元数据,以COW结构存储数据。这种特殊的存储方式,使LittleFS具有强大的掉电恢复能力(power-loss resilience)。分配COW数据块时LittleFS采用了名为统计损耗均衡的动态损耗均衡算法,使Flash设备的寿命得到有效保障。同时LittleFS针对资源紧缺的小型设备进行设计,具有极其有限的ROM和RAM占用,并且所有RAM的使用都通过一个可配置的固定大小缓冲区进行分配,不会随文件系统的扩大占据更多的系统资源。
-
[
运行机制
](
#section10284121317365
)
-
[
日志方式
](
#section13804114513361
)
-
[
Cow机制
](
#section172771130193610
)
-
[
LittleFS掉电保护
](
#section42941021173614
)
LittleFS主要用在微控制器和Flash上,是一种嵌入式文件系统,具有掉电恢复、擦写均衡、节省ROM/RAM空间等特点。
## 运行机制<a name="section10284121317365"></a>
最经典的掉电保护方法有两种,一种是使用日志,一种是通过COW方式。LittleFS结合了两种方法,并优化了两种方案的缺点,提供了一套掉电保护策略
### 日志方式<a name="section13804114513361"></a>
**图 1**
日志方式示意图
<a
name=
"fig8199182955716"
></a>
![](
figure/日志方式示意图.png
"日志方式示意图"
)
具体步骤为:
1.
写入数据之前,先在日志区存储开始标志,记录要写入的数据位置和大小;
2.
待写入的数据写入日志区;
3.
待写入的数据写入数据区;
4.
写入完成之后,在日志区记录结束标志。
模拟掉电场景:
1.
步骤1完成,步骤2没有完成;重启之后,保持原来的数据,日志无效;
2.
步骤1,2完成了,步骤3没有完成,尝试把步骤2的数据写入到数据区;
3.
步骤1,2,3完成了,步骤4没有完成,同样尝试把步骤2的数据写入到数据区;
### Cow机制<a name="section172771130193610"></a>
**图 2**
Cow机制示意图
<a
name=
"fig139293469719"
></a>
![](
figure/Cow机制示意图.png
"Cow机制示意图"
)
具体步骤为:
1.
想更新节点F的数据,先申请一个新的节点,把F的旧数据拷贝过去,然后更新新的数据;
2.
把父节点的指针指向新的节点,去掉旧节点的指针。
模拟掉电场景:
步骤1完成了,步骤2没有完成,则使用旧的数据,新的节点变成孤儿节点。
### LittleFS掉电保护<a name="section42941021173614"></a>
LittleFS结合了日志方式和COW机制两种方式进行掉电保护,并且优化了两种方案。
文件系统有三要素,超级块,inode,以及数据,对应LittleFS来说,它把超级块以及inode通过日志的方式存储,两种采用统一的存储结构,后文称两者为元数据;普通数据则采用cow的方式存储,采用czt逆序链表的方式。
![](
figure/zh-cn_image_0000001124307264.png
)
**元数据的存储**
元数据(对应root,dir)采用双block的方式存储,互为备份,每个block都有一个revision序号,值越大,表示block的数据越新,每个block默认可以存储最多0xff个文件的数据,如果超过这个值,则需要compact(压缩)。
Compact是干什么呢? 即当数据的大小大于某个值的时候,把数据整合,剔除同一个id的旧的数据,然后写入到备份block里面。如图所示:
**图 3**
元数据存储示意图
<a
name=
"fig426811100598"
></a>
![](
figure/元数据存储示意图.png
"元数据存储示意图"
)
**普通数据的存储**
LittleFS的数据采用链表的方式逆向管理。
![](
figure/zh-cn_image_0000001132085260.png
)
1.
采用逆向的指针,这样常规的追加数据,不需要额外的开销来重新建立所有的索引;
2.
每个偶数block有多个指针,指向更远的数据,这样可以在检索的时候加快速度。
当在一个资源非常紧缺的小型设备上,寻找一个具有掉电恢复能力并支持损耗均衡的Flash文件系统时,LittleFS可能是最好的选择。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录