acm-header
登录

ACM通信

实践

一个自己的文件系统


一个完全属于它自己的文件系统,说明

来源:Joel Ormsby

回到顶部

在过去的五年里,闪存从一种很有前途的加速器,7它在数据中心中的位置仍然不确定,转而使用一个已建立的企业组件来存储关键性能数据。49随着固态设备(SSD)的出现,闪存以一种优化了兼容性的形式出现——只要用SSD取代硬盘驱动器就能获得更好的性能。但是ssd使用的NAND闪存的特性与它们经常取代的硬盘驱动器中的磁性介质的特性有很大的不同。2虽然ssd已经在各种用途中变得更加普遍,但业界才刚刚开始设计包含闪存细微差别的存储系统。由于它摆脱了兼容性的限制,因此在性能、可靠性和成本方面可能会有显著的改进。

NAND闪存的本机操作与传统块设备所需要的操作有很大的不同。闪存转换层(FTL),顾名思义,将块设备命令转换为闪存上的操作。这种翻译绝不是微不足道的;粒度和基本操作都不同。SSD控制器在垃圾收集、写放大、磨损均衡和错误纠正等子专业方面存在竞争。2现代ssd所使用的算法正变得越来越复杂,尽管它们必须支持看似简单的块读和块写操作。块设备的一个非常常见的用途是承载文件系统。当然,文件系统执行它们自己类型的转换:从目录层次结构中的文件创建、打开、读取和写入到阻塞读取和写入。文件系统操作并没有与生俱来的特性使它们能够被块接口很好地服务;它只是持久存储的主要标准,并且已经存在了几十年。

将文件系统翻译置于flash翻译之上是低效的,而且会影响性能。复杂的应用程序,如数据库,长期以来再次绕过文件系统,一层又一层地获得最佳性能。抽象层之间的信息丢失会影响性能、寿命和容量。文件系统可能“知道”某个文件正在被复制,但FTL将每个复制的块视为独立的和惟一的。文件系统也会针对旋转磁盘的物理现实情况进行优化,但是当旋转速度最快的扇区根本不旋转时,将数据放在扇区上是没有意义的。卷管理器是一种将磁盘集合作为块设备呈现的软件,它在基于磁盘的存储中导致了类似的效率低下,使来自文件系统的信息变得模糊。

现代文件系统,如任意写入文件布局(WAFL)5ZFS和b -树文件系统(Btrfs)1整合了以前分配给卷管理器的职责,并重新组织了抽象层。由此产生的系统效率更高,也更容易管理。当操作以毫秒计时,优化不佳的软件很重要;对于以微秒计算操作的闪存设备来说,这一点更为重要。为了充分利用闪存,用户需要专门为NAND闪存的本机操作和功能设计的软件。

回到顶部

ssd的状态

多年来,ssd几乎都是专门用来无缝替代硬盘驱动器的;它们不仅支持相同的块设备接口,而且具有相同的外形因素(例如,2.5或3.5英寸的硬盘驱动器),并使用相同的协议(例如,SATA、SAS或FC)进行通信。这有点像用磁带适配器将iPod连接到汽车音响;现在30针的iPod连接器在新车上似乎比磁带机更常见。最近,SSD已经开始摆脱旧的兼容性限制:一些笔记本电脑现在使用自定义的形状因数SSD来紧凑,许多供应商生产与pci连接的SSD来降低延迟。

大多数ssd仍然模拟硬盘驱动器的块接口:读写任意系列的扇区(512字节或4KB区域)。NAND闪存的本机操作非常不同,因此产生了一些实质性的挑战。读和写发生在页面的粒度上(通常在8KB左右),需要注意的是,写只能发生在被擦除的页面上,而页面只在32-64 (256KB-512KB)的块中被擦除。虽然详细描述FTL如何从flash原语表示块接口超出了本文的范围,但很容易了解它的复杂性。考虑一个块的情况,其中所有的页面都已写入,设备接收到一个操作,逻辑上覆盖一个页面的内容。超光速可以将数据块复制到内存中,修改页面,删除数据块,然后整个重写它,但这将非常慢,甚至比硬盘驱动器还要慢!此外,每次写入或擦除操作都会损耗NAND闪存。根据芯片的类型和质量,目前芯片的额定运行周期为50050000次,而随着芯片本身的缩小,这个数字也在缩小。阻塞管理的原生方法会迅速消耗媒体;更严重的是,频繁覆盖的区域会先于其他区域耗尽。 For these reasons, FTLs use an indirection layer that allows data to be written at arbitrary locations and implements wear leveling, the process of distributing writes uniformly across the media.2

