微博逮獭科技 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有一个很小的用户基数,据用户说稳定性很好了。

相关推荐

封面图片

Linux Kernel 6.7 生命周期结束,开发者敦促用户升级到 Linux 6.8

LinuxKernel6.7生命周期结束,开发者敦促用户升级到Linux6.8著名的Linux内核维护者葛雷格·克罗-哈曼于4月3日周三宣布Linux6.7内核系列生命周期结束(EOL),并敦促用户升级到Linux6.8内核。Linux6.7内核于2024年1月7日发布,引入了对NVIDIA的GSP固件在Nouveau开源图形驱动中的支持、Btrfs文件系统的新功能、EXT4文件系统的改进、一系列网络增强功能,以及大量新的和更新的驱动程序,以提供更好的硬件支持。在仅进行了12次维护更新之后,Linux6.7内核系列现在被标记为EOL(生命周期结束),这意味着它将不再收到错误和安全修复。现在敦促使用Linux6.7内核的用户升级到Linux6.8内核版本。——

封面图片

OpenSUSE Tumblewed计划弃用过时的ReiserFS文件系统

OpenSUSETumblewed计划弃用过时的ReiserFS文件系统在20年前,SUSE曾是ReiserFS的主要支持者之一。在2006年之前,SUSE还默认使用ReiserFS文件系统。在2006年之后ReiserFS虽然不再是SUSE/openSUSE的默认文件系统,但依然为挂载ReiserFS文件系统保留了install-time选项和相关支持,但这种做法可能很快就会结束。由于LinuxKernel5.18正逐渐弃用ReiserFS并计划在2025年完全删除该内核代码,SUSE终于开始讨论删除对这个过时文件系统的支持。自从ReiserFS与SUSE/openSUSE或其他Linux发行版相关以来,已经有很长时间了。SUSELabsData&Performance主管JeffMahoney周五制定了逐步淘汰ReiserFS的计划。他的建议是立即从openSUSETumbleweed中删除ReiserFS软件包,并立即禁用ReiserFS内核支持。立即行动是针对滚动发布的openSUSETumbleweed,而在openSUSELeap/SUSELinuxEnterprise方面,显然在下一个主要版本发布之前不太可能看到任何变化。在openSUSETumbleweed上删除ReiserFS的计划可以在opensuse-factory上找到。PC版:https://www.cnbeta.com/articles/soft/1301891.htm手机版:https://m.cnbeta.com/view/1301891.htm

封面图片

知乎为什么会有 U 盘独个文件不可以超过 4GB 这种设定?wdhwg001 的回答

为什么会有U盘独个文件不可以超过4GB这种设定?wdhwg001的回答这个你眼中该被判刑的人叫MarcB.McDonald(马克·B·麦克唐纳),他是微软花钱雇佣的第一位员工,他在1977年写了一个用来让微软的BASIC语言运行在5.25英寸软盘里的文件系统,叫文件分布表(FAT)。当时的软盘里最大只能存放360KB的数据,是现在一张手机拍的照片的约十分之一。而且这种软盘在当时非常先进,是一年前IBM出的新玩意,当时大家都在用磁带或者长宽20厘米的8英寸软盘(容量80KB)。微软当时的卖点就是兼容,也就是说这个软盘文件系统和它上面的微软系统,以及系统之上的BASIC可以顺利地跑在各种电脑上,所以它很快就流行了,大家都在用,就像安卓可以跑在各种手机上所以很流行一样。流行了的东西很难推翻,所以当微软发现它有最大文件大小限制的时候多少有点晚了,微软不能让大家立刻换文件系统,就像谷歌不能重新发明一个不能用安卓app的新系统,然后让各个厂商和消费者都换掉一样。怎么办呢?微软同时走两条路:第一条路,给这个软盘文件系统小修小补,从FAT8升级到FAT12再到FAT16再到FAT32再到exFAT,每次系统大升级就推出一款,让人们逐步追上来,一步一步调整这个限制,顺便制造一些新系统的卖点。第二条路,直接用全新技术做一个新的文件系统,叫新科技文件系统(NTFS),牛皮吹起来,高稳定高性能企业化,面向服务器和专业人士,就可惜占用有点儿高,所以让企业先用,慢慢优化完善并且吸引普通人用。……

封面图片

有人用一个月编写了一个 Unix 克隆系统...

有人用一个月编写了一个Unix克隆系统...https://drewdevault.com/2024/05/24/2024-05-24-Bunnix.html作者描述了构建一个名为Bunnix的类Unix操作系统,该过程大约花费了一个月。Bunnix是一个单用户系统,具有单片内核,主要用Hare编写,并包含一些C组件。它支持基本功能,包括PCI设备、ext4文件系统、PS/2键盘和终端仿真器。作者从这个项目中学到了很多东西,包括文件系统缓存的好处、用于简单性的单片内核设计优于微内核设计的优势以及信号的复杂性。Bunnix目前是一个艺术项目,作者正在转向其他项目。但是,他欢迎社区为将来改进做出贡献。

封面图片

微软的Linux发行版终于加入了对XFS根文件系统的支持

微软的Linux发行版终于加入了对XFS根文件系统的支持到目前为止,这个用于微软内部各种目的的Linux发行版一直专注于使用EXT4作为根文件系统,但随着今天CBL-Mariner2.0.20230426的发布,他们现在也支持XFS。CBL-Mariner+XFS代码CBL-Mariner在它的根文件系统支持选项中一直相当有限,基本上都是EXT4,但现在XFS也可以工作。对CBL-Mariner的XFS根文件系统支持的兴趣似乎至少部分来自于微软的LinkedIn团队。自三月以来,微软的工程师们一直在为CBL-Mariner的安装程序、initrd的fsck.xfs和GRUB的XFS模块添加XFS支持,以便将其作为一个根文件系统的替代品。除了现在支持XFS作为根文件系统外,今天的CBL-Mariner更新使ISO安装程序支持串行控制台,增加了LLVM和Clang16软件包,转向较新的Linux5.15LTS内核点发布,并有一些软件包的更新--包括各种安全修复。本月微软CBL-Mariner2.0版本的下载和更多细节可通过GitHub获得:https://github.com/microsoft/CBL-Mariner/releases/tag/2.0.20230426-2.0...PC版:https://www.cnbeta.com.tw/articles/soft/1358085.htm手机版:https://m.cnbeta.com.tw/view/1358085.htm

封面图片

一种通用的高性能轻量级类STL的现代C++ B树

一种通用的高性能轻量级类STL的现代C++B树这个库是只有头文件的,所以除了包含头文件之外不需要额外的设置过程。此库在C++中实现了一个通用的仅head的STL类B树,包括支持将其用于内存映射磁盘文件和固定大小的分配器。B树是一种自平衡树数据结构,它维护排序的数据,并允许在对数时间内进行搜索、顺序访问、插入和删除。与其他自平衡二叉搜索树不同,B树非常适合于读取和写入相对较大数据块的存储系统,例如数据库和文件系统。

🔍 发送关键词来寻找群组、频道或视频。

启动SOSO机器人