一种小文件合并存储的方法

2021-01-18 03:37王海霞赵正军
现代计算机 2020年32期
关键词:空闲客户端流程

王海霞,赵正军

(1.中国电信股份有限公司研究院,广州 510630;2.广州智光自动化有限公司,广州 510760)

0 引言

随着互联网和信息技术不断发展,数据信息对经济和社会生活产生重大影响,我们进入了一个信息爆炸的时代,每个行业每天都在制造和产生大量数据。IDC白皮书预测到2025年,全球的数据总量将高达163ZB。尤其是物联网、5G和人工智能等新技术等各种应用产生的数据,呈现指数级增长,甚至可能会涌现高达百亿级的海量小文件。海量小文件(Lots Of Small Files,LOSF)在数据访问和存储等方面面临巨大的挑战,日渐成为业届公认的难题。

海量小文件问题简称LOSF,通常是指文件大小在1MB以内,数量级别在百万及以上。典型应用场景,例如我们生活中常用的最大电子商务网站淘宝,系统平台上保存大量的图片文件,平均大小仅为15KB,总量至少超过200亿张。还有著名的社交网站Facebook,系统存储了600亿张以上的图片。还有动漫渲染的后期制作过程中需要大量的视音频素材,这些文件的大小都集中在10-20KB之间,数量通常超过500万个。

目前的文件系统,例如本地文件系统、分布式文件系统等,在数据管理、数据存储和缓存管理等实现方式和策略都是针对大文件设计的,例如GlusterFS、GFS、HDFS,海量小文件在现有的文件系统的存储效率比较低,甚至无法实现快速访问。

1 LOSF优化策略

1.1 硬件优化

如果忽略成本的因素,最直接的优化策略就是升级硬件配置,通过降低数据访问时间来提高LOSF性能。例如,存储介质用SSD替换原有的机械硬盘,或者增加存储的Cache,或者采用分层存储的部署,这样可以大大提升IOPS/OPS的读写性能;或者采用处理性能更强的CPU,直接有效地提升并发处理能力及I/O访问速度;还可以增大内存容量,显著提高数据读写缓存命中率;以及使用传输效率更高的网络设备,网络访问的带宽高,延时小,这样事务并发处理效率高,数据访问的吞吐量大。硬件优化的核心思想,就是通过提升硬件的性能,消除I/O物理通道上的障碍,但是代价是成本较高。

1.2 Cache 管理

Cache技术的优化思路是用空间换取时间,通过提高数据访问的缓存命中率,突破数据访问的时间和空间的限制,提升文件访问的性能。Cache技术可以应用到多个领域,例如CPU的Cache、存储介质Cache和文件系统的Cache等。Cache技术的特点是先将数据集中读写到Cache中,然后再将数据用异步的方式移到稳定的存储介质上。Cache技术通过异步的数据存取的模式来解决数据高并发访问和延时的问题,有效减小存储介质的访问次数,来进一步提高存储的效率。但是Cache容量不能无止境的增加,当达到一定阈值时,即便再继续增大Cache容量,Cache的命中率也不会有显著提高。

Cache技术对访问过的数据进行短时间的保留,但是如果数据更新频繁,缓存在性能改善方面的影响不再明显,因此针对大量小文件的访问,可以采用先预测频繁访问的文件集合,预先读到Cache系统中,有效提高系统存储的性能。预存取是一种主动缓存的技术,它充分利用数据的空间局部性,对未来可能发生的数据访问请求进行预测,在实际访问之前读取数据并缓存,方便用户快速访问,有效减少数据访问的时延。对于用户来说,不是所有的预测都是有效的,正确的预测可以提升系统的性能,而不正确的预测就会造成Cache的浪费,I/O带宽的占用,还有数据访问的延时。

1.3 小文件合并存储

对于大量小文件而言,可以采用小文件合并存储的优化策略,首先,减少元数据数量。先将多个小文件合并成一个大文件,通过减少文件数量来提升元数据的访问和查询效率,减少文件读写的I/O操作次数,节约数据传输的时间。合并成大文件存储在文件系统上,可以降低文件系统的I/O的压力,提升存储性能。在小文件合并存储的同时,会生成索引文件,访问数据时通过索引来查找,索引文件可以先预存到Cache中,这样读写小文件时,只需要一次I/O就可实现。

对比传统的文件系统,文件的元数据和数据是存储在文件系统的不同的地方,而小文件合并存储的方式是将元数据和数据连续存储在大文件中,这样增加了单个小文件内部的数据局部性,存储系统上的I/O方式由随机转换成了顺序,大大提高I/O读写性能。此外,采用小文件单独存储,磁盘上会产生大量的碎片。采用小文件合并存储的方式,磁盘上的碎片会随着文件数量大幅减少而降低,有效提高LOSF存储效率。

传统的文件系统,系统读写文件时,主要的系统开销在open调用方面,例如路径查找和路径解析。采用小文件合并存储的机制,I/O访问流程也会发生变化,多个小文件合并成一个大文件,open系统调用的开销转换成了seek操作,先访问Cache中的索引,再在大文件对应的位置上查找,节省了之前的大部分的系统调用的开销。

