清华计算机系舒继武 CCF-ADL 讲习班上篇:闪存存储系统的软件层优化
本篇文章6985字,读完约17分钟
雷锋。(公开号码:雷锋。注:舒现任清华大学教授、博士生导师。近年来,他主要从事网络存储、存储安全、网络服务器、并行算法、并行处理技术和并行应用软件技术的研究工作。他还是清华大学计算机科学与技术系副学位委员会委员、中国全球网络存储产业协会专家委员会委员、“高性能服务器与存储技术国家重点实验室”(Inspur集团)学术委员会委员。国家863计划信息技术领域重大项目“海量存储系统关键技术”总体专家组副组长。
6月14-16日,中国计算机联合会学科前沿研讨会在北京举行。清华大学计算机科学教授舒作为数据存储方面的专家,在第79届ccf-adl研讨会上向青年学者介绍了现有存储系统软件层的一些研究进展。舒教授这次演讲的主题是闪存系统的软件层优化。
以下是舒的讲话,雷在不改变原意的情况下编辑的。
自2000年以来,磁盘的带宽约为100兆字节,变化不大,延迟也变化不大。我认为即使它在未来得到优化,也不会很好。
另一方面,IBM将建造一个大型存储系统ibm2020,它有2千兆位/秒,需要500万个磁盘,面积超过2000平方米,消耗高达22兆瓦的能量。
现在pcie的带宽和延迟有了很大的变化。如果ibm2giop系统建立在此基础上,并由单片机存储,它只需要8000个模块,这大大减少了占地面积,消耗了近1000瓦的能量。
自从东芝在1984年推出闪存以来,它已经发生了很大的变化,从那时的磁盘到卡,到现在的各种阵列,再到各种大型分布式系统。
让我们看看结构发生了什么变化。我想解释的另一点是,用闪存构建外部存储系统有什么好处?第一是低延迟和高带宽;另一个是成本优势。如果构建了iops,由于其高带宽和低延迟,它应该获得比磁盘高得多的iops。就成本而言,它应该比磁盘便宜。
另一个是电子的,而不是机械的,所以可靠性和能耗就不用说了。从早期的闪存卡到现在的应用程序,每个人都知道磁盘,包括我们现在拥有的许多小卡。像这样的接口问题和容量问题是无法解决的,所以这必须是一个基本问题。
后来,它发展成一个卡,也就是说,pcie闪存卡,这是插入到这个主机,形成一个系统。它有什么好处?凭借其强大的计算能力和巨大的内存,这张卡可以充分发挥作用。
也有很多司机。在这些主机上,它可以做很多远程更新,包括打开系统,也可以做一些有针对性的打开。而且,在这个开发过程中,它也经历了一个过程,从这个卡的早期应用,这个大磁盘应用,到卡的后期应用,它跳过了很多层。
当然,一个非常简单的问题是它的容量不大。一个卡现在是1t和2t,另一个卡在散热方面存在很大问题。我们在2013年和2014年从华为获得了早期的卡片,可以达到70-80度,上面可以煮鸡蛋,所以这些都是它的问题。
这是因为它的容量不大,可靠性也值得怀疑。后来,它发展成为一个固态硬盘阵列,因此其容量可以变大,其可靠性可以提高。制造阵列有两种方法,比如固态硬盘规格,就像使用磁盘一样。这种方式有很多问题,就是磁盘长大了。从工业的角度来看,它不需要做太多,当然,它肯定需要固态硬盘做一些优化。
当然,也有一些类似的问题,比如性能突然下降。它只是优化了控制器,但远远没有充分发挥固态硬盘本身的一些特性。
后来,一个制造商说,制造一个全新的磁盘阵列控制器,并重新设计这个控制器是完全面向固态硬盘。这里有很多事情要考虑。它的控制器必须考虑固态硬盘本身的垃圾收集,包括一些新操作和一些并发操作。这是全新的,不像这一个,这只是优化,因为这一个仍然在磁盘的基础上做了一些改进,如这一个,它根本不考虑磁盘,面向固态硬盘。
对你来说,构建一个大系统可能还不够。值得注意的是,磁盘阵列达到几十吨。后来,有一个分布式闪存阵列,这一个是cmu,考虑了不同的角度。之前的磁盘阵列考虑了io子系统的性能和可靠性。
它总是考虑如何匹配性能,所以它基本上使用低频率的cpu来构建一个分布式闪存集成系统,所以它在这方面做了大量的应用。
后来,ucsd也建立了一个系统,但是这个系统和以前的不同。它主要考虑性能和匹配,而这一个考虑能耗,即256gb的闪存和2g的dram是建立在一个单一的板,以建立这样一个东西,已经彻底优化和重新设计。在这次重新设计中,主要考虑了并发性。
从结构上看,从磁盘到卡再到阵列,要构建一个分布式存储系统,应该说还有很大的并发性,可以用在真正的大型卡上。
当然,这是由于结构的并发性,但问题是软件问题。
让我给你举个例子。2012年,ucsd发布了这样的东西,每个人都能看到。我们早期的磁盘很慢,所以如果你的软件很慢,它就不会显示。我们认为如果现在使用pcie作为闪存,软件开销可以达到21.9%。
那么让我们看看在这方面应该有很多应用。我根据级别画了一幅简单的画。当然,这不是一个非常严格的画面,也就是说,我们做的是闪存系统,下面可能有一些闪存硬件。当然,这也可以是数组或裸数组。
上面可能有一些接口,包括ftl。当然,有些ftl可能不包括在这里,它是关闭的。有一些新的转换层,包括上层的一些文件系统和一些数据库,以及其上的一些应用程序。
另一个是文件系统,它更好。然后是这个闪存的千伏存储,等等。在这方面应该有很多事情要做。我们在这方面也做了一些事情,这个红色的是我们团队做的事情。
粗略地说,这是软件层的一个变化,需要创新。让我们看看要做什么改变。
因为传统的磁盘模式非常慢,当中央处理器发出信号时,中央处理器会处理它(它还不能做其他事情),然后再做。但是现在你的硬件很快,如果你仍然使用这种中断模式,上下文切换将需要很长时间,所以如果cpu像这样切换,它可以使用其他方式。因此,在这种情况下,传统的终端模式非常昂贵。
另一个是访问路径,这是传统的磁盘结构文件系统,包括内存复制几次,复制两次等等。在这个过程中,您的路径可能需要缩短,甚至一个级别可能需要合并。例如,文件系统,您的文件系统应该进行存储管理,而您的ftl也应该进行存储管理。你认为它是完全重叠的。你能处理掉这个层吗,这样你的io就能大大缩短匹配这个命令的时间?
另一个是软件接口,因为磁盘不同于这个sd,包括它的日志等等,所以相关领域的很多软件接口都是在这方面提出来的,这是一个事务性的问题。
现在我将谈谈交易处理。关于闪存的事务处理有很多研究。它通过使用闪存的远程更新功能在存储设备中提供原子写入接口,以避免重复写入。
它有几层。这是一篇关于pcie的文章,也就是你的交易。如果我的系统在这个过程中崩溃了,他会扫描它。如果我写完了一些交易,我就可以这样做了。这是它的一个指针。我把这笔交易联系在一起。最后,我将解释这些指针是否是闭环。当然,这个指针是连续的。该指针可以同时扫描,并且可以并行完成,因此它可以快速处理事务。
根据我们的方法,我使用一个窗口,即使事务在窗口中崩溃,它也只返回到这个串口,所以通过这个模式,我们的事务应该比传统的更快。
然后,考虑到一致性,我们的接口性能提高了大约20%。
在此基础上,我们进一步优化并对这些进行了差异化交易。当然,我们在这里已经考虑了一些事情,也就是说,在不同的地方更新,在那里有最早的这样的事情,日志管理到事务本身的一些特性。
那我们来谈谈文件系统。刚才,文件系统有很多问题。第一,我刚才说过,文件系统需要管理。当你达到这个极限时,你很难优化它。这不是你想的那样,而是一个巨大的危险。
此外,即使这是一件合乎逻辑的事情,对你来说也不是那么容易,所以你很难对它做一些优化。
另一个是我们所有的东西都被认为是这种特性。因为它是一个非现场更新,非现场更新有它的缺点。好消息是这张磁盘上有两个版本。
让我们看看如何使用ftl,包括单层。事实上,ftl是一个好东西,flash构建了这种磁盘用于系统。
然后它被用在我们的服务器上,这相当于使用一个像磁盘一样的ftl,这是非常好和方便使用的。但是我说这件事有几个问题。
最重要的事情之一是冷热数据的分组,这是一个关键的基础。然后在它里面有一个nat表,因为在它里面会有不断的更新,这会消耗大量的性能并导致一系列的延迟问题。
另一种是地址对齐方式,这种方式可以提高效率并确保一致性。这个现在是开源的,所以你可以扩展它。在这方面,它有一定的性能提升。例如,在f2fs上,它在satasd环境中可以提高2.5倍,在pciesd环境中可以提高1.8倍。
虽然三星在这方面做了一些优化,但仍然有很多问题没有解决,刚才提到的文件系统也没有考虑。后来,fusionio做了一些事情,说你的ftr现在在这个磁盘上。后来,有人把这个ftr放在服务器主机上,这仍然是不同的。
想象一下磁盘阵列。阵列上的内存非常小,而ftrsd上的内存非常小。虽然它有芯片,但它的计算能力很弱。如果我们把ftr放在服务器上,它可以利用主机强大的计算功能和巨大的内存,这使得ftr的能力非常强,所以它的性能和许多功能可以提高很高。
至于其他设备,你不能做很多优化。它把赤裸的东西向上移动,可以知道它上面下层的一些分布,并且可以识别相应的通道,包括角度,所以应该说它是一个很大的改进。Fusionio和Princeton做了这样一个文件系统,也就是说,这个文件系统与你的ftr功能有一些冗余。另一个是它简化了ftr。
让我们来看看fishio提出的dfs作为文件系统的建议,它主要是指这样一个接口,所以它可以提供一些原子性。另一个有底层的日志机制,所以不需要额外的日志机制。此外,该文件系统的块分配操作意味着文件系统的管理完全移交给该层。这是fusionio的一个想法,即把ftr带到上层,把主机层和文件系统合并在一起。在这种情况下,性能提高仍然明显,这使得est3的直接读写能力提高了20%左右,缓存性能提高了一倍多。
然而,这种想法存在一些问题,它没有考虑闪存文件系统的寿命。然后我们在这方面做了一些工作,包括这三个方面。我们提出了一个目标,即将每个系统分成两个块,一个叫做空机房管理,另一个叫做存储管理。那么这种存储管理就像是把ftr和文件系统的存储管理结合起来,提出了一个面向对象的ftr,这是另一个叫空的文件系统也做了一些管理。里面有一些消息,一些目录经常更新,所以我们做了很多优化。
另一方面,我们对闪存底层芯片的并发处理做了一些优化。这篇文章发表在fast13、fast14和atc16上,做了一些事情,包括如何考虑它的持久性,以及如何设计一个新的目录树管理来根据闪存的特性优化它。
让我们看一下这三个步骤的第一步,也就是说,使面向对象的ftl如此稳定,并将其带到文件系统进行管理。此外还有一些相关的技术,并提出了一个接口来从上层获取更多的信息。另一方面,我们对它做了一些压缩,这可以减少它的一些写作量和寿命;这一理论的管理也有一些优化。
我们做了一个测试。在同步的情况下,ofs的平均写数据是ext3的15.1%、ext3的52.6%和btrfs的10.6%。在异步条件下,ofs写入的平均数据是EXT的36%,et2的80.2%,btrfs的15.1%。
然后,下一步是如何使用名为空的房间管理优化闪存。在这种情况下,据说这个目录树有时用一页或一个块来更新。在这个过程中,它通常是小写的。在这种情况下,它意味着如何构建目录树并将其分离。当然,为了在这个过程中保持一致性,我们使用嵌入的反向指针。另一个已经做了一些压缩,所以它可以很快保持,也就是说,优化它的名字空.这项工作的效果是这样的。与现有的相比,性能和寿命都有一定程度的提高。
接下来是我们的第三项工作,如何感知内存中的并发性,因为闪存系统有很多带,很多块,等等。事实上,所有这些事情都可以同时进行,当然在这方面已经做了一些相关的工作。
另一个是我考虑在这个区域进行固定协作的垃圾收集,这相当于在这个区域进行并发感知请求调度,当在这个区域进行分配时,我可以对其进行一些调度,并优化这些调度,甚至并发感知来做这样的事情。这是我们做这件事的三个想法。
然后,我们用这个想法做了一些测试,结果还不错。我们可以实现1-2倍的最佳性能,并与三星的性能进行比较。
好的,我刚才谈到的是文件系统,文件系统不仅仅是这样。刚才,我个人认为我还没有说哪个文件系统已经完全解决了这些问题,或者说在使用上非常成熟,所以在这方面应该有一些事情要做。
另一个是,在上面的话,有一些事情要做的千伏数据库。这是北京大学开发的一个系统,可以为你提供一个绕过这个文件系统的方法,这样你的iLog就会明显缩短。另一个是它。这是一个基于裸闪存的kv数据库。
这是威斯康星在2016年制造的一个200千伏系统。它将K和V分开。传统的K和V一起存在,但是如果K很小,它是4字节,那么如果你想为这个东西制定一个时间表,那么kv将以这种方式引入。一个是缓慢的表现,另一个是内心生活的问题。因此,有必要在钾和钒之间做一些分离来解决它。
但是,这种思想可以充分发挥闪存随机读取的特点,而且效果也很好。这是一个比较,即由传统的lsm-tree构建的kv系统,其一般带宽是2万亿到4万亿,但在其分离后,其性能表明它可以达到100千字节以上,所以这种性能应该是一个很大的变化,而威斯康星提出的这个关键值仍然是一个很大的工作。
Atc有一项工作,就是扩展闪存的接口。在传统的kv系统中有这些东西。您必须进行日志记录,甚至必须进行映射,并且必须在其中进行一些垃圾收集和处理。那么你的ftr也有这些东西,不是吗?它简化并合并了两个重叠的块,并提供了一个接口,这使得它的ftr得到了一个可扩展的接口。把这个移植到ftr是个好主意。
那么这也是一个非常重要的想法。它的结构是这样的,所以千伏的测井要短得多。在这种情况下,我们可以看到其结果的比较。名为nvmkv的系统显然在性能上有了很大的变化。
这就是刚才提到的软件存储系统中的工作,主要讲的是这个接口内部,通过这个机制传输到终端。你现在还能使用终端吗?或者以更好的方式。另一个是它的io日志级别,然后是接口问题,它的事务处理问题,它积极谈论它的文件系统和kv系统,所以这个软件仍然有很多优化。刚才,它应该还是一个热点,而且还在进行中。
据我所知,真正的大闪存还没有真正用于许多应用。它也用作磁盘阵列或缓存。作为它的一部分,它真的没用,因为软件还不成熟。
所以,正如我们刚才所说,这些软件必须完成,你必须形成一个分布式闪存系统。分布式协议非常重要。这应该是微软提出的一个名为corfu的协议,它将那些闪存视为裸闪存。当然,这款闪存是定制的,并且有网络接口。
为什么说它有网卡接口?这并不意味着将一个阵列或服务器带到互联网上,而是通常在服务器上用许多闪存卡或磁盘阵列来构建这样一个分布式系统。它将这些闪存直接放在互联网上,并通过网络将它们连接到一个大的存储池中。在这个过程中,它的协议是不同的。传统上,它必须通过服务器层,将闪存直接连接到网络。
为了保证它的强一致性,另一个已经在其中做了一些工作。这是它的结构之一。当然,它的优点是非常节能,即卡,但如果你有一个服务器,它可以达到250瓦。
这是另一个低延迟,它的读写延迟小于1毫秒,并且它的故障恢复很快,这保证了一定的性能。当然,问题是你的卡要挂在网上,而且已经定制好了,里面有网卡。
当然,它的使用仍然有限,它的协议仍然是一个性能问题,所以微软在此基础上进一步优化了它。在这种情况下,它提出了一种内存中的数据结构,主要是提供一个接口,这样就可以在闪存中播放,并且可以进一步简化底层协议。它使用树形结构进行大量的抽象。因此,与刚才的corfu相比,该协议的成本大大降低,并且具有一致性、持久性、原子性和隔离性。
其次,它的问题是可伸缩性,而且它还受到环境的限制,特别是在它里面做检查点的时候,客户的开销比较大。
事实上,我们已经就协议做了一些工作。我没有在这里谈论它,因为我做得很简单。事实上,我个人认为这个协议应该在将来使用,应该说是一个很大的变化。现在这个东西应该基本上认识到它的低延迟。如何与它结合,我将在下一阶段提到这一点,应该说还有一些东西值得研究。
刚才,我谈到了如何构建外层。让我谈谈构建外层的前景,这是我个人的定义。
第一个是软件管理,软件问题是一个非常重要的问题。以下是访问pcie的s闪存时磁盘的0.31%。必须注意软件开销,这包括许多方面。另一方面,我们传统磁盘系统的软件经过了几十年的发展,有些功能非常丰富,所以这个功能应该保留在这个面向闪存的存储中,这些功能之间存在一些冲突和矛盾。如何处理这些事情,然后希望在新建的环境中使用开发了几十年的功能,在这里应该是一个巨大的挑战。
软件的低成本和这些管理功能之间存在着矛盾,这是值得考虑的。
另外,这种制度的改变应该说是颠覆性的,所以如何重新考虑外部制度。那么内部系统,除了闪存之外的新存储系统,应该已经发展了十多年。现在像新的pcm这样的东西已经开发出来了,它必须被用作存储器,它的性能应该更好,并且它可以更好地解决存储器的一些特性,如何构建它应该是一个很大的挑战。
雷锋。com将发布以下演讲,敬请期待。
雷锋原创文章。严禁擅自转载。详情请参考转载说明。
标题:清华计算机系舒继武 CCF-ADL 讲习班上篇:闪存存储系统的软件层优化
地址:http://www.6st8.com/zbxw/6479.html
免责声明:联合早报中文网从世界各个维度报道世界经济新闻,时政新闻,突发新闻等,本篇的部分内容来自于网络,不为其真实性负责,只为传播网络信息为目的,非商业用途,如有异议请及时联系btr2018@163.com,联合早报中文网的小编将予以删除。