2019-10-09 12:38:04
来 源
中存储网
文件系统
2018年华为工程师分享了新的Linux只读文件系统EROFS,2019年正式发布,EROFS超级文件系统会将随机读性能增加20%,采用了先进的压缩算法,可用空间多2GB,系统采用只读设计,系统更加安全。

EROFS文件系统简介

2018年5月31日,华为工程师Gao Xiang在 开源社区 分享了一套新的Linux只读文件系统EROFS (Extendable Read-Only File System,暂译为扩展的只读文件系统)。

华为EROFS文件系统介绍,一种运行在安卓手机上的Linux只读文件系统

华为EROFS文件系统介绍,一种运行在安卓手机上的Linux只读文件系统

EROFS仅仅处于比较早期的开发阶段,设计目标区别于现存只读系统的点在于, 采用了改进的压缩算法,保证了节省空间的同时还提高了性能和速度。

工程师对比了一套Linux服务器和麒麟970平台在使用EROFS和EXT4(ext4)两套文件系统执行压缩操作时的连续/随机读取数据,服务器平台的连续读取并不是很优秀, 但是随机数据一直对ext4有非常明显的优势,最高超过了500%。

在麒麟970的安卓平台上,则是EROFS在随机和顺序读取数据始终占据明显优势。

2019年4月正式发布

华为除了发布了方舟编译器之外,还发布了超级文件系统,根据华为的说法,EROFS超级文件系统同样已经开源,并已经并入Linux内核主线,将会在4.19版本发布,根据华为的说明EROFS超级文件系统会将随机读性能增加20%,采用了先进的压缩算法,可用空间多2GB,系统采用只读设计,系统更加安全。

官方介绍称,2016年搭载EMUI 4.1的华为P9,首次在业界规模商用F2FS文件系统,替代了传统的EXT4文件系统,令用户分区的文件读写流畅度提升20%;而超级文件系统(EROFS)采用专利压缩算法加持,使得系统分区随机读性能平均提升20%,并减少14%系统空间占用。以华为P30 Pro 128G为例,系统初始空间相比Ext4节省2GB,相当于用户可以多存1000张照片或500首歌曲。

HiAI开放能力不断增强,支持算子数量增加至147算子,API上线数量增加33个API,接入原子化服务超3200项,已经有很多合作伙伴利用HiAI开放平台给消费者提供了很多创新体验,通过开放的全球生态系统,1400+生态合作伙伴和560000+的开发者,用户将会获得更多更丰富的智慧场景体验。

最后,华为表示EMUI目前已经支持77种语言,服务216个国家/地区,拥有庞大的4.7亿日活用户,

EMUI 9.1被定义为质享生活,AI 再进化,引领智慧生活;性能革新,诠释畅快体验,EMUI 9.1 全新主题,以瞬间美学为设计灵感,将颜色碰撞和丝带飘舞的刹那之美镌刻成永恒画面。系统图标也焕发新生命,以微写实的方式,融入自然生活元素,将关键信息直接展示,简约明晰,神形兼备,带给你更统一、舒适的视觉观感。

EMUI 9.1使用了独创的方舟编译器使得系统流畅度提升24%,系统响应性能提升44%。此外第三方应用使用方舟编译器后,操作流畅度提升高达60%,超级文件系统EROFS,随机读取速度平均提升 20%,让你额外拥有可存储 1000+ 张图片或 500+ 首音乐的私人空间;天然只读设计,隔绝第三方改写,让你的系统更安全。

目前项目进展

目前已经并入内核主线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

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

1. EROFS on-disk layout

EROFS on-disk layout

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

EROFS文件系统

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

2. EROFS 目录项结构

华为EROFS文件系统介绍,一种运行在安卓手机上的Linux只读文件系统

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压缩例子

华为EROFS文件系统压缩

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

fixed-sized outpu压缩例子

华为EROFS文件系统介绍,一种运行在安卓手机上的Linux只读文件系统

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

部分内容参考来源:https://blog.csdn.net/scnutiger/article/details/84929104

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。