微博逮獭科技 22-5-23 21:04
逮獭科技22-5-2321:04#btrfs始于一个copyonwrite的简单想法,这个概念现在前端也非常熟悉,immutable嘛,把文件搞成文件块链表,关闭时创建新版本,写入设计尽可能具有局域性而不是大范围的移动指针读写,好的文件结构设计应该如此,log,数据库,等等。你能在phoronix上看到btrfs的第一次mainline的时间是2009年。后来脸书突然发现自己需要一个文件系统。最好能像zfs那样有一些时髦特性,但不要像zfs那样消耗系统资源,当然,消耗资源越少越好,但文件或文件系统的版本管理是重要的。他们选择了btrfs,并且把主力开发人员ChrisMason招至麾下。这是2013年前后。btrfs-send是这个文件系统的招牌特性,这个特性的稳定成熟就在这个时期。这里可以向不太熟悉文件系统的朋友介绍下它为什么重要。在真正「热」的存储系统中,没有任何一个时刻所有文件都close了,给文件系服务一个「恰当」的时间点snapshot整个文件系统的状态,比如做backup,以后恢复回来。这是为什么文件系统的版本管理要在blocklevel做的原因。在blocklevel,如果文件系统实现允许,可以找到一个时间点flush所有尚未写入的缓存,然后标记一个diskimage意义上的snapshot,这不意味着所有的文件都是完整的,但具有版本管理的文件系统,它至少有一个文件的上一次副本;而且如果snapshot实现的足够轻量,就可以高频snapshot,这样即使是那些在打开写入的文件,也有很大几率恢复出足够好的可用版本;这是故事的一半。故事的另一半是,你还得足够高效的把每一次的修改copy出来,这个copy的IO次数越少越好。btrfs-send就是在底层做这件事,你调用API,它一次性的把两个版本之间的diff拖出来,通常走网络发送到另一个机器上,这样实现增量备份,要复原时把一长串Delta一个一个patch回来。这种文件系统的用途不难想象。btrfs算穷人版的zfs,一个资源消耗有限的子集。再后来一个时期,facebook需要的功能都做得不错了,包括性能和稳定性,但是社区里各种cornercase的性能和稳定性问题层出不穷,Facebook没有全面维护,很多bug修复缓慢,工具也经常有问题。群晖就在btrfs这种质量时给开放给用户的,它也没什么好办法。再后来一个时期btrfs突然迎来华人维护者生力军,你仔细看开发者邮件地址,会发现他们都是来自南京富士通。不知道富士通在什么产品上用了btrfs,雇佣了不少年轻人写btrfs驱动。在很大意义上也说明了btrfs的维护不需要superengineer,只需要永远站在那儿为代码质量负责的人。当然,人都是要吃饭的。后来可能富士通不再为用户提供基于btrfs的产品了。经过一个时期的活跃,各种拍bug,维护又回归沉寂。现在btrfs维护不温不火。Kernel里常看到patch,但针对的usecase越来越罕见;说明它作为一个文件系统,主要目标都大体完成,趋于稳定。但不是说它就完美了,实际上btrfs错过一个非常好的机会,就是Google开发人员曾经在mailinglist里问btrfs的加密能力如何,得到的答复是btrfs没有特殊的加密设计,仅支持Kernel的block层的通用加密框架。Google对这个设计不满意,btrfs错过了成为Android的rootfs的宝贵历史机会。——————说到btrfs,还有一个人值得提及;这个人名字叫KentOverstreet,肯特过街,很好记。KO象Mason一样幸运被大公司招进去了,他去了Google,但不幸的是,Google没有给KO大展拳脚的机会,即使他是bcache的作者。KO非常熟悉Kernel里blocklevelcache怎么做,框架是通用的,可以用ssd加速任何文件系统,也包括LVM。而且KO也对copyonwrite感兴趣。他做了一个叫bcachefs的文件系统,有btrfs里最重要的功能部分,代码只有btrfs的一半左右,据说结构上比btrfs好很多。bcachefs解决了btrfs的一个重要问题,就是后者读写时不区分ssd还是hdd,这对大型存储单元来说可能没什么意义,但是对个人用户来说这可是宝贝啊。后来KO离开了Google,自己一个人维护着bcachefs。应该是日子经常过的紧巴巴的,因为曾多次为bcachefs募资,募资目标,以中国码农收入标准去看都算少的,还经常募不足。但他还是一个人维护这个文件系统。你要是有一段时间觉得自己电脑上rootfs的稳定性不那么重要(指经常备份),可以考虑支持一下KO,装一个bcachefs文件系统并且把遇到的bug或者性能问题告诉他。bcachefs有一个很小的用户基数,据用户说稳定性很好了。
在Telegram中查看相关推荐
🔍 发送关键词来寻找群组、频道或视频。
启动SOSO机器人