回到顶部

缩小差距

构成超光速文件的算法非常复杂,但并不比现代文件系统的算法复杂。事实上,FTL和文件系统有很多共同之处。两者都跟踪已分配区域与空闲区域,都实现了逻辑到物理的映射,都将一个操作集转换为另一个操作集。较新的ftl甚至包括诸如压缩和重复数据删除等设施,但这些仍然是现代文件系统的主要特性。ftl和文件系统通常是独立构建的。对FTL和文件系统的职责进行大规模集成和重组的想法代表了一个经典的难题:谁将为不存在的硬件编写软件,谁将构建硬件来支持迄今为止尚未编写的软件?

大多数SSD供应商都专注于批量市场,在这个市场中,主机上需要一个新的文件系统将是一个障碍,而不是优势。SSD供应商可以通过提供不同的接口或开放他们的固件来支持更广泛的文件系统开发社区,但是没有明显的和引人注目的文件系统,就没有什么动力了。唯一的例外是Indilinx参与了OpenSSD10项目,但主要关注的是在常规范围内的超光速开发和实验。当OCZ收购Indilinx时,OpenSSD实际上已经不存在了。供应商似乎没有动力,只有模糊的动机来给开发人员他们最想要的可见性和控制权。在文件系统中构建闪存感知的主流努力导致了对文件系统和SSD之间的接口进行了更温和的修改。

文件系统和SSD之间最广为人知的接口是ATA TRIM命令或其对应的SCSI UNMAP命令。TRIM和UNMAP向设备传递相同的含义:给定的区域不再被使用。超光速的挑战之一是高效的空间管理;可用的空间越多,执行这项任务就越容易。随着自由空间的耗尽,超光速列车迁移数据的空间越来越小,它们需要以越来越紧凑的形式保持数据;在有大量自由空间的情况下,超光速可能会非常草率。

对于性能和冗余,几乎所有ssd都“过度供应”。它们包括比SSD的宣传容量多10%到100%的闪存容量。文件系统有分配和释放块的概念,但是没有办法或理由将这些信息传递到硬盘驱动器。为了让ssd获得免费存储的好处,现代文件系统使用TRIM或UNMAP命令来指示不再使用逻辑区域。一些ssd,特别是那些为消费者市场设计的ssd,从支持TRIM和UNMAP的文件系统中获益良多。当然,对于一个稳定状态接近满的文件系统,TRIM和UNMAP的影响非常小,因为没有很多空闲块。

回到顶部

增量式的革命

虽然许多公司参与增量改进,但创建闪存优化文件系统最有可能的候选人是那些构建ssd和运行在主机上的软件的公司。到目前为止,唯一流行的例子是DirectFS6从FusionIO。在这里,闪存存储为文件系统提供了更有表现力的操作。DirectFS不是单独使用遗留块接口,而是与虚拟化的闪存存储层进行交互。该层像传统的FTL一样管理flash媒体,但为其上面的文件系统提供了更大的可见性和扩展的操作集。

DirectFS不是通过在硬件控制器中替换智能,而是通过重新组织文件系统和flash控制器之间的职责来实现显著的性能改进。例如,FusionIO提出了对SCSI标准的扩展,以原子的方式执行分散的读写。3.FTL很容易支持这些功能,但极大地简化了文件系统中所需的逻辑,以确保在电源故障时元数据的一致性。DirectFS还依赖于提供“稀疏地址空间”的存储,它有效地将分配和块映射责任从文件系统转移到FTL,这是FTL已经必须完成的任务。William Josephson等人在2010年的一篇文章中指出,“专为闪存设计的新颖抽象层可以在软件简单性和系统性能方面带来实质性的好处。”6

