2014年第O6期 云环境下海量小文件存储技术研究综述 周,李强,陈新,胡旭 (空军预警学院,湖北武汉430019) 摘要:随着物联网、云计算和大数据技术的飞速发展,越来越多的应用正向数据密集型转变,同 时小文件数量正以指数级增长,传统的文件系统已经不能满足海量小文件存储需求,针对小文件的存储 技术越来越受到业界重视。文章首先介绍小文件存储带来的问题并分析了原因,然后介绍了小文件存储 优化技术,并介绍了三种典型的小文件存储系统,最后对小文件存储问题进行了总结与展望。 关键词:大数据;小文件;存储系统;存储优化 中图分类号:TP309 文献标识码:A 文章编号:1671—1122(2014)06—0011—07 Review of Massive Small—file Storage Technology ZHOU Guo—an.LI Qiang.CHEN Xin,HU Xu ir Force Early WarningAcademy,Wuhan Hubei 430019,China) Abstract:With the rapid development of networking,cloud computing and big data technology,more and more applications are changing to data-intensive,meanwhile,the number of small-ilfes is growing exponentially,traditional ilfe system has been unable to meet the demand for storage of massive small-files,storage technology of small-files obtains more and more attention in storage field.This paper introduces he probltems of massive small—file storage and the reasons,then introduces some optimization technology of small・ifle storage,and introduces three typical small—file storage systems,makes a summary and outlook for he itssue of small-file storage inalfly. Key words:big data;small-file;storage system;storage optimization 0引言 随着计算科学的飞速发展,越来越多的信息被数据化,越来越多的应用向数据密集型转变 】,特别是科学计算、高 性能计算、Web服务等特定的应用领域导致图片、邮件、文本、互联网档案口 等小文件正以指数级速度增长。一个大型 的社交网站,仅每周的图片信息就多达60TB【3 。Facebook存储系统中,用户已经上传了150亿张照片,加上缩略图,总容 量超过1.5PB。淘宝作为我国最大的电子商务平台,图片服务器存储的图片超过286亿张,总容量达到1PB。腾讯用户在 相册上传的图片数达600亿,总容量达12PB。在这些海量的图片文件中,大部分是单个文件容量不超过1MB的小文件。 根据美国国家能源研究科学计算中心一个关于共享并行文件系统的研究显示,该系统中存储的1.3×107个文件中,99%的 文件大小不超过64MB,43%的文件大小不超过64KB【4]。美国太平洋西北国家实验室的研究也得出了类似的结论,一个存 储1.2×107个文件的存储系统中,94%的文件大小不超过64MB,58%的文件大小不超过64KB 。传统的分布式文件系统 面向大文件数据存储与访问而设计,面对海量小文件存储与访问,存在元数据结构效率低、主服务器性能瓶颈、磁盘I/O 效率低、磁盘空间利用率低和网络通信延时高等一系列瓶颈问题,如何对海量小文件进行高效存储与访问支持,已经成为 存储领域不可回避的重大课题。 1小文件存储的问题及原因 目前,分布式存储系统都采用主从结构(Master/Slaver),包括Google使用的GFS嘲、Yahoo的HDFS 及Amazon的 ● 收稿日期:2013—12—27 基金项目:国家自然科学基金[61070201] 作者简介:周(1989一),男,湖南,硕士研究生,主要研究方向:军事信息系统工程;李强(1969一),男,湖南,教授,博士,主要研究方向 军事云计算系统体系架构和云计算关键技术;陈新(1981-),男,江西,讲师,博士,主要研究方向:云计算与信息安全;胡旭(1990一),男 湖北,硕士研究生,主要研究方向:智能技术与智能决策。 2014年第O6期 Pd = /CI …………………………………………(6) 行优化。 其中, 表示实际存储数据容量,C.【 。表示文件占用 2.1通用解决方法 通过小文件合并成大文件,可以有效解决小文件存 储和访问过程中产生的各种问题。小文件合并有很多实 现方式,可以利用分布式文件系统自带工具(如HDFS的 数据块容量总和,CI 定义如公式(7)。 C'I I= ‘ ………………………………………………(7) 其中,R表示文件占用的数据块数,B表示分布式文 件系统数据块的大小(很多系统默认为64MB)。大文件 HAR)合并文件,可以利用客户端程序合并文件后再上传, 也可以采用在分布式文件系统上构建的合并引擎实现 的容量一般远大于数据块的容量,一个文件跨越多个数 据块,理想情况下除了最后一个数据块会产生磁盘碎片, 其余数据块都会被写满。小文件容量一般小于数据块的容 量,多个文件存储在一个数据块,当数据块的碎片容量小 于最小的文件大小时,这些空间将得不到利用,造成空间 浪费。假设存储总容量相同的文件,小文件存储形式一般 占用的数据块数R大于大文件存储形式数据块数,特别 是当存储总容量巨大时,由于磁盘碎片浪费的存储空间将 十分巨大。 5)网络通信延时高,记为D(Delay)问题。在分布式 文件系统中读取一个文件所需要的时间主要包括:客户端 向主服务器发送一个请求的时间T ,主服务器在内存中 查询文件元数据的时间T ,主服务器将元数据返回给客 户端的时间T ,客户端发送读取请求到相应I/O服务器 的时间T m,数据块读取时间T ,数据块到达客户端的 时间T T 、T 、T 。是请求消耗时间,一般认为是 常数。请求N个文件的总响应延时为公式(8)。 =(丁cM+TM + )・N+∑Tmeca +∑T一+R Tt一..(8) 其中,R是读取的数据块的数量,最坏的情况是R=N。 假设存储总容量相同的数据,小文件存储形式占用的数据 块数记为R,文件数记为N,访问总网络延时记为T 大文件存储形式占用数据块数R ,文件数记为Ⅳ ,访问 总网络延时记为T 】 ,因为N>>JⅣ ,R>R ,所以T l>T 。la】’, 说明以小文件形式提供访问时网络通信延时较高。 2小文件存储优化技术 针对分布式文件系统处理小文件存储与访问存在的5 个方面的问题,有许多技术能有效地解决分布式文件系统 在小文件存储与访问过程中存在的问题,而这些技术可分 为两类:一类是通用解决方法,它能处理小文件带来的各 种问题,最广泛的就是文件合并技术;一类是针对特定问 题的解决方案,它针对小文件带来的某个或某几个问题进 文件合并。 文献[111利用HAR技术实现了小文件的合并,把小 文件分组归档后进行文件合并,Namenode保存Master Index,对合并大文件进行索引,Index和Data保存在 Datanode,Index能够对小文件进行索引,通过以上方式在 不增加Namenode内存的前提下提高了Namenode元数据 的存储效率。文献[12】结合Web GIS应用,以Hadoop为 存储平台开发了HDWeb GIS原型系统,根据图片内容中 地理位置进行分组,同组文件进行合并,将小文件组合成 大文件并为其建立全局索引,提高了小文件I/O性能,降 低了Namenode内存占用率。文献[131针对PPT课件的 存储问题,提出将小文件合并成大文件,并提供文件的预 取机制,提高小文件的存储和访问效率。文献[14]从用 户的角度出发,面向所有文件,通过改进概率潜语义分析 (PLSA模型)挖掘系统中用户的访问行为规律,分析文件 与用户访问任务之间的相关性,提出基于用户访问任务的 合并和预取模型,实现对小文件的合并与预取,以改善系 统中小文件存储访问带来的性能瓶颈问题。文献[151利用 RDBMS作为小文件的访问入口,以提高访问效率,同时将 RDBMS作为小文件合并工具形成大文件存储在Hadoop云 端并根据应用场景,对短时间内多数据源产生的存储请求 以时间来进行组织文件合并,对长时间内单数据源产生的 存储请求以数据源来组织文件合并,充分利用了RDBMS 访问效率高和Hadoop适合存储容量巨大的大文件的优 势。文献[16】利用基于层次分析法(AHP)的多属性决策理 论,根据当前系统读取文件时间、合并文件时间、内存消 耗情况等预测下一时刻系统的负载,从而使利用Hadoop archive技术实现小文件合并的操作在最优的时间进行,在 不影响系统性能的情况下实现了小文件存储效率的提高。 文献【l7】提出一种小文件合并算法HIFM,通过考虑小文 20l4年第06期\ 件相关性和目录结构来完成小文件合并成大文件的操作、 生成分层索引,采用分布式和集中式存储结合的方式存储 索引,并采取索引和文件数据预加载的技术来提高小文件 件系统HVFS来管理海量文件,通过将文件系统元数据服 务映射为分布式表存储的缓存服务,实现对海量文件名字 空间的管理,并通过改进分布式可扩展哈希来管理文件元 数据,实现近似单跳的命名空间,分布式结构能有效应对 存储和访问效率。 2.2特定问题解决方法 面对小文件存储和访问带来的各种问题,除了通用的 合并技术,研究者们还针对特定问题提出了相关技术,取 主服务器的单点瓶颈,提高数据访问效率。 针对T问题,最简单的方案是在硬件上做优化,采用 性能更高的SSD做底层存储介质,但效果有效且造价昂 得了较好的效果。 针对c问题,文献[3】提出竭尽全力的减少每个图片 的元数据,Haystack把元数据分为应用元数据和文件系统 元数据,应用元数据用来为浏览器构造检索图片所需的 URL,采用单独的服务器处理,文件系统元数据用于在磁 盘上检索文件,由于应用元数据分担了部分文件元数据信 息(如存储路径),文件系统元数据更加简单(逻辑卷、物 理Store、图片ID),Haystack希望在内存中执行所有的文件 系统元数据查询,让系统腾出更多的性能来读取真实数据, 增加了系统整体的吞吐量。文献【18】介绍了淘宝TFS的 元数据管理方式,利用用户访问时并不关心文件名的特点, 将部分元数据内置在文件的文件名中(如文件大小、创建 时间、访问频度等),很大程度上简化了文件元数据结构, 提高了元数据结构的效率。 针对M问题,文献【19]提出基于对等网络(P2P)的 分布式存储系统,去掉了中心服务器Master,在系统中引 入中心路由节点,中心路由节点上存储系统所有节点的路 由信息,提供文件到存储节 的直接映射机制,客户端预 取中心路由 数据,并有客户端采用机制实现从文件到 存储节点的映射,从而有效解决主服务器瓶颈问题。文 献【20】提出一种基于NOSQL的多Namenode节点的方案, 将原本存储在单一Namenode内存中的所有元数据迁移到 MongoDB分布式数据库集群中,大大降低了Namenode的 工作负荷,从而提高了整个系统的运行效率。文献[21】提 出一种独特的元数据存储方法,系统把部分元数据放在磁 盘上存储而不是主服务器内存中,这样做的依据是某一时 刻元数据的工作集相对于元数据总量来说很小,元数据全 部存储在内存不是必要的。通过磁盘存储为元数据提供更 大的存储空间,降低主服务器性能瓶颈,但是元数据查询 性能将下降。文献[22】提出基于分布式表存储的分布式文 贵。文献【23】提出一种优化的小文件存储结构,将逻辑上 连续的数据尽可能地存放在连续的磁盘空间上,从而提高 预读数据的命中率,减少磁盘寻道时间。其次,通过使用 Cache充当元数据服务器的角色和简化文件信息节 的方 式减少查找文件节点信息的开销,从而提高I/0性能。文 献f24]提出待合并数据使用单独的内存服务器缓存的方式 来避免主服务器瓶颈,提高其性能,小文件上传后存储在 内存数据库Redis中,仅在合并后才进行存储操作,避免 了单个小文件的磁盘I/O,提高了磁盘I/O效率。 针对s问题,最简单的方式是对用户透明的把小文件 转化成大文件处理。文献[25】提出在HBase建立一张大表, 用单独列簇存储图片内容,其他列簇存储相关元信息,在 存储每个列簇时,会以Key—Value的方式存储每行单元格 1)中的数据,形成若干数据块,然后把数据块保存到 HFile中,最后把HFile保存到后台的HDFS。上述过程隐 藏了对小文件的打包过程,无需进行二次开发即可实现系 统层的小文件合并,最后将合并大文件写人HDFS,减少了 小文件带来的磁盘碎片,提高了磁盘利用率。 针对D问题,文献[26]提出利用内存数据库 Memcached做读取Cache,并把Cache分为permanent Cache和temporary Cache,temporary Cache分为low priority temporary Cache和high priority temporary Cache,利用 Cache分级、LRU和LFU算法结合的方式,有效避免大 量小文件带来的非旧数据被置换出内存的问题,提高了 Cache命中率,缩短了数据读取时间,减少了文件访问的 响应延时。文献【27]提出Eager I/O思想,把Rendezvous I/ 0中的Getattr-Write Request-Write Resp0nse—P.dy10ad— Write Completion Ack机制改成Eager I/O的Getattr-Write Request+Payload--Write Completion Ack机制,通过减少单 次数据读写的请求数,降低了网络的通信延时。 (Cel3三种典型的小文件存储系统 随着小文件数量指数级增长,存储系统处理小文件面 对的压力越来越大,小文件存储与访问技术也越来越受到 研究者的重视。目前,国内外都针对小文件存储访问研制 了成熟的存储系统,下面介绍几种典型代表。 3.1 Facebook Haystack Haystack提出了一种通用的基于HTTP的对象存储架 构,在Haystack中把多个图像聚集到一个Haystack存储文 件,控制文件数量,对大文件进行维护,同时区分应用元 数据和文件系统元数据,应用元数据用来为浏览器构造检 索图片所需的URL,应用元数据由Haystack Directory处理, 文件系统元数据用于在磁盘上检索文件。通过以上机制消 除文件系统不必要的元数据开销,从而减少文件系统元数 据负荷,能够在内存索引中实现系统元数据查询,用少量 的I/O操作来完成图像数据的检索。 Haystack ore 图4 Facebook Haystack系统架构 Haystack架构包含3个核心组件:Haystack Store、 Haystack Directory和Haystack Cache,如图4所示。Haystack Store是持久化存储系统,并负责管理图片的文件系统元数 据,Haystack Store将数据存储在物理的卷上,不同机器 上的多个物理卷将对应一个逻辑卷,Haystack将一个图片 存储到一个逻辑卷时,图片被写入到所有对应的物理卷。 Haystack Directory维护了逻辑卷到物理卷的映射以及其他 应用元数据(比如图片寄存在哪个逻辑卷、某个逻辑卷的 空闲空间等o Haystack Cache的功能类似外部CDN,它 帮Haystack Store挡住热门图片的请求(可以缓存的就绝 不交给下游的持久化存储)。在设计Haystack时,假 设它处于一个没有CDN的环境中,即使有CDN也要预防 CDN节 故障导致大量请求直接进入Haystack Store,所以 2014年第O6期 Haystack Cache是十分必要的 。 当用户访问一个图片时,Web服务器使用Directory为 图片来构建一个URL(Directory中有足够的应用元数据来 构造URL)。URL包含浏览器依次访问CDN、Cache、St蔓 ⑧ t仆日 一 嘲 一 ore 存储 的相关信息。一个典型的URL如下: http://<CDN>/<Cache>/<Machine id>/ <Logical volume,Photo> <CDN>指明了从哪个CDN查询此图片,CDN缓存命 中后可使用URL中<Logical volume,Photo>查找缓存的 图片。如果CDN缓存未命中,它从URL中删除<CDN> 相关信息,然后访问Cache。Cache的查找过程与之类似, 如果还没命中,则去掉<Cache>相关信息,请求被发至 指定的Store机器(<Machine id>)。如果请求不经过CDN 直接发至Cache,其过程与上述类似,只是少了CDN这个 环节。 3.2淘宝TFS TFS(Taobao FileSystem)是一个高可扩展、高可用、 高性能、面向互联网服务的分布式文件系统,主要针对海 量的非结构化数据,它构筑在普通的Linux机器集群上, 可为外部提供高可靠和高并发的存储访问。TFS提供海量 小文件存储与访问服务,通常文件大小不超过1M,满足了 淘宝对小文件图片存储的需求。 通常一个TFS机群由双主控节 NameServer和多存储 单元节 DataServer组成,如图5所示。在TFS中,许多 /J、文件合并成一个称为块(Block)的大文件进行存储,每 个块都有唯一的标识(Block ID),Block ID由NameServer 在块创建时进行分配,Block实际数据存放在DataServer 节点上,每个Block中存储着许多小文件,DataServer进 程为每个文件分配块内唯一的File ID来标识小文件,并 用Index来描述每个小文件在块内的位置,为了加快文件 检索,Index一般会装载进DataServer内存。NameServer 主要功能是管理维护Block和DataServer相关信息,包括 DataServer加入、退出及心跳信息,Block的创建、删除、 复制,Block和DataServer对应关系的建立、解除,为了考 虑容灾,NameServer采用双机热备,两台服务器同时运 行,一台为主,一台为备,HeartAgent负责它们之间的切换。 DataServer主要功能是负责实际数据的存储和读写[2810 一...... —————————....., — ————— 。..... .————————........——————— —....... —————— — ... .—————————— . .. .. ————————— ....... — ———————— ........———————————. . .... ,——————, /2014年第06期 其目标是通用分布式文件存储,Haystack提供从浏览器到 CDN再到存储节 的一整套解决方案,MogileFS也主要关 注文件存储,没有提供类似H aystack的整套解决方案。其 次,面对文件元数据查询问题,Haystack和TFS都含有元 数据分解的思想,采用简化文件系统元数据的方法,尽量 是元数据查询在内存中完成,MogileFS主要通过MySQL数 【5J FELIX E.Environmental molecular sciences laboratory:static survey of ifle system statistics[EB/OL].http://www.pdsi—scidac org/ stats/index. html,20 1 i一02—23. [6】Ghemawat S,Gobioff H,Leung S T The Google file system[C]// ACM SIGOPS Operating Systems Renew.ACM,2003,37(5):29—43 7】Borthakur D The hadoop distributed file system:Architecture and design[J].Hadoop Project Website,2007,1 1:21 [8]AMAZON.Amazon simple storage service【EB/OL】.http://www. amazon.corn/s3,201 1-03—01. 据库来保存系统所有元数据,用来支持元数据的快速查询。 再次,对于存储节 的结构设计,TFS中的DataServer节 依然遵循Master—Slaver的机制,而Haystack中的Haystack 『9]张启飞,张尉东,李文娟,等.基于对等网络的面向小文件的云 存储系统【7】.浙江大学学报(工学版),2013,47(0]):8-l4, 【10]周品.Hadoop云计算实战【M].北京:清华大学出版社,2012. f1 1J Mackey G,Sehrish S,Wang J.Improving metadata management for small files in HDFS[C】.Cluster Computing and Workshops,2009. CLUSTER’09 IEEE International Conference on.IEEE.2009.1—4. Store节点和MogileFS中的Storage Nodes节 偏向于对等结 构设计。最后,Haystack没有开源支持,TFS以前不支持开源, 现在提供开源TFS,MogileFS是完全开源分布式文件系统, 开源项目使用户根据实际场景的二次开发成为了可能。 [1 2]Liu X,Han J,Zhong Y,et a1.Implementing WebGIS on Hadoop:A case study of improving small file I/O performance o1"1 HDFS[C].Cluster Computing and Workshops,2009.CLUSTER’09 IEEE International Conference on.IEEE,2009.1—8. [13]Bo Dong,Jie Qiu,Qinghua Zheng,et al A Novel Approach to Improving the Eficifency of Storing and Accessing Small Files on Hadoop: 4结束语 随着计算科学的飞速发展,对海量小文件处理的研究 逐渐成为研究热点。本文介绍了分布式文件系统在为海量小 a Case Study by PowerPoint Files[C] International Conference on Services Computing,201 0.65—72. 『14]王涛,姚世红,徐正全,等.云存储中面向访问任务的小文件合 并与预取策略Ul_武汉大学学报(信息科学版),2013,(12):1504— 1508. 文件提供存储与访问支持时存在的问题并分析了原因。解 决在小文件存储与访问过程中存在的问题,最简单最有效地 方式是进行小文件合并,形成大文件再进行存储与访问。同 时,研究者还提出了许多关于小文件的关键技术和相关研究, 通过简化元数据结构、减少主服务器负荷、利用写缓存提 『15]刘小俊,徐正全,潘少明.一种结合tlA)BMS和Hadoop的海量小文 件存储方法U】.武汉大学学报(信息科学版),2013,(01):113—115,120 【16]余思,桂小林,黄汝维,等.一种提高云存储中小文件存储效率 的方案 西安交通大学学报,2011,(06):59—63. 【17]张春明,芮建武,何婷婷.一种Hadoop小文件存储和读取的方 法[71l计算机应用与软件,2012,(11):95-100. 【18]胡品芳.结构化存储系统中元数据集群的设计与实现【D]成都: 电子科技大学,2012. [19]张启飞,张尉东,李文娟,等.基于对等网络的面向小文件的云 高I/O速率、利用读缓存提高文件读取效率、减少文件存取 请求次数来降低网络时延等手段来优化小文件存储与访问。 最后,本文介绍了三种典型的小文件存储系统,它们都是针 对各自特定的应用环境和存储需求而设计并实现,侧重点各 不相同。在未来的应用中,研究者要根据应用牦 和需求选 择合适的小文件存储系统或构建适合自己应用和需求的存储 系统来满足个性的存储需求,希望本文能对未来小文件的 存储和访问技术的研究者提供一些参考。 (责编吴晶) 存储系统U1.浙江大学学报(X-学版),2013,(01):8—14+93. 【2O]田炽基于HDFS的高可扩展性云存储的研究与实现【D】.广州: 华南理工大学,2012 【21]刘立坤,武永卫,徐鹏志,等.CorsairFS:一种面向校园网的分 布式文件系统『11l西安交通大学学报,2009,(08):43—47. [22]马灿,孟丹,熊劲曙光星云分布式文件系统:海量小文件存取卟 小型微型计算机系统,2012,(O7):1481—1488. 123】赵跃龙,谢晓玲,蔡咏才,等.一种陛能优化的小文件存储访问策 略的研究【l_.计算机研究与发展,2012,(07):1579—1586. [24】刘高军,王帝澳.基于Reds的海量小文件分布式存储方法研究Ⅱ]. 计算机工程与科学,2013,(10):58-64. 【25]朱晓丽,赵志刚.一种基于HBase的海量图片存储技术U】.信息 系统工程,2013,(08):22—24. 参考文献 【26]Xu C,Huang X,Wu N,et a1.Using memcached to promote read throughput in massive small—file storage system[C]Grid and Cooperative 【1】王玲惠,李小勇,张轶彬.海量小文件存储系统研究综述U].计 算机应用与软件,2012,29(0 8):106-109. 【2】Baker M G,Hartman J H,Kupfer M D,et a1.Measurements of a Computing(GCC),2010 9th Intemational Conference on.IEEE,2010:24—29. 【27]Carns P,Lang S,Ross R,et a1.Small—file access in parallel file systems[C].Parallel&Distributed Processing.2009.IPDPS 2009.IEEE International Symposium on IEEE,2009.1—11. distributed file system[C].ACM SIGOPS Operating Systems Review. ACM,1991,25(5):198—212. 【3】Beaver D,Kumar s,Li H C,et al Finding a needle in Haystack:Face— book’s photo storage[EB/O L1 OSDI,2010 【4]PATASCALE DATA STORAGE INSTITUTE.NERSC file system statics【EB/OLt.http://pdsi,nemc.gov/filesystem.htm,2007—11—11 【28]张宇基于对象存储的分布式小文件系统的研究与设计【D】.北 京:清华大学,2012. 【29】田磊.基于Mo ̄leFS建设廉价的电子档案管理系统 现代计算 机(专业版),2009,(11):170—171,192 17 |__