小文件合并存储的方式,对于存在大量修改和删除操作的存储系统不是很适用。文件在修改和删除操作时,存储系统会产生大量碎片,执行碎片整理,又会产生额外系统开销。如果不进行空间整理,采用直接追加写的方式,就会导致数据分布的随机性增加,浪费存储空间,降低性能,这些问题的存在,是小文件合并存储的优化策略所面临的挑战。

2 小文件合并存储改进方案

综上所述,小文件合并存储是解决目前LOSF问题最为有效的策略。著名的社交网站Facebook和电子商务网站淘宝等都采用了这种方式。小文件合并存储的机制,核心思想是将多个小文件合并成一个大文件中,合并时同步生成索引文件,小文件的元数据,例如位置信息、文件名称等与实际文件是分开存储的,在具体访问文件的时候,会首先获取元数据的offset和size等关键信息,然后依据索引检索实际文件。

但是这种合并存储方法也存在以下一些问题:

小文件以合并存储的方式存放到磁盘上,小文件之间需要严格的边界来区分,一旦写入便不能再修改边界,因此在不同数据块上修改或删除单个小文件时,无法立即回收存储空间,会产生一些磁盘碎片,不仅造成访问性能下降,还导致磁盘空间浪费。

本文提出对一种改进的小文件合并存储的方法,针对现有的小文件合并存储的方法在修改和删除单个小文件时,无法立即回收存储空间,导致磁盘空间浪费等问题,提出以文件的大小为参数,先对小文件进行分组,再对同一组的小文件进行合并存储在同一个数据块中,存储时优先选择数据块中空闲的单元。在修改单个小文件时,如果修改后的文件大小发生变化,就将小文件移至其对应的文件组里,存储到相应的数据块里;如果修改后的文件大小不变,就直接修改。这样可以减少因修改和删除单个小文件产生的数据块中空闲单元,优化数据布局,及时回收存储空间,提高磁盘空间的利用率,弥补现有的合并存储方法的不足。

3 小文件合并存储改进方案具体流程

3.1 新增文件的流程

(1)客户端发出请求

(2)判断文件大小

(3)根据文件大小选择数据块组group_x

(4)在数据块组 group_x中找到一个可写的block_id

(5)判断block_id中是否有空闲的存储单元

(6)如果没有,对同一组待写的小文件合并成一个大文件,如果有,在block_id中选择空闲的存储单元

(7)把文件写入磁盘,同时生成元数据+索引文件

(8)向客户端返回成功信息

小文件合并存储改进方案在新增文件时,会以文件的大小为参数,先对小文件进行分组,再对同一组的小文件进行合并存储在同一个数据块中,存储时优先选择block中空闲的单元。而原有方案不考虑文件大小,对新增文件直接合并,以追写的方式,存储在数据块中。

图1 新增文件流程图

3.2 删除文件的流程

(1)客户端请求

(2)查找文件的元数据,获取文件名称、位置信息等属性

(3)确认文件所在group_x和block_id

(4)根据元数据和索引表的文件名称、offset和size,找到文件File_xx

(5)删除File_xx,修改文件File_xx的存储单元变为空闲状态,同时更新元数据和索引表

(6)向客户端返回成功信息

小文件合并存储改进方案在删除文件时,会将文件所在的存储单元修改为空闲状态,当有相同大小的文件写入时,优先考虑。

图2 修改文件流程图

3.3 修改文件的流程

(1)客户端请求

(2)判断文件大小是否变化

(3)如果是,把文件File_xx看作一份新文件处理,增加新文件(详见新增文件流程),删除旧文件(详见删除文件流程)

(4)如果不是,查找文件的元数据,获取文件名称、位置信息等属性,确认文件所在group_x和block_id,根据元数据和索引表的文件名称、offset和size,找到文件File_xx,修改 File_xx

(5)向客户端返回成功信息

小文件合并存储改进方案在修改文件时,会先判断文件大小是否发生改变,如果发生改变,会将文件看作一份新文件处理,同时删除旧文件。

图3 删除文件流程图

4 小文件合并存储改进方案的优点

小文件合并存储改进方案相对于现有方案,具备以下优点:

(1)及时回收存储空间,有效减少磁盘碎片;

(2)优化数据布局,提高磁盘空间的利用率;

(3)显著提高存储系统的数据访问的效率。

小文件合并存储改进方案将来可能的应用场景,分布式存储系统和海量小文件云存储等。

5 结语

本文在分析海量小文件存储的主要问题的基础上,探讨了LOSF优化策略,提出了一种小文件合并存储的改进方法和流程,具体包括新增文件、删除文件和修改文件的流程,并阐明了小文件合并存储改进方案的主要优点,为小文件合并存储提供了一种解决方案。

猜你喜欢
空闲客户端流程
你的手机安装了多少个客户端
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
工星人平台注册流程
“鸟”字谜
与元英&宫胁咲良零距离 from IZ*ONE
西湾村采风
违反流程 致命误判
彪悍的“宠”生,不需要解释
虚拟专用网络访问保护机制研究
四川省高考志愿填报流程简图