划船设备上的BTRF

2021-04-22 11:49:22

LWN订阅者已为您提供以下订阅内容。成千上万的订阅者依赖LWN了解Linux和自由软件社区的最佳新闻。如果您喜欢本文,请考虑订阅LWN。感谢您访问lwn.net!

ZonedBlock设备具有一些不熟悉的特征,从储存密度更高的名称中制作的umcompromises。它们是DividedInto区域,其中一些或所有这些都不支持Writeperations的随机访问。相反,这些"顺序"区域只能从第一个块写入最后一个块。此约束对文件系统构成了新核,通常使用假设设计,存储块可以按任何顺序写入。因此,Linux中主流文件系统中的Zoned-Device支持不是惊喜,这一直略微速度;但是,即在Linux 5.12中支持划分的块设备到BTRFS的增加。

覆盖分区驱动器中的数据的唯一方法是将写入指针Toreset ToreSet TORESET到区域的开头,它立即启动该区域的整个内容。另一方面,完全支持随机readaccess。许多分区设备还提供一些"常规"支持随机读写操作的区域。首先以ShingledMagic录制(SMR)驱动器形式看到的设备。内核具有低级别的支持。使用闪存存储的分区设备也存在;他们对减少硬件复杂性的交易性。这些设备以分区命名空间(ZNS)命令集的形式添加了Tothe NVME标准,它自5.9版本以来已经在Linux中支持。在Linux文件系统中支持Zoneddrives的多年来一直在发生工作。复制写入文件系统应该非常适应,因为它们旨在避免覆盖Datablocks。在现有的Linux文件系统中,F2FS已经支持的设备,并且允许在此类设备上进行正常操作(但是驱动器提供至少一个传统区域的驱动器)。 Inaddition,Zonefs,Zoned设备的特殊文件系统包含在5.6内核中.USING ZONEFS需要为此提供的应用程序,因为文件系统不支持创建正常文件。但是应用程序类型的应用程序确实适合模型,但是,用于使用日志结构数据的示例。

近年来,在更多主流文件系统中对分区设备的支持也取得了进展。这是Btrfs的情况,它在自2019年以来,BTRFS支持的作品中的划分器件,当时Noahiro AOTA在2019年的Linux存储,文件系统,和管理峰会上呈现了这项工作的Thestatus。他开始工作以来,并最终已经看到第15次修订合并为5.12。

支持分区设备需要更改文件系统结构在磁盘上组织的方式,因为它通常不可能覆盖现有数据。一种含义是,随着时间的推移而改变的数据结构必须放在传统区域中或以不需要它们处于单个固定位置的方式映衬。在BTRF中拥有固定位置的唯一磁盘结构是超级块,这可能有两个副本。在分区器件的情况下,易于解决方案应该需要用于Thsuperblock及其副本的传统区域的可用性。但是,第二副本Fallsinto在许多现有设备上的顺序区域;此外,还应支持任何不应支持传统区域的设备。出于这些原因,AOTA使用双倍实现基于日志的超块作为循环缓冲器,以保护AGST电源故障。文件系统将更新的SuperBlockS顺序写入第一个区域,并在填充文件时切换到第二个区域。然后它可以安全地重置第一区域。

需要更改的另一个结构是树日志。此日志的块与其他类型的MeteData块一起分配;由于树日志在不同的时间内写入Metadata,因此该方法将生成非顺序写入。解决方案将树木日志块与其他元数据分开;然后可以单独编写每个数据流并顺序写入。

在较低级别的情况下,其他更改影响BTRFS块(也称为块组),这是BTRFS数据结构,该数据结构在磁盘上进行一系列数据块。在分区BTRF的情况下,默认块大小被更改,以便它与区域大小对齐。块中的块分配也会更改以满足划分的区域:从块的开头变得顺序。如果块在分配指针背后被释放,则会通过进一步的分配估计。因此,块将始终按顺序扩展。只有在块中的所有块被释放时,将才能允许特定块的区域重用(重置)。

