当前位置:首页 期刊杂志

基于闪存阵列的日志结构文件系统在桌面云中的应用研究

时间:2024-07-28

张晶华 ,张昕源 ,蒋同军 ,闫洪吉

(1.国家电网有限公司技术学院分公司,山东 济南 250002;2.中国邮政集团公司山东省分公司,山东 济南 250011)

0 引言

近年来,桌面云在政府、企业、医疗、教育等行业广泛部署,提升了工作效率,简化了管理,提高了安全性和标准化水平并降低了运营成本。通过部署桌面云[1],能够让管理员在数据中心对所有桌面和应用统一配置,简单的鼠标点击操作就可以完成原来需要几周甚至几个月的时间才能完成的系统升级、软件更新、补丁安装、数据备份等操作。同时,用户可以随时接入,极大地提高了工作效率,整体系统的耗电量和电子垃圾的产生量也大幅减少,更适合环保理念和绿色数据中心的建设,数据安全和保护也更容易控制和实现。长期来看,桌面云可以帮助公司大幅节省办公成本。

目前国内使用虚拟桌面的用户基数庞大,将近千万级,未来将会有更多的企业和机构选择采用桌面云的方案。然而,很多用户对于虚拟桌面体验的反馈并不好,主要体现在系统登陆超时,操作卡顿,间歇性无法响应的机率比传统的PC机要高很多。由于服务器的标准化程度很高,X86架构的普及,CPU和内存资源的快速升级,排除虚拟化软件本身的差异和网络带宽可能存在的设计瓶颈,整体桌面云架构中最可能出现问题的环节就在存储上。长久以来,存储已经变成制约整体系统性能升级的最大制约因素,而对于桌面云环境,存储的制约尤为明显。

本文对比了传统存储介质利弊,分析了云存储性能要求,研究了一种适合闪存阵列的日志结构文件系统算法,并通过这种算法的应用来优化桌面云存储系统,为桌面云存储读写性能的提升提供参考。

1 存储介质对比分析

1.1 机械硬盘的性能瓶颈

存储性能的提升一直受到磁盘介质和制造工艺的限制,基本处于原地踏步的状态,只能依靠增加磁盘数量进而增加并行读写的能力,以提高存储系统整体的吞吐量和交互能力。在机械磁盘读写数据时,由于数据需要保存在不同扇区的不同磁道上,当数据保存不连续的时候(即随机分布),磁头需要通过机械臂的移动,来寻找每一份数据存放的地点,通常情况下,一块企业级磁盘的平均寻道时间约为10~20 ms。而在一个企业级的存储系统中,存储算法会同时调用多块磁盘共同参与读写操作,共同参与I/O请求的磁盘数量越多,同时能够并发的读写I/O数量越大,多个I/O请求对同一块磁盘发生请求从而产生热点的可能性也就越低。

但在桌面应用虚拟化场景下,由于存储I/O需求会同时来自于不同的虚拟机或虚拟桌面,I/O的随机性进一步被放大,使得多个I/O对同一磁盘发生请求的概率同步增加,容量使用率越高,这种可能性越大,对性能的影响就越大。当用户开始进行业务或应用虚拟化以后,随着存储I/O的调度复杂度和随机度的持续提升,存储的性能瓶颈逐渐开始突显出来,不论如何增加CPU资源或内存资源,系统的性能都开始变得无法提升,更严重的场景还会导致业务卡顿,访问超时,甚至服务中止。

1.2 闪存存储性能分析

基于闪存技术的固态硬盘(SSD)直接使用微电压的变化进行数据的存取,避免了机械磁头的物理寻道,从而有效降低了读写延迟,彻底打破了单块机械磁盘的读写瓶颈,实现了单盘百倍的性能提升。

除去价格因素,SSD本身的写疲劳特性和写入放大效应(Write Amplification)是目前可能影响其发展的最重要问题。SSD的写疲劳特性是指SSD的每个基本保存数据单元(CELL)最大允许的反复擦写次数,一旦接近该阈值,该数据单元中的数据可能会发生丢失并失效。SSD中常见的MLC介质,写疲劳只有4 000~5 000次,SLC介质虽然可以达到10万反复写入,但是考虑到整体成本和容量的限制,使用得越来越少。

由于SSD写入的基本单元是页,而擦除的基本单元是块,这就可能导致只希望写入4 KB的数据,而实际需要先清除512 KB~1 MB的数据再进行写入,从而造成写入放大的效应[2],如图1所示。另一方面,如果需要进行大量的小数据块覆盖写操作,就会加剧写入放大效应,增加数据块反复擦写的次数,最终对SSD的写入寿命也会造成大幅影响。

图1 闪存的写放大效应说明

总之,虽然SSD性能优异,但是写入稳定性方面仍然有待进一步提升,如果从容量上来看,成本也还是比机械磁盘高几倍到十几倍不等,同时如果在顺序读写场景下,两种磁盘介质的性能表现相差并不大。两者性能对比如图2所示。因此,迫切需要一种整合两种磁盘介质优势、弥补缺点的技术。