与TRIM一样,向现有存储接口逐步添加表达性和功能允许文件系统利用提供它们的设备上的新功能。存储系统设计人员可以选择是要求设备提供这些接口,还是实现一个类似工作的设施,在不需要时禁用它。设备供应商可以决定支持更丰富的界面是否代表了足够的竞争优势。尽管这种方法可能永远不会导致最优状态,但它可能允许行业单调地导航到足够的局部最大值。

*鸡和蛋

围绕闪存构建存储系统还有其他方法。一种更激进的方法是比DirectFS更进一步,为文件系统分配额外的高级职责,如块管理、磨损均衡、读打扰感知和错误纠正。这将允许对存储系统中的软件抽象进行完全重组,确保有足够的信息进行适当的优化,而今天的层必须处理次优化的信息和通信。同样,这种方法要求供应商能够对从文件系统到接口、控制器和flash媒体的整个系统进行广泛控制。对于封闭的专有系统来说,这当然是可行的,事实上,一些供应商正在追求这种方法,但要使它成为一个新的开放标准将是困难的。

目前存在的用于批量市场的ssd价格便宜、速度快,但它们表现出不一致的性能和不足的可靠性。在充分认识到这些缺点的情况下设计的高级软件可以把商品铁变成金子。无需重新设计部分或全部I/O接口,这些ssd就可以构成高性能和高可靠性存储系统的基础。

这种方法不是围绕NAND闪存的特性设计一个文件系统,而是将商用ssd本身视为原始存储的基本单元。NAND闪存已经具有复杂的内在特性;SSD的突发属性甚至更加模糊和多变。例如,ssd的一个常见问题是在处理并发或交错读和写操作时性能不稳定。充分理解这些病态并创建更高级的软件来适应它们将代表一个存在的软件寓言的flash版本:从商品组件获得企业质量。这是存储界以前在磁盘上见过的现象;Sun公司的ZFS等软件已经用廉价的组件生产出了快速、可靠的系统。

这种转化过程中唯一容易的部分就是找到基本物质。在给定一个单一的、不变的SSD设备的情况下,构建这样一个软件系统已经很复杂了;在SSD市场多样性不断变化的情况下这样做会使任务更加复杂。flash的特性因类型和制造过程而异,但随着硬件的发展而变化。ssd的变化不仅是为了适应底层媒体和控制器硬件,也是为了适应软件的速度,修复bug和改进算法。尽管如此,一些供应商仍在追求11这种方法的原因是,尽管它比为专门构建的硬件设计更复杂,但它有潜力生产出沿着批量ssd的经济曲线运行的顶级系统。

*接下来是Flash

闪存作为一项相关技术的寿命是一个激烈争论的话题。虽然闪存已经凭借其价格和密度的趋势,成为一个相关的位置,但一些专家预计,扩展NAND闪存的物理性能将很快接近极限。其他人则预测闪存创新将持续几十年。无论是闪存还是其他技术,非易失性固态存储器将成为存储层次结构的永久组成部分,填补了硬盘和CPU之间的巨大速度差距。8

下一个进化阶段应该是明确为固态媒体特性设计的文件系统,而不是依赖中间层进行转换。各种方法都是不完美的。对存储接口的增量更改可能永远不会达到真正的极致。为flash创造一个新的界面可能在市场上是站不住脚的。将ssd作为存储的原子单位可能只是另一种折衷措施,而且在技术上是困难的。

如今,一些公司至少在近期内将赌注押在flash的相关性上——它们在当前设备的范围内工作,而另一些公司则构建、扩充或替换现有的接口。闪存的性能刺激了计算机行业对更快、更便宜的持久存储的需求。实验阶段早已结束;现在是为闪存开发软件的时候了,是时候拥抱实现其全部潜力所需的专门化了。

ACM队列的q戳相关文章
queue.acm.org

固态驱动器的解剖
迈克尔·康威尔
http://queue.acm.org/detail.cfm?id=2385276

