点击上方蓝色“Linux News搬运工”关注我们~

On-disk format robustness requirements for new filesystems

By Jonathan Corbet

译者按:在LWN这篇文章发表后的讨论中,疑似Gao Xiang(用户名hsiangkao,LWN付费订阅用户,不知道是自费的还是华为pay的,赞)也回应了大家的问题,展示了EROFS作者一方的积极态度,非常尽责。欢迎大家到lwn.net围观。

"Extendable Read-Only File System" (即EROFS)是由Gao Xiang于2018年五月第一次发布出来的,后来合入了Linux 4.19的staging tree。此后EROFS一直不断进行完善,作者现在认为是时候从staging tree里拿出来作为kernel的正式支持的众多文件系统的一员了。不过看起来还有最后一个障碍:有内容损坏的磁盘文件系统镜像是否还依旧稳定可用。这也引出了一个有意思的问题:新的文件系统具体需要达到什么程度的稳定性水平?需要比目前正大范围使用的文件系统要容错性更加强吗?

正如它的名字所说,EROFS是一个只读文件系统,由华为开发,目的是用在Android系统上。EROFS跟目前在用的各种只读文件系统的一个主要差异是在性能方面,因为它使用了一个特别的压缩算法来创建固定长度的存储block,据作者说这样就能把对压缩过的数据的随机访问尽量优化,目标是做尽量少的I/O和解压缩动作。详情可以查看7月份发布的USENIX论文。

Gao最近提过几次希望能把EROFS移出staging状态,最近一次是8月17日发出的邮件:

过去一年里,EROFS作为一个staging状态的驱动,得到众多开发者的帮助,有了很大改善,也经过很多自测试,还有经过了华为内部用户的大量日常使用验证,已经成功的作为EMUI 9.1的一部分发布到所有市面上的华为智能手机中了,目前已经能证明足够稳定,应该结束staging状态了。

总体来说,mailing list上没有多少反对意见。在审查代码的时候,Richard Weinberger注意到一点,就是代码里对磁盘上读出来的数据都是完全信任拿来就用的,一般不检查这个数据是否合理。然后他很快就创造出一个特殊的磁盘内容把kernel引入死循环状态了,这倒是一个彻底的read-only了(作者意指系统读完就死)。这个问题很快被修复了,但是在此之前已经出现了一个争论,就是假如文件系统映像文件被恶意破坏之后,那么kernel起来之后文件系统是否需要保证稳定可靠,尤其是对EROFS这种希望能加入Linux的新文件系统。

大家都赞同希望文件系统能在哪怕面对一个恶意(或者只是有点损坏数据)文件系统映像的时候,仍能保证正常工作。只有达到这个目标,才有可能允许非特权用户(unprivileged user)来mount文件系统而不担心会导致整个系统被破坏。不过Ted Ts'o也指出,目前kernel里面已经在大量使用的文件系统,例如ext4或者XFS,也都没有达到这个目标,因此,如果我们对一个新文件系统提出这么高的要求,那么似乎是针对它们额外提高了门槛:

如果我们对EROFS这样的文件系统提出了更高的标准,甚至是ext4, xfs, btrfs都没法达到的标准,这样不太公平。咱们似乎有点倾向于对新文件系统提出更高的标准,甚至有些是很难达到的。而在我看来,给Linux加一个新的文件系统不应该是一个什么大事。

针对EROFS来说,正如Chao Yu指出,它所针对的应用场景其实不太在乎这种可靠性。Android系统映像文件如果用EROFS文件系统来发布的话,通常都会经过例如dm-verify这一类的验证流程,因此文件系统代码本身其实处理的都是签名并验证过的文件系统数据。尽管如此,EROFS开发者也赞同这类bug也应该得到积极分析和修复。

看起来针对恶意文件系统映像的可靠性处理,在各个文件系统的开发者看来观点也各不相同。对于ext4里面存在的类似bug,Ts'o回答说“虽然我会去解决这类问题,不过不是高优先级的工作。”他认为XFS开发者的看法也会类似。Christoph Hellwig很不赞同,他说XFS开发者会很重视修复损坏文件系统镜像场景下的问题,“虽然我们确实没法保证没bug”。Eric Biggers也认为这些可靠性问题是必须要处理的,“不过我理解我们之前这方面做的不够好,所以我们不应该用这样一个不公平的高标准来阻止一个新文件系统的合入”。

Hellwig的观点更加强烈,他觉得这个标准非常应该用在新文件系统上:

“我们没法强制什么人来修复旧文件系统的bug,不过我们能够用更高(一点点)的标准来阻止新的文件系统的合入。这是让文件系统部分的平均质量提升的唯一办法。就像代码风格格式一样,我们没法一下子修复所有旧的代码,但是我们通常都会确保新合入的代码是按照更高标准的。”

不过他没说清具体这些更高标准具体包含哪些,是不是应该要包含"在用了损坏的文件系统映像的情况下也要绝对可靠"。不过开发者看起来希望在这方面要有些作为了。就像Bigger说的:“如果开发者做得很仔细的话,通常来说代码都是很可靠的,并且他们也愿意修复这些报出来的问题,这已经就是咱们所能期望的最好结果了。”