图2 闪存和机械磁盘优劣势分析图

2 日志结构文件系统

在数据库环境中,大量的I/O并发请求并不是实时将每一个数据请求都直接更新到后端存储之中,而是将每个I/O存储过程的交易日志,以顺序写入的方式按实时顺序更新到一个交易日志之中 (如Transaction Log或Redo Log)。日志写入完成后,就可以认为该笔交易更新完成。实际数据会批量聚合后,定期更新至数据库文件中,从而减小每一笔交易的I/O等待时间,提升数据库的交互读写性能。

存储的文件系统同理可引入日志的设计思想来实现存储的 I/O请求,基于以上设计思想,Ousterhout提出了日志结构文件系统(log-structured file system,简称 LFS)的设想[3],Rosenblum 设计并实现了 Sprite-LFS[4-5]。

LFS的设计理念主要包含增大主内存容量,把一系列文件系统更改信息缓存于主内存之中,并在一次寻道操作中把所有的更新信息连续写入磁盘[6]。这一写入算法就巧妙地把传统文件系统中大量小的同步随机写入操作转换为大的异步连续写入,从而显著地改善了磁盘的写入性能。与此同时,采用结构化日志也有利于加快文件系统崩溃后的恢复速度,从而不必像传统文件系统一样,在崩溃后扫描整个文件系统来恢复一致性,而只需要检查日志崩溃前的最后部分即可,如图3所示。

由于当时的随机写入应用需求并不广泛,并且因为垃圾回收效率的问题,随着空间使用率越高,文件系统碎片化的问题就越严重,性能下降也越严重。除此之外LFS对于内存的需求往往比其他文件系统大得多,成本较高,对顺序读写和随机读操作的性能都没有提升,该技术并未被广泛应用。但是此文件系统架构却延伸出了很多经典的文件系统,如SUN ZFS、Netapp的WAFL文件系统,这两种经过特别优化的LFS也确实给用户带来了非常高的价值。

虽然LFS是完全针对机械磁盘进行的文件系统结构优化,是为了提升机械磁盘的写入效率,但真正将LFS发扬光大的却是闪存。每一块闪存介质都有一个控制芯片,用以将内部并连的若干芯片统一起来形成一个大的块设备,并通过统一的接口对外提供存储容量。由于存在闪存写入寿命和写入放大的问题,闪存写入数据时若能够实现大数据块的顺序写入,便可减少随机小数据块写入对闪存性能和寿命的影响。对于读性能,闪存本身的读取机制可以实现提升,不需要文件系统特别优化,而这一点正是LFS的适用场景。所以,现在市面上的每一块闪存介质,内部的微码中都集成了一个完整的LFS。

由于LFS可以从理论上解决闪存的写入放大和写入疲劳的问题,但并不代表现在所有LFS都可能适用于闪存。由于绝大多数现存的LFS都是基于机械进行设计的,不论是从数据的整理机制、CPU调度算法、内存使用效率等方面都与闪存真正的需求相差甚远。

3 桌面云存储应用分析

桌面云对于存储的需求与常见的数据库、商业应用等有显著不同,主要体现在:

1)高性能。桌面云中往往运行了成千上万的虚拟桌面终端,对性能的需求是极其苛刻的。经过大量的实践测试,发现一个虚拟桌面根据使用场景的不同,在稳定运行时往往需要10~30 IOPS不等,在启动时需要100~200 IOPS不等。

2)大容量。一个桌面云环境中,往往需要为每个桌面使用者分配足够的存储容量,通常情况下会分配40~100 GB不等,对于成千上万规模的桌面云环境来说,存储容量的压力同样不容小觑。若是通过闪存来解决存储性能的问题,而存储容量的刚性需求却是闪存应用最大的挑战,因为在目前的成本水平上,用户还无法承担全闪存存储架构的价格成本。

图3 日志结构文件系统(LFS)与传统文件系统(FFS)的架构区别

3)全随机性。由于所有的存储需求都会经过虚拟化软件层进行处理,所以在每个最终用户的使用中不论是顺序还是随机请求,对于后端的存储都会变成100%的随机请求,这就需要存储对于随机I/O有很好的优化。同时,随机性不单表现在I/O的请求方面,还会表现在读写比例的不可预测性,与固定的商业应用和数据库不同,管理员实际上很难在设计阶段对读写比例进行预测,而且实际监控中发现不同时段及不同的使用场景,读写比例差异性非常大,这就需要存储系统对不同的读写比例有很好的包容性,针对不同的I/O大小及不同的读写比例都能有很好的性能表现。

4)低延迟。延迟水平的高低是影响桌面云最终用户体验的最重要指标。即使IOPS达标,但延迟水平很高,用户的体验仍然会非常差,这也是不能只采用机械磁盘而一定要使用闪存的原因。

