华为最近发布了一个新的linux文件系统,EROFS ( Extendable Read-Only File System ),是一个基于ROM的只读文件系统。目前已经并入内核主线4.19分支,代码可以在driver/staging/erofs目录上获取

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/staging/erofs?h=v4.19.8

支持xattr,支持LZ4文件压缩节约存储空间。目标针对的是android手机文件系统中的只读分区,当然也可以用于其他对存储和性能都有要求的嵌入式系统领域。

目前开放出来的mkfs tools可以在github上下载到

https://github.com/hsiangkao/erofs_mkfs_binary

maintainer贴的一段性能测试如下:

https://lkml.org/lkml/2018/5/31/306

Kirin970 (A73 Big-core 2361Mhz, A53 little-core 0Mhz, DDR 1866Mhz):
compression  EROFS seq read  EXT4 seq read        EROFS random read  EXT4 random read
ratio           bw[MB/s]       bw[MB/s]             bw[MB/s] (20%)    bw[MB/s] (20%)
  4              546.7          544.3                    157.7              57.9
10              535.7          521.0                    152.7              62.0
15              529.0          520.3                    125.0              65.0
26              418.0          526.3                     97.6              63.7
35              367.7          511.7                     89.0              63.7
48              415.7          500.7                     78.2              61.2
53              423.0          566.7                     72.8              62.9
66              334.3          537.3                     69.8              58.3
76              387.3          546.0                     65.2              56.0
85              306.3          546.0                     63.8              57.7
94              345.0          589.7                     59.2              49.9
100              579.7          556.7                     62.1              57.7

测试结果上看低压缩比的下性能比传统EXT4要好近3倍,高压缩比的情况下性能也与EXT4相当。

下面对EROFS做一个简单的剖析

1. EROFS on-disk layout

由于是只读文件系统,因此省略掉了inode bitmap和block bitmap这种区域节省空间。inode table是变长的,里面包含了inode结构体体和少量的内联文件数据。xattr和压缩特性都是可选的,未选择的情况下inode table空间将进一步缩小。

EROFS目前基本以4K大小为block,一个文件4K不对齐的结尾的部分会作为内联文件数据和inode head连接在一起,以提高page cache的利用和命中率。

2. EROFS 目录项结构

EROFS的目录项每项12字节,文件名被联合在一起放在目录项的后面节约存储空间,inode number用64字节大小保存。紫色部分是一个inode结构体的启始,可以简单的通过inode number * 32 + super block offset = paddr来得到inode结构体的分区物理存放位置,缩小了dirent结构体的大小,因为不用保存inode结构体的位置。

3. 文件压缩

EROFS支持LZ4压缩,节约空间的同时能保证性能。按maintainer的说法,EROFS支持的是一种叫做fixed output文件压缩形式,与之对应的是fixed-sized input文件压缩形式。

fixed output压缩据说可以提高压缩率,提高缓存利用率,节省内存消耗。

  • fixed-sized input压缩例子

fixed-size input就是总是以固定大小,如4K作为压缩输入,压缩输出是变长的。这样每4K的文件逻辑块对应的压缩后的文件块会小于或等于4K。如果文件随机访问block 2的话,物理块block 1和block 2的灰色部分的读取会造成写放大。

  • fixed-sized outpu压缩例子

fixed-sized output就是压缩后的物理块的大小总是4K。压缩率要比fixed-sized input高些。

