LWN: Zoned block device的专用文件系统

栏目: 后端 · 发布时间: 5年前

内容简介:全文完

Filesystems for zoned block devices

By Jake Edge

May 21, 2019

LSFMM

Damien Le Moal和Naohiro Aota,在2019 Linux Storage, Filesystem, and Memory-Management Summit (LSFMM)峰会上,一起介绍了一下zoned block devices相关的工作。这类device内部有多个不同的区域,每个区域有不同的特性。例如有的区域只能按顺序来写(write sequential order),有的区域就是可以正常随机写入。zoned block devices起源于shingled magnetic recording(SMR,叠瓦式磁记录盘)设备,当初发明出来是为了增加硬盘的存储空间(不过要牺牲一些易用性)。

Le Moal的这个话题,主要关注于zoned block device该用什么文件系统。目前唯一支持zoned device的文件系统是F2FS,不过支持仍然不完善,还在进行bug fix以及补充功能。也有人在Btrfs里面增加相关支持,Aota比较熟悉这部分。

Btrfs

为了在Btrfs里面支持zoned block device,需要对每个区域对应的"device extent"结构都仔细配置。如果extent size比其中某个区域的size小,那么就意味着会有空间浪费掉。更大的extent值能支持更多区域。Extent是按顺序分配的。需要增加内部buffer,来对write request进行排序,这样能确保满足此区域的write sequence的要求。

LWN: Zoned block device的专用文件系统

Btrfs里已经支持了多种磁盘管理模式,包括单磁盘,DUP,RAID0,RAID1,RAID10。目前不支持RAID5和RAID6,因为太大的SMR磁盘不适用那些RAID模式,因为在某个磁盘损坏的时候,恢复数据需要太多时间(rebuild time )。

Aota指出目前还有两个功能还需要更多时间才能支持。“Device Replace”基本完成了,不过有些情况下还会出现一些软件逻辑竞争的corner case。还需要支持fallocate(),因为很难实现在需要按顺序写入的趋于上预先分配空间,可能需要在内存里来做preallocation来变相支持这个功能。Chris Mason觉得fallocate()不太重要,对copy-on-write(CoW)文件系统上来说这不是个必须功能。

Aota认为,今后NVMe Zone Namespace (ZNS) 也需要支持。在支持ZNS的设备场景,根本不支持random write(随机写入)。也就是说superblock也需要copy on write。这样会保留两块区域给superblock,文件系统会在两块superblock区域之间来回切换来解决不能随机写入的问题。

Ric Wheeler问了一下具体来说RAID rebuild在RAID5和RAID6上需要多长时间。Le Moal回答道,需要一两天的时间。Wheeler觉得这个时长应该还是可以接受的,尤其是RAID6的场景。他觉得这些RAID场景还是挺有必要支持的。RAID6 rebuild I/O操作可以用低优先级进程慢慢做嘛。不过Mason觉得RAID5/6的支持也不着急,今后再说。尽量先把当前版本的支持合入为好。Le Moal计划尽快把patch发出来review。

ZoneFS

ZongFS是一个新的文件系统,用来以最简单的方式把zoned block device暴露给用户使用。因此,在mount之后,会在mount目录下面针对每个区域都展示成一个单独的文件,分别位于/conventional (此目录用于管理可以随机访问的区域)和/sequential (此目录是管理只能顺序访问的区域)两个目录下。每个zone对应的文件都会用zone number来作为文件名。

ZoneFS管理方式下,这些zone文件都不能更改、删除、更名,也不能新建文件。对sequential zone来说,只能支持length为0的truncate()和ftruncate()操作,会把zone的写入指针重置回本区域的最开头的地方。磁盘上也不会存文件系统的metadata(辅助信息),而write pointer(写指针)的位置就是当前的sequential file的文件大小。

ZoneFS不是特别强大,不过还是很有用的。应用程序虽然可以直接对block device设备节点做文件操作来达到类似的功能,不过应用开发者一般不太喜欢这样做,觉得不安全。对RocksDB和LevelDB等应用程序,ZoneFS就足够满足需求了,因为他们本身就是基于很多sequential data structures来操作的。

此外,ZoneFS还能用于支持ZNS。不过Ted Ts'o指出,NVMe开发者会担心底层implicit进行的对每个zone的open和close操作可能会影响文件访问性能。这样的话,Btrfs文件系统设计者此前并没有考虑过explicit open和close操作,今后可以考虑一下这个需求了。没有什么其他反对意见,因此Le Moal打算尽快发出ZoneFS patch做review了。

全文完


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Inside the C++ Object Model

Inside the C++ Object Model

Stanley B. Lippman / Addison-Wesley Professional / 1996-5-13 / USD 64.99

Inside the C++ Object Model focuses on the underlying mechanisms that support object-oriented programming within C++: constructor semantics, temporary generation, support for encapsulation, inheritanc......一起来看看 《Inside the C++ Object Model》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试