桌面云环境对于存储系统确实有着十分苛刻的要求,不但要求延迟低、性能高,还要求容量大、效率高,这也就势必要求在选择方案时要考虑使用闪存技术以提升技能,同时采用机械磁盘以满足容量,将这两种技术有机结合起来,充分发挥每一种技术的优势。

4 基于闪存阵列的日志结构文件系统在桌面云中的应用研究

在如何将闪存和机械磁盘有效融合方面,主要有两大方向。第一种是存储分层,传统的存储厂商通常通过制定策略,将冷热数据进行升降级操作从而把热点数据集中在闪存空间中,以提升性能,但这种存储分层算法对于随机写入没有太多的优化,而且升降级的数据块颗粒度往往比较大,效率不太高。第二种是闪存加速技术,通过将闪存作为扩展的内存使用,可以有效减少热点数据缓存的颗粒度,提升加速效率,同时有效避免数据的频繁迁移对系统额外的性能开销,但是依然没有对随机写入做专门的优化,只是能够有效提升随机读的性能,写的性能还是要依赖磁盘数量和转速的限制,写延迟也比较大。

日志结构分布式文件系统 (HDF based Logstructured File System,简称HLFS)是基于Hadoop分布式文件系统(Hadoop Distributed File System,简称HDFS)构建的云存储平台,结合HLFS客户端与后台存储集群相分离的特点,利用长期未使用算法作为缓存策略,在HLFS客户端内存中设计并实现HLFS缓存,采用固定时间间隔刷新缓存的策略来保证数据一致性,能够有效降低HLFS与后台集群的交互频率,减少用户感知数据的读写时间[7]。

根据闪存与机械磁盘技术的比较以及日志结构分布式文件系统设计思想,如果把日志结构文件系统的写入优化机制与闪存加速技术融合起来,以实现读写的加速,将是同时解决随机场景下读写双重加速的存储算法。某些新兴的厂家采用了这种算法,其中最著名的应该是Nimble Storage的CASL(Cache Accelerate Sequential Layout,简称 CASL)算法[8-9]和新推出的VSAN技术,与此同时NextGen和Infinidat公司的产品也采用类似架构的算法。可见,这种将闪存和机械磁盘的优势相结合的思路在未来很可能成为存储技术的主流,就像混合动力车一样,物尽其用,实现成本与效率的最佳平衡。

以Nimble Storage的CASL算法为例,CASL采用了一种更加强大的结构日志写入算法,不但在写入数据时进行顺序化整理,还加入了在线压缩的技术和可变长数据块技术,可以在一次条带写入操作中完成传统存储几千次的I/O写入操作,只需要使用低转速大容量的机械磁盘就可以实现媲美全闪存的写入性能。条带同时按照数据的冷热程度选择性复制到闪存空间中,以提升闪存的读命中率,降低读取延迟,从而彻底实现存储性能与磁盘性能和磁盘数量的绑定关系,这一特性在桌面云中非常重要。

在桌面云项目中,设想一个需求量为5 000个终端数量场景,如果使用传统存储往往需要几百块磁盘和固定比例的闪存盘才能同时实现对存储性能、容量以及延迟性能需求。但如果采用这种经过结构日志优化的存储算法,可使用更高容量的机械磁盘和更少的闪存盘,最终将只需要几十块磁盘就可以完全满足云桌面系统的性能和容量需求。读写不论何种比例,都能够基本实现一致的性能表现和延迟水平。由于采用了更少的硬件,不论是从采购成本上,还是后期的运维、电力、机架空间、空调制冷等方面,都会带来超过90%的成本节约,设备故障率也会大幅减少,从而减少运维人员的压力,提高工作效率。

5 结语

经过对机械磁盘与闪存的优劣势分析以及桌面云对于存储的需求分析发现,特定的日志结构文件系统优化后的闪存存储系统,有能力将闪存高随机读性能与传统磁盘的高容量性价比有机统一,同时满足桌面云环境对存储高性能、低延迟的性能需求以及大容量、高存储使用效率的容量需求,并且满足全随机性的读写需求。相比传统存储和全闪存产品,具备非常高的成本优势和后期的运维效率优势,是目前在桌面云部署环境中性价比很高的存储解决方案。下一步工作是在桌面云场景中,对以上研究理论进行实践,验证其可行性与应用价值。

万众一心,众志成城,坚决打赢疫情防控阻击战。严格落实疫情防控“四早”“四清”“八到位”要求。

“四早”——早发现、早报告、早隔离、早治疗。

“四清”——疫情形势“清”、人员底数“清”、工作措施“清”、基层情况“清”。

“八到位”——师生状况摸排到位、教育教学安排到位、人员培训到位、场所准备到位、环境消毒到位、饮食安全保障到位、防控物资到位、沟通协调到位。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!