华为EROFS文件系统浅析相关推荐

  1. 华为EROFS文件系统的性能测试

    为什么华为不直接使用squashfs,而是要另辟蹊径开发新的erofs. 1. Fio性能测试比较 测试环境:高通8核+eMMC. 测试对象:压缩erofs文件系统,压缩squashfs文件系统和标志 ...

  2. 浅谈华为EROFS文件系统的两个主要技术

    EROFS(Extendable Read-Only File System)是华为最近发布的一个新的Linux文件系统,它是一个基于ROM的只读文件系统.目前已经并入内核主线4.19分支.该文件系统 ...

  3. LWN: 华为EROFS文件系统

    点击上方蓝色"Linux News搬运工"关注我们~ erofs: promote erofs from staging 从LWN上看到,华为的Gao Xiang正在向文件系统维护 ...

  4. EROFS-华为超级文件系统浅析——(一)论文阅读

    EROFS文件系统浅析--(一)论文阅读 注:本文参考<EROFS: A Compression-friendly Readonly File System for Resource-scarc ...

  5. 华为linux磁盘空间,华为推出EROFS文件系统,磁盘性能大提速

    再过几天华为就要发布荣耀Play手机,其中最引人注目的就是华为将推出"很吓人"的新技术,从官方表述来看该技术将大幅提升华为手机的性能,号称是天上飞的感觉.这几天围绕这个吓人的技术有 ...

  6. LWN: 华为EROFS能应对好损坏的文件系统数据吗?

    点击上方蓝色"Linux News搬运工"关注我们~ On-disk format robustness requirements for new filesystems By J ...

  7. linux虚拟文件系统浅析

    linux虚拟文件系统浅析 虚拟文件系统(VFS) 在我看来, "虚拟"二字主要有两层含义: 1, 在同一个目录结构中, 可以挂载着若干种不同的文件系统. VFS隐藏了它们的实现细 ...

  8. linux最新内核4.19,Linux Kernel 4.19发布,初步支持Wi-Fi 6, 新EROFS文件系统

    原标题:Linux Kernel 4.19发布,初步支持Wi-Fi 6, 新EROFS文件系统 著名的内核维护者Greg Kroah-Hartman宣布了Linux 4.19内核的发布和下载,这是一次 ...

  9. (转)linux内核虚拟文件系统浅析

    转自http://hi.baidu.com/_kouu/item/4e9db87580328244ef1e53d0 ###### 虚拟文件系统(VFS) 在我看来, "虚拟"二字主 ...

最新文章

  1. 某头条程序员吐槽:前同事银行流水造假,背调也是找同事编的!工资翻了300%!自己老实巴交提供真实银行流水,却惨遭压薪!...
  2. md5加密用户登陆遇到的问题及解决办法
  3. .NET软件开发, 你应该知道 (整)
  4. 最小径集的算法_如何为数据集选择正确的聚类算法?
  5. linux中断响应时间太慢_linux+arm系统学习与基础学习
  6. fatal: unable to access 'xxxxxxxxxxxxx':The requested URL returned error: 403
  7. Wannafly挑战赛22 B 字符路径 ( 拓扑排序+dp )
  8. 16岁的蒙古摔跤手(狼行天下:追寻狼迹内蒙生态行第三天)
  9. 阿里的26款大神级的Java开源项目
  10. android websocket封装,Android WebSocket 方案选型OkHttp
  11. 大学生动漫网页设计模板 机动战士高达静态网页制作成品下载 HTML漫画网页作业带JS轮播图
  12. 前端解决跨域的九种方法
  13. Windows Embedded Webcast 2008年1月预告
  14. Web Application Projects的一个问题
  15. matlab分析矩阵与线性变换
  16. c语言资产管理系统,c语言图书资产管理系统.doc
  17. 无人机航拍VR全景图拍摄制作教程
  18. KVM虚拟化进阶--KVM设备高级管理
  19. python自动化交易_python 优矿自动化交易
  20. 华三,思科ACL命令解析

热门文章

  1. 汇编原理自我总结(四)
  2. 如何利用laragon框架制作一个简单的应用?
  3. 中国企业数字银行行业市场供需与战略研究报告
  4. 一夜之间!京东市值涨350亿,拼多多涨550亿,阿里涨1400亿
  5. 子网掩码的两种表示方法
  6. NOIP2017 Day2t3 队列
  7. php tp5 cms,thinkphpcms
  8. NLP入门(五)用深度学习实现命名实体识别(NER)
  9. GPIO口,232串口,USB接口,485接口等接口保护电路
  10. 动态规划-- 数组最大不连续递增子序列