EROFS能否满足了这个“看起来稳定”的标准?现在大家还没有达成一致。从另一个角度来说,大家也都相信EROFS开发者愿意尽快修复他们报出的bug。所以对于把EROFS从staging转为正式kernel支持的文件系统这件事来说,估计很快就能达成了。除非还有一些严重问题被报出来,否则如果只是当前这点小麻烦的话,应该很快能解决的。今后文件系统开发者都需要注意,reviewer会更加留意这类问题(针对磁盘上数据如果损坏情况下文件系统代码也要可靠)。

全文完

LWN文章遵循CC BY-SA 4.0许可协议。

极度欢迎将文章分享到朋友圈

长按下面二维码关注:Linux News搬运工,希望每周的深度文章以及开源社区的各种新近言论,能够让大家满意~

LWN: 华为EROFS能应对好损坏的文件系统数据吗?相关推荐

  1. LWN: 华为EROFS文件系统

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

  2. 华为EROFS文件系统浅析

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

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

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

  4. 消除数据孤岛,华为云DRS让一汽红旗ERP系统数据活起来

    本文分享自华为云社区<消除数据孤岛,华为云DRS让一汽红旗ERP系统数据活起来>,原文作者:心机胖. 数字化时代,数据成为新的生产资料,在经济文化生活中扮演着越来越重要的角色.买票你需要查 ...

  5. 华为云FusionInsight助力宇宙行打造金融数据湖新标杆

    摘要:工行采用了华为云FusionInsight MRS大数据存算分离方案,实现了大数据平台与OBS对象存储服务的对接,将原有的HDFS数据无缝迁移到OBS上.在保证性能的前提下,实现了计算与存储独立 ...

  6. 【华为云技术分享】上亿条数据,如何查询分析简单又高效?

    正值618大促,小张遇到了一个棘手的问题,需要在一周内将公司近1年电商部门的营收和线下门店经营数据进行联合分析. 这将产生哪些数据难题呢? 数据孤岛:电商部门的数据存在数仓A.门店经营收入数据存在数仓 ...

  7. 案例:Oracle dul数据挖掘 磁盘损坏dul提取数据文件中表的数据及l

    通过使用Oracle DUL工具提取损坏磁盘里的数据库文件中的表及lob字段中内容 在有次8i的库恢复中,因为硬盘损坏导致几个表出现很多诡异性坏块,尝试使用dul对其进行挖掘数据,当时使用dul 9 ...

  8. 深入跨国互联网业务场景,看华为云数智融合元数据如何打破“数据墙”

    大数据查找使用面临的挑战 企业的数据通常有两种类型:作业数据和分析数据.前者在业务运行时使用和生成,支撑业务运转:后者在运营时使用和生成,支撑企业做商业决策.前者是后者数据的来源. 图表 1从作业数据 ...

  9. 硬盘损坏如何恢oracle,硬盘损坏后恢复数据的几种方法

    一.硬盘的分区 对于你手中硬盘来说,首先要做的事情就是分区了.硬盘分区是否合理直接影响到以后工作的便利性和数据的安全性.我们最常见到的分区表错误也是硬盘的最严重错误,不同错误的程度会造成不同的损失.如 ...

最新文章

  1. 大数据架构和模式(一)——大数据分类和架构简介
  2. mysq 开启慢查询日志
  3. .NET 6 HotReload的试用
  4. ssh 看apache_使用Apache KeyedObjectPool的ssh连接池
  5. svn 修改文件的可执行权限
  6. linux中权限的介绍,Linux文件权限的入门介绍
  7. AngularJS-compareDirective.js 验证指令
  8. centos使用python_Centos7使用Python3
  9. 字体系统之字体粗细(CSS、HTML)
  10. Matplotlib常用绘图示例
  11. mysql中数据导出到json文件的读取办法:
  12. c语言随机数加密,TC伪随机数加密解决方法
  13. Qt基本控件及三大布局
  14. Convert Nero's nrg file to iso file
  15. 上海交通大学教授金耀辉:AI在智慧法院中的应用
  16. 快速云:管理企业中云蔓延的7个技巧
  17. linux 查看裸设备与lv,LINUX 如何查看裸设备
  18. pmap anon 内存泄露
  19. 2021-11-27 2021年施工员-装饰方向-岗位技能(施工员)考试题及施工员-装饰方向-岗位技能(施工员)考试题库
  20. pandas 根据筛选条件对指定excel列进行筛选

热门文章

  1. 基于 SSM 框架的学生在线选课系统设计
  2. Web自动化css选择器定位法实现
  3. Web:选择器的种类
  4. python 边边角角
  5. group by使用
  6. 体育计算机培训心得体会,关于体育培训学习心得体会5篇
  7. 超详细【Uboot驱动开发】(一)uboot基础了解
  8. 疫情过后,房租上涨的速度比温度上升还快?这让实体店怎么活!
  9. ASP.NET源码网站
  10. 近视后有什么办法可以恢复吗