海量小文件的元数据管理、存储性能以及访问效率等问题是目前学术界和工业界公认的难题。浪潮AS13000软件定义存储系统利用包括小文件聚合功能在内的独特技术,帮助用户应对存储资源浪费、效率低下等诸多挑战,成就大数据与人工智能时代的企业核心竞争力。
海量小文件存储访问带来公认难题
当今世界,互联网、大数据应用迅猛发展,物联网、人工智能、云计算 技术日新月异,随之而来的是各种企业和个人应用持续不断地产生亿级甚至是百亿级的海量小文件。这些小文件的元数据管理、存储性能以及访问效率等问题因而成为学术界和工业界公认的难题。
例如,国内目前最大的电商网站淘宝存储的商品图片超过 200 亿张,这些文件的平均大小仅为 15KB 左右,国外著名的社交网站Facebook 存储的图片总量更是超过了600亿张;在线视频播放服务中,每个视频会被切片服务器分割成 1MB 左右的分片文件,一部动画电影所包含的图片文件可能会超过 500 万张,平均大小为15KB;一些在线阅读图书每页内容均会被扫描成大约几十KB的图片文件……
因此,在购物网站、广电、网络视频等场景下的应用,存储系统中小文件数量众多,其空间占用一般在1M以下,操作特征为一次写入,多次读取。由于每个小文件存储都会执行一次全写流程,操作频繁,使得分布式文件系统的磁盘压力剧增并导致以下两方面的问题:
资源浪费:海量小文件的数据读取时,往往每个小文件的大小都小于一次数据传输的最小块大小。也就是无论真正有用的数据量多大,都会获取固定大小的数据,这使得有用数据占获取数据量比例过低,从而导致内存、带宽的浪费。
高访问延迟:当用户读取大量小文件时,首先选择与元数据服务器交互,当访问过于集中、信息交互过于频繁时,所产生的延迟显而易见。并且,由于很多系统目前并没有提供针对高访问延迟的预取功能,在数据存储中没有考虑文件之间的关联性,因而加剧了延迟问题。
浪潮AS13000二大必杀技应对海量小文件存储挑战
针对上述难题,浪潮AS13000软件定义存储系统推出了自己的独门绝技,来帮助用户应对典型应用场景下的存储挑战。这其中包括:面向全局存储资源的条带化,确保应用数据的并发写入、读取;提供小文件聚合功能,有效降低小文件写入磁盘次数、减轻写数据压力;提高磁盘使用率,读小文件时将所在对象读入缓存,提高读命中率、缩短读I/O路径。本文重点阐述浪潮AS13000在小文件IO优化方面的技术优势。
技术优势一::小文件聚合解决存储性能大难题
首先,浪潮AS13000小文件聚合技术将碎片化小文件聚合成一个大文件,在数据读写时提前读取相关数据,提高缓存命中率,使得小文件(128KB以内)读写性能提高100%,读集群性能提高50%。
图1:小文件聚合技术示意图
原因在于,相比小文件,聚合文件在写入时大幅减少了数据写OSD(基于对象的存储设备)的次数,减少了OSD的写入压力,因而大大减少了客户端对本地缓存(内存)的使用。小文件顺序写时,数据写OSD次数分别可以减少99.9%(4KB),98.4%(64KB),96.8%(128KB)。
AS13000在小文件顺序读时,亦可以有效缩短IO路径。原因是,在聚合条件下,小文件分别可以获得99.9%(4KB),98.4%(64KB),96.8%(128KB)的缓存命中率,从而缩短IO路径,提升读文件性能,小文件随机读的缓存命中率也能达到85%以上。
其次,以重新写代替修改写,降低写延迟。由于小文件一般情况下一次写操作即可完成,同时为了降低复杂度,AS13000对于已下盘到聚合文件的小文件不采取修改写方式,而是采取“读取源文件->删除聚合文件中的源文件->重新写普通文件”的方式进行修改写入,以降低写延迟。
第三,建立智能定时扫描、碎片整理、垃圾清理机制,提高存储空间利用率。在聚合文件中,多个源文件共用一个对象,删除源文件并不能真正释放所占用的空间,所以导致存储空间的浪费;同时,源文件数量的减少还导致在读取文件时缓存命中率降低,影响读性能。为此,AS13000采用可配置的定时扫描聚合文件信息:聚合文件的使用率低于p(设定值)且t时间(设定值)内没有修改过,则将聚合文件放入清理队列;扫描处理完所有聚合文件,若清理队列有需要清理的聚合文件,则触发碎片整理,从而提高空间利用率。
垃圾清理的任务就是计算聚合文件中有效数据在文件总大小中的占比,当低于设定的阈值,且当聚合文件在t时间内无修改时,系统对聚合文件进行清理,以提高存储空间利用率、提升小文件读性能。
图2:聚合文件使用率低于p值时进行垃圾清理,重新写入新聚合文件
技术优势二:通过数据预读提高读取速度
浪潮AS13000在读取某个目录下的文件时,会顺序预加载该文件后面的几个文件内容到缓存中,以加快其读取速度;此外,还使用多节点并发读操作,以加快预读速度。
同时,在非同步读取目录下的文件时,AS13000还会触发对其后续文件的读请求,且这些读请求是异步的,不影响本次用户读操作的返回。如果用户紧接着读取下一个文件,且此操作不是同步操作,那么就可以直接将本地缓存的数据读出,从而避免了与OSD的交互,提高了性能。
与此同时,在预读文件时,若有对该文件的写入操作,AS13000会把当前读文件放入到等待读队列中并返回,等写完成后再发信号通知重新读该文件,并将之放入到本地缓存,从而提高用户读取速度。
由于上述独特的技术机制,浪潮AS13000软件定义存储产品很好地解决了小文件读写速度慢、访问延迟高、资源浪费等问题,帮助广电、电商、网络视频等用户从容应对海量小文件存储与访问挑战。目前,AS13000系统已经在中国资源卫星应用中心、国家广电总局、济南商行、中国移动、成都交通等金融、电信、政府、公安、大企业等行业客户中得到广泛应用,充分验证了其领先技术。未来,浪潮AS13000软件定义存储将继续引领大数据与人工智能时代的存储技术,为用户增加其企业的核心竞争力不断创新。