Ubifs通过ubi管理MTD设备,ubi的LEB随机映射PEB,其本身占用一部分PEB,具体文件存储情况分析如下。
1. Ubi中不管是是逻辑块号还是物理块号都是从0开始的。一般情况下,Nandflash开始处存放bootloader和linux,这样LEB与PEB间存在一个偏移,此偏移由ubifs起始位置确定。
2. Ubi管理整个flash(属于ubi部分的flash),ubi分区在ubi flash区域之上分配。从MTD层看,整个ubi属于同一mtd分区。
3. 在ubi中,每个PEB第一页存储EC头,第二页存储VID头,所以LED的0偏移对应PEB的4096偏移。
EC头:包含物理擦除块的擦除次数以及其它一些不太重要的信息。64bytes
VID头:包含属于这个PEB的卷ID和逻辑块号,及其它信息。512bytes
注:每个非坏的PEB都包含一个EC头和VID头,一般EC在一个擦除块的第一页,所以偏移量是0,VID在擦除块的第二页,偏移量为一页大小。
这也是逻辑擦除块小于PEB大小的原因,EC头和VID头占用了一些空间(两页大小)。
4. Ubi通过卷(volume)管理mtd分区,UBI卷分根据用途分为用户卷和内部卷,内部卷外部不可见,现UBI中只有一个内部卷:布局(layout)卷,其余全是用户卷。Layout卷存储卷表(包含每个卷信息,如卷大小、卷更新标记、卷号等),占用两个LEB。
除了卷外,ubi还要预留一些空间给其他功能使用,1个PEB用于损耗平衡,1个PEB用于原子LEB修改,一些PEB(1%,用户可配置)用于坏块处理。
5. Ubi卷存储空间分析。Ubi用户卷上一般分6个区域,sb占一个PEB(该卷的LEB0),master占用两个PEB(改卷的LEB1和LEB2),Journal区占PEB数量不定,LPT占用PEB数量在创建文件系统后确定,孤儿区一般占用一个PEB,其余PEB供main area用。
6. 应用数据存储。应用数据存储在每个用户卷的main area区,该区设计为B+树(游离树),只有叶子节点存放应用数据(文件、目录、文件数据等),其余为索引节点(用于查找最终数据)。
7. 一个ubifs卷挂载示例
[ 54.707519] UBIFS: mounted UBI device 0, volume 1, name "db"
[ 54.713500] UBIFS: file system size: 49520640 bytes (48360 KiB, 47 MiB, 390 LEBs)
[ 54.721496] UBIFS: journal size: 6729728 bytes (6572 KiB, 6 MiB, 53 LEBs)
[ 54.729125] UBIFS: media format: w4/r0 (latest is w4/r0)
[ 54.735198] UBIFS: default compressor: lzo
[ 54.739471] UBIFS: reserved for root: 0 bytes (0 KiB)
[ 54.744812] UBIFS DBG msg: compiled on: Jul 20 2016 at 11:29:21
[ 54.751739] UBIFS DBG msg: min. I/O unit size: 2048 bytes
[ 54.757446] UBIFS DBG msg: max. write size: 2048 bytes
[ 54.763153] UBIFS DBG msg: LEB size: 126976 bytes (124 KiB)
[ 54.769958] UBIFS DBG msg: data journal heads: 1
[ 54.774871] UBIFS DBG msg: UUID: 7B480369-82F7-49A8-BB09-71B467D8B161
[ 54.782958] UBIFS DBG msg: big_lpt 0
[ 54.787872] UBIFS DBG msg: log LEBs: 4 (3 - 6)
[ 54.793487] UBIFS DBG msg: LPT area LEBs: 2 (7 - 8)
[ 54.799102] UBIFS DBG msg: orphan area LEBs: 1 (9 - 9)
[ 54.807373] UBIFS DBG msg: main area LEBs: 390 (10 - 399)
[ 54.813446] UBIFS DBG msg: index LEBs: 2
[ 54.818359] UBIFS DBG msg: total index bytes: 199080 (194 KiB, 0 MiB)
[ 54.827362] UBIFS DBG msg: key hash type: 0
[ 54.832275] UBIFS DBG msg: tree fanout: 8
[ 54.837371] UBIFS DBG msg: reserved GC LEB: 13
[ 54.842346] UBIFS DBG msg: first main LEB: 10
[ 54.847351] UBIFS DBG msg: max. znode size 240
[ 54.852416] UBIFS DBG msg: max. index node size 192
[ 54.857513] UBIFS DBG msg: node sizes: data 48, inode 160, dentry 56
[ 54.864959] UBIFS DBG msg: node sizes: trun 56, sb 4096, master 512
[ 54.872314] UBIFS DBG msg: node sizes: ref 64, cmt. start 32, orph 32
[ 54.879852] UBIFS DBG msg: max. node sizes: data 4144, inode 4256 dentry 312, idx 188
[ 54.888397] UBIFS DBG msg: dead watermark: 2048
[ 54.893554] UBIFS DBG msg: dark watermark: 6144
[ 54.898742] UBIFS DBG msg: LEB overhead: 2656
[ 54.903900] UBIFS DBG msg: max. dark space: 2396160 (2340 KiB, 2 MiB)
[ 54.910980] UBIFS DBG msg: maximum bud bytes: 6221824 (6076 KiB, 5 MiB)
[ 54.918060] UBIFS DBG msg: BG commit bud bytes: 5055232 (4936 KiB, 4 MiB)
[ 54.927368] UBIFS DBG msg: current bud bytes 63488 (62 KiB, 0 MiB)
[ 54.934082] UBIFS DBG msg: max. seq. number: 10239
[ 54.939331] UBIFS DBG msg: commit number: 4
ubifs物理存储的更多相关文章
-
MongoDB【第二篇】MongoDB逻辑与物理存储结构
基本的操作 一.常用的命令和基础知识 1.进入MongoDB sehll 首先我们进入到MongoDB所在目录执行 cd /work/app/mongodb/bin/ #启动 ./mongo 为了方便 ...
-
yaffs2物理存储
了解一个文件系统,除了了解运行机制(RAM结构)外,还需了解文件系统怎样物理存储的.RAM数据结构是为文件系统更好运行,而物理存储是文件系统载体.文件系统出问题后,最终要从物理存储寻找数据.参考&qu ...
-
Innodb物理存储结构系列1
本篇先介绍 下Innodb表空间,文件相关的内存数据结构. 1. 数据结构 Innodb的tablespace和文件的关系,是一对多的关系,先来看三个结构体 1. fil_system_struct: ...
-
InnoDB的表类型,逻辑存储结构,物理存储结构
表类型 对比Oracle支持的各种表类型,InnoDB存储引擎表更像是Oracle中的索引组织表(index organized table).在InnoDB存储引擎表中,每张表都有个主键,如果在创建 ...
-
算法与数据结构(四) 图的物理存储结构与深搜、广搜(Swift版)
开门见山,本篇博客就介绍图相关的东西.图其实就是树结构的升级版.上篇博客我们聊了树的一种,在后边的博客中我们还会介绍其他类型的树,比如红黑树,B树等等,以及这些树结构的应用.本篇博客我们就讲图的存储结 ...
-
DBMS_ROWID定位数据行物理存储位置
对于Oracle中的堆表,我们可以通过oracle内置的ROWID伪列得到对应行记录所在的ROWID的值(注意,这个ROWID只是一个伪列,实际的块中并不存在该列).然后我们可以通过DBMS_ROWI ...
-
MongoDB----逻辑与物理存储结构
基本的操作 一.常用的命令和基础知识 1.进入MongoDB shell 首先我们进入到MongoDB所在目录执行 cd /work/app/mongodb/bin/ #启动 ./mongo 为了方便 ...
-
专题实验 Storage structure 物理存储
物理存储结构主要是指: extent的分配, 以及datablock 存储相关, 置于tablespace, segment 都是逻辑结构. tablespace : 逻辑结构, 没有实际物理存储. ...
-
Oracle 体系结构四 逻辑和物理存储结构之间的关系
Oracle数据库从物理存储中完全抽象出逻辑存储.逻辑数据存储采用“段”的形式.段的类型有很多种:典型的段是“表”.这些段以物理形式存储在数据文件中.通过表空间将逻辑存储从物理存储中抽象出来.逻辑结构 ...
随机推荐
-
【夯实PHP基础】php开发时遇到白页的调试方法
本文地址 分享提纲: 1. 设置报错报错级别,显示报错 2. 白页的可能原因 1.[设置报错报错级别,显示报错] php开发时,访问地址也对,但就是不出来页面,显示的是 白的页面,所以就可 ...
-
Netty详解
Netty详解 http://blog.csdn.net/suifeng3051/article/category/2161821
-
sql分页比较简单快捷的方法
SELECT TOP 显示数量* FROM 表 WHERE (主键id>(SELECT MAX(主键id) FROM(SELECT TOP 页码数*显示数量 主键id FROM 表 ORDER ...
-
UOJ #236. 【IOI2016】railroad
Description Anna 在一个游乐园工作.她负责建造一个新的过山车铁路.她已经设计了影响过山车速度的 nn 个特殊的路段(方便起见标记为 00 到 n−1n−1).现在 Anna 必须要把这 ...
-
无忧代理免费ip爬取(端口js加密)
起因 为了训练爬虫技能(其实主要还是js技能-),翻了可能有反爬的网站挨个摧残,现在轮到这个网站了:http://www.data5u.com/free/index.shtml 解密过程 打开网站,在 ...
-
centos/linux/ubuntu在局域网上网
前言:对于服务器来说,一般不会安装windowns系统,都是会安装类unix系统,在局域网或者在内网中,上网还是走代理上网 1.知道代理服务器的ip及端口 2.就两条命令 export http_p ...
-
python中用psutil模块,yagmail模块监控CPU、硬盘、内存使用,阈值后发送邮件
import yagmailimport psutildef sendmail(subject,contents): #连接邮箱服务器 yag = yagmail.SMTP(user='邮箱名称@16 ...
-
LINQ to Entities does not recognize the method 'Int32 ToInt32(System.String)' method, and this method cannot be translated into a store expression
if (!string.IsNullOrEmpty(FarmWorkId)) { data = data.Where(p => p.TypeId == Convert.ToInt32(FarmW ...
-
pfsense的nat配置
需要把内网192.168.1.100的80端口映射到外面,外网卡地址为192.168.1.200 firewall, firewall,nat,选择port forward标签,添加一个 在desti ...
-
腾讯开放平台 iOS应用URL schema、Bundle ID填写 (含微博、微信)
解释如下: qq比较麻烦点,需要两个 URL schemes 1.QQ+appID(注意:appID原本是10进制的,需要先转换16进制,网址:点击转换16进制) 2.tencent+appID 结束