除了数据布局修改之外,BTRFS WILLWRITE使用&#34的顺序区域;区域附加"命令(由req_op_zone_appendblock-device操作)上的底层设备而不是使用SimpleWrite。此命令需要一个区域进行操作,但不需要摇摆符;它返回书面块的地址。这意味着,这是一种结构是写作的命令无关紧要,并且不需要块组锁定; 4KB随机写入的ATA在求职信中报告的性价比改进是36%。

使用补丁集,BTRF本地支持使用ZnSF功能性的NVME驱动器,SD驱动程序为SAS和SATA硬盘驱动器提供ZONED命令集的仿真。

目前的分区设备支持显示了许多限制和辐射进一步的改进。高级列表将显示在5.12的Mergerequest中,并在求职信中完成一个。

用户可能面临的第一个问题是5.12Supports只有单个BTRFS配置文件。这意味着不支持数据复制和RAID等功能。支持其他简档的基因尤为需要处理不同区域中相同数据的分离地址。求职信中的示例Aotagives是DUP配置文件(重复数据)。在这种情况下,文件系统发出Append命令,两个区域可能会响应不同的偏移。

管理员也应该也意识到,如果卷包含多个分区磁盘,则所有磁盘的区域尺寸应该是Chesame。

目前的BTRFS-PROGSRELEASE尚不支持划定设备;一个与之支持的分支,在AOTA' srepository。我在SATA驱动器上沿着非分区的一个划分的BTRFS文件系统测试了一个ZONED BTRFS文件系统。被仿真。要创建一个分区的BTRFS文件系统,需要使用AOTA' s版本的mkfs.btrfs与-o zoned选项,还要强制数据和元adatainto the"单"轮廓:

这两个文件系统最多的方式工作。性能也大致相同。 BTRFS功能利用类似的快照在分区和非分区设备上也同样运行。唯一的区别可能会注意到Zonedfilesystem上的空间使用率更高,如预期的那样。分区块设备的行为不同于传统的设备,因此Sothere毫不奇怪文件系统需要将布局更改为支持设备,并且开发花了很多月份。对于BTRF,现在存在TheBasic支持,因此感兴趣的用户可能会测试它。但是,此支持列表限制,我们可以期望在即将到来的内核版本中添加了附加功能。

( 登录后发表评论)

>是" nocow&#34的文件;属性集支持?为了我的理解,“Nocow`”在BTRF中类似于暗示,并以尽力而为的基础。例如,您可以正常创建Nocow文件的快照。

Nocow属性是粘性的,不是一个提示。那个Nocow文件的快照编写有效,因为首先写入新快照上的Nocow文件将执行一次母牛,原始文件不受影响。

所以,技术上,“Nocow`被侵犯了一次。好的,我假设这个原则扩展到BTRF的其余操作。

该标志意味着复制文件应该主动完成,而不是点击,它不会完全排除副本。这将使它成为DRM(在贬义的感觉中,而不是图形一个)。

我希望BTRF在Flash / SMR上的区域接口上更有效地工作,而不是在' s的块接口上由FTL(或它' s smr等效)映射到闪存和闪存等区域的硬件SMR HDD。但是,我猜,在SATA块接口上模拟的Zns上的BTRF可以消除任何此类优势,所以它''修补程序在该设置中使用它没有放缓的良好结果。

我发现区域大小和amp;数量往往缺少产品'数据表,原因我可以' t理解。它可以从设备查询,但当然您需要一个要做。其他回复您的评论是对正确的。对于源,请参见本文档中的表2:https://www.researchgate.net/publication/317393826_perfor ...

"使用补丁集,BTRFS本地支持使用ZNS功能的NVME驱动器,SD驱动程序提供用于SAS和SATA硬盘驱动器的分区命令集的仿真。" 仿真? 不是真的,除非你在谈论区域附录。 SCSI(T10)有自己的标准,用于如何与称为ZBC的划分设备交谈。 ata(t13)的同意多为zac。 这两种标准都是预测ZNS。 进一步的nvme' s多个队列don' t保证写字排序,它给出了划分存储一个真实的(仅限NVME)头痛。 所以他们(一个大磁盘公司)必须发明" zone附录" 在其中,您可以在其中告诉您想要编写数据的存储,并且完成存储设备会告诉您写入的位置。 最好不要在该完成时获得运输错误。