企业ssd
马克·莫沙耶迪,帕特里克·威尔金森
http://queue.acm.org/detail.cfm?id=1413263

服务器应用的闪存盘机会
吉姆·格雷,鲍勃·菲茨杰拉德
http://queue.acm.org/detail.cfm?id=1413261

回到顶部

参考文献

1.Btrfs维基;https://btrfs.wiki.kernel.org/index.php/Main_Page

2.固态驱动器的解剖。ACM队列10, 10 (2012);http://queue.acm.org/detail.cfm?id=2385276

3.Elliott, R.和Batwara, A.对T10技术委员会的说明。11-229r4 SBC-4 SPC-5原子写和读;http://www.t10.org/cgi-bin/ac.pl?t=d&f=11229r4.pdf;分散写,可选原子;http://www.t10.org/cgi-bin/ac.pl?t=d&f=12-086r2.pdf;12-087r2 SBC-4 SPC-5集读原子;http://www.t10.org/cgi-bin/ac.pl?t=d&f=12-087r2.pdf

4.格雷,J.和菲茨杰拉德,B.闪存盘在服务器应用中的机会。ACM队列6, 4 (2008);http://queue.acm.org/detail.cfm?id=1413261

5.一种NFS文件服务器设备的文件系统设计。WTEC '94 USENIX 1994年冬季技术会议http://dl.acm.org/citation.cfm?id=1267093

6.Josephson, w.k., Bongo, L.A, Li, K.和Flynn, D. DFS:一种用于虚拟化闪存的文件系统。ACM存储事务3(2010)。http://dl.acm.org/citation.cfm?id=1837922

7.Leventhal, A.闪存。ACM队列6, 4 (2008);http://queue.acm.org/detail.cfm?id=1413262

8.Leventhal, A.三奇偶RAID及以上。ACM队列7, 11 (2009);http://queue.acm.org/detail.cfm?id=1670144

9.Moshayedi, M.和Wilkison, P. Enterprise ssd。ACM队列6, 4 (2008);http://queue.acm.org/detail.cfm?id=1413263

10.OpenSSD项目;http://www.openssd-project.org/wiki/The_OpenSSD_Project

11.PureStorage FlashArray;http://www.purestorage.com/flash-array/purity.html

回到顶部

作者

亚当·h·利文瑟尔是数据库虚拟化公司Delphix的首席技术官。此前,他曾担任Sun和Oracle的首席Flash工程师,在Oracle中,他设计了ZFS存储设备、Exadata和其他产品中的Flash集成。

回到顶部

数据

UF1数字定价趋势。

回到顶部


©2013 acm 0001-0782/13/05

允许为个人或课堂使用部分或全部作品制作数字或硬拷贝,但不得为盈利或商业利益而复制或分发,且副本在首页上附有本通知和完整的引用。除ACM外,本作品的其他组件的版权必须受到尊重。允许有信用的文摘。以其他方式复制、重新发布、在服务器上发布或重新分发到列表,都需要事先获得特定的许可和/或费用。请求发布的权限permissions@acm.org传真(212)869-0481。

数字图书馆是由计算机协会出版的。版权所有©2013 ACM, Inc.


评论


梅丽莎礁

"...此外,每次写入或擦除操作都会损耗NAND闪存。根据芯片的类型和质量,目前芯片的额定运行周期从50050000次不等,而这些数字正在随着芯片本身的缩小而缩小……”

作为终端用户,我如何注意到磨损?我定期备份我的一些文件。

梅丽莎礁


亚当·利文斯

嗨,梅丽莎,

根据文件系统和SSD的不同,您可能会以不同的方式注意到磨损。高质量的ssd会在实际数据丢失之前很久开启“预测故障”标志,恢复有风险的数据,并将其转移到安全的位置。故障后,ssd硬盘可能会将错误数据渗透回文件系统。现代文件系统(如ZFS)将识别错误数据并报告错误;典型的消费者文件系统,如苹果的HSFS+,只会使用导致系统崩溃或可见数据损坏的错误数据。


显示所有2评论

Baidu
map