CN117519612B - 基于索引在线拼接的海量小文件存储系统与方法 - Google Patents

基于索引在线拼接的海量小文件存储系统与方法 Download PDF

Info

Publication number
CN117519612B
CN117519612B CN202410019858.6A CN202410019858A CN117519612B CN 117519612 B CN117519612 B CN 117519612B CN 202410019858 A CN202410019858 A CN 202410019858A CN 117519612 B CN117519612 B CN 117519612B
Authority
CN
China
Prior art keywords
small file
storage
small
file
cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202410019858.6A
Other languages
English (en)
Other versions
CN117519612A (zh
Inventor
文刘飞
陈坚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Sandstone Data Technology Co ltd
Original Assignee
Shenzhen Sandstone Data Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Sandstone Data Technology Co ltd filed Critical Shenzhen Sandstone Data Technology Co ltd
Priority to CN202410019858.6A priority Critical patent/CN117519612B/zh
Publication of CN117519612A publication Critical patent/CN117519612A/zh
Application granted granted Critical
Publication of CN117519612B publication Critical patent/CN117519612B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种基于索引在线拼接的海量小文件存储方法,写入小文件时,按顺序写入缓存对象,在小文件索引中记录小文件与缓存对象的对应关系;当缓存对象大于设定缓存大小时,创建一个新的缓存对象,在新的缓存对象中继续写入;将完成缓存的缓存对象写入到对应的存储对象中,小文件索引中更新小文件与存储对象的对应关系,存储对象中的开始位置;释放对应的缓存对象空间;在日志模块中记录对缓存对象的操作以及本操作所关联的小文件信息。本发明,用掉电不丢失的存储盘来缓存小文件,提升了数据的安全性,用多个文件直接拼接成可以直接操作存储器件的空间,提升了写入效率,在底层,直接操作存储器件,提升了数据访问效能与数据安全性。

Description

基于索引在线拼接的海量小文件存储系统与方法
技术领域
本申请属基于大数据技术领域,特别涉及基于索引在线拼接的海量小文件存储系统与方法。
背景技术
缩略语和关键术语定义
MB:全称MByte,计算机中的一种储存单位,读作“兆”。
Flash芯片:flash芯片意思是一种非易失性存储器(NVM),用于在电子设备中存储数据。它是一种基于闪存技术的芯片,能够持久地存储数据,即使在断电的情况下也能保持数据不丢失。Flash芯片是被广泛应用于各种电子设备中,例如USB闪存驱动器、存储卡(如SD卡和microSD卡)、固态硬盘(SSD)以及各种移动设备中的内置存储器(如智能手机和平板电脑)。Flash芯片的优点在于它的读写速度较快,功耗低,容量大。它可以反复擦写和重写数据,因此非常适合于需要频繁读取和写入数据的应用。由于这些优势,Flash芯片成为了现代电子设备中主要的存储媒介之一。
Block:块,Block是文件系统上的概念,一般文件系统block大小为4K。Sector是硬盘/U盘最小读写单元,一般为512字节。
Sector(扇区)与 Block(块), 硬盘的最小存储单位:sector(扇区),每个扇区储存 512 字节;操作系统会一次性连续读取多个扇区,即一次性读取多个扇区称为一个block(块), 文件存取的最小单位:block(块),由多个扇区组成;block 的大小常见的有1KB、2KB、4KB,在 linux 中常见设置为 4KB,即连续 8 个扇区组成一个 block;/boot 分区的 block 一般为 1KB。
固态硬盘,是一种主要以闪存作为永久性存储器的计算机存储设备。它是由控制单元和存储单元组成。其被广泛应用于工控、视频监控、网络监控、网络终端、导航设备等诸多领域。
机械硬盘,也叫磁盘,主要由盘片、磁头、盘片转轴及控制电机、磁头控制器等等机械装置组成的。
固态硬盘的存储介质一般是采用闪存即FLASH芯片作为存储介质。机械硬盘用磁盘作为存储介质,机械硬盘读写速度依赖于电机的转速,因为需要依靠电机带动磁盘高速转动使磁头找到指定位置进行读写。
Flash芯片是非易失性存储器,内部由多个块组成,每个块都是一定数量的页(Page)组成,每页又可以分成若干个扇区(Sector),扇区是Flash芯片的操作基本单位,通常为512字节或1K字节大小,而整个Flash芯片的容量则可以达到数个GB以上。Flash芯片的特点是擦写次数是有限的,每个扇区只能擦写数千次甚至更少,一个存储位置在每次写入的时候,需要先擦除数据,一般擦除数据是按照扇区擦除。
磁盘在格式化时被划分成许多同心圆,这些同心圆轨迹叫做磁道(Track)。所有盘面上的同一磁道构成一个圆柱,通常称作柱面(Cylinder)。一块硬盘驱动器的圆柱数(或每个盘面的磁道数)既取决于每条磁道的宽窄。操作系统以扇区(Sector)形式将信息存储在硬盘上,每个扇区包括512个字节的数据和一些其他信息。
磁盘上数据读取和写入所花费的时间可以分为三个部分。1.寻道时间,2.旋转延迟,3.传输时间。磁盘的读写,是按照扇区形式进行,一次读写多个相邻扇区,具有较高的操作效率。
互联网业务的规模越来越大,很多基于网络的业务要求响应的时间越来越短,同时还要求数据不能丢失,比如每天进行的支付操作,数据涉及金钱流动,要求交易过程数据写入到掉电不丢失的存储装置中,比如固态硬盘或机械硬盘,海量的操作记录,趋向基于用户建立独立的文件进行记录管理,这对海量小文件的存取提出巨大的技术挑战。
固态硬盘或机械硬盘的读写,有不同的特点,固态硬盘的写入速度快于硬盘,但是写之前,需要擦除操作,而擦除需要基于扇区操作。机械硬盘的读写速度较慢,无法用于需要快速响应的场景,虽然目前有固态硬盘取代机械硬盘的趋势,但是固态硬盘的操作次数是有限的,到了擦除寿命,随时有数据崩溃的危险。同时SSD的价格相对硬盘还没有绝对的优势,目前,基本架构是用固态硬盘做数据的缓存,用机械硬盘做数据的持久化存储。
无论是固态硬盘或机械硬盘,都需要减少数据擦除的次数,减少数据搬移的次数,因此成块的擦除或搬移数据成为必然。
在小文件读写过程中,文件长度小,一个文件的大小不够一个扇区的大小,如果单独以为一个小文件进行固态硬盘的擦除,或机械硬盘的读写访问,将大幅度的降低固态硬盘的使用寿命,大幅度的降低固态硬盘的读写性能。
现有技术方案1,TFS。
TFS是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,主要针对海量的非结构化数据,它构筑在普通的Linux机器集群上,可为外部提供高可靠和高并发的存储访问。TFS提供海量小文件存储,通常文件大小不超过1M,满足了大型网购平台对小文件存储的需求。
TFS从架构是采用小文件在线合并存储的思路,是基于网关的合并方案,通过将大量的小文件存储到一个大文件中,从而把大量的小文件数据合并在大对象的数据体,从而减少底下文件系统实际的文件数量。
在TFS中,将大量的小文件(实际数据文件)合并成一个大文件,这个大文件称为Block(块),每个Block拥有在集群内唯一的编号,通过〈块ID,文件编号〉可以唯一确定一个大文件。TFS中Block的实际数据都存储在数据服务器中,大小一般为64MB,默认存储三份。
TFS和Haystack思路非常相似的,在小文件写入的时候,将小文件合并存储到对应的大文件中,存到哪个大文件是由中心节点决定的,存在以下缺点:
1、每次读写请求都需要访问元数据中心节点,对中心节点的压力太大。
2、由于store层每次都为追加写,在写成功之后节点故障或死机,没有向客户端返回结果,这样会导致此次写入空间的浪费。
现有技术方案2,中国专利申请CN110888837。
对于存储海量小文件,提供了一种基于对象存储小文件后台合并的方法及装置:A、小文件写入资源池的时候,不用做任何特殊处理。B、后台服务会定期对资源池中的小文件总数以及总大小进行检测,如果达到预设的阈值,则将小对象进行归并处理,得到归并对象。C、而且为了优化写入速度,会将小文件直接写入索引池,索引池由固态硬盘构成,后期后台服务再将对象归并到数据池,数据池由机械硬盘构成。
现有技术2的缺点,1)当文件的读写和小文件的转移同时发生的时候,需要枚举海量小文件,导致读开销比较多,带来了性能波动。2)对于每个小文件,都会存在两次写入,因此存在比较严重的写放大问题。
发明内容
本发明,用掉电不丢失的存储盘来缓存小文件,提升了数据的安全性,用多个文件直接拼接成可以直接操作存储器件的空间,提高了小文件的读写效率,减小了存储器件的操作频率,提升了效率,在底层,直接操作存储器件,提升了数据访问效能与数据安全性。
一种基于索引在线拼接的海量小文件存储系统,包括两个以上的存储服务器;一个存储服务器中包括至少一个缓存装置或至少一个存储装置,缓存装置用于缓存数据,存储装置用于存储数据;缓存装置具有掉电数据不丢失能力;缓存装置中的存储空间划分为一个以上的缓存空间,缓存对象对应到所述缓存空间,缓存对象对应缓存空间具有成块擦除数据能力,缓存对象对应缓存空间具有按照字节写入的能力;存储装置具有掉电数据不丢失能力;存储装置中的存储空间划分为一个以上的存储空间,存储对象对应到所述存储空间,存储对象对应存储空间具有成块擦除数据能力,存储对象对应存储空间具有按数据块写入的能力;写入小文件时,按顺序写入缓存对象,在小文件索引中记录小文件与缓存对象的对应关系;小文件索引中记录小文件的大小,缓存对象中的开始位置;当缓存对象大于设定缓存大小时,创建一个新的缓存对象,在新的缓存对象中继续写入;将缓存对象写入存储对象后,在小文件索引中记录小文件与存储对象的对应关系;小文件索引中记录小文件的大小,存储对象中的开始位置;在日志模块中记录对缓存对象的操作,在日志模块中记录缓存对象关联的小文件信息,日志模块中记录的数据具有掉电不丢失的能力。
上述基于索引在线拼接的海量小文件存储系统,周期性地将完成缓存的缓存对象写入到对应的存储对象中;小文件索引中更新小文件与存储对象的对应关系,释放对应的缓存对象空间;小文件索引中包括小文件元数据信息,小文件元数据信息还包括小文件名、小文件大小信息;所述小文件写入时,至少在两个存储服务器中写入数据,一个服务器中写入主数据,另一个服务器中写入备份数据;缓存装置由固态硬盘构成,存储装置由机械硬盘构成。
上述基于索引在线拼接的海量小文件存储系统,还包括存储网关节点,所述存储网关节点包括大文件分片管理单元,所述存储服务器包括缓存管理单元,缓存管理单元包括日志模块和缓存对象,缓存对象用于缓存大文件的一个分片;所述存储网关节点接收外部的文件操作命令;存储网关节根据操作命令区别大小文件,或存储网关节根据文件的大小区分大小文件;大文件分片管理单元将大文件分片操作指令发送给存储服务器。
上述基于索引在线拼接的海量小文件存储系统,所述缓存对象对应缓存空间与存储对象对应存储空间的大小为4MB、8MB、16MB、32MB或64MB。
一种基于索引在线拼接的海量小文件存储方法,写入小文件时,按顺序写入缓存对象,在小文件索引中记录小文件与缓存对象的对应关系;小文件索引中记录小文件的大小,存储的开始位置;
当缓存对象大于设定缓存大小时,创建一个新的缓存对象,在新的缓存对象中继续写入;
将完成缓存的缓存对象写入到对应的存储对象中,小文件索引中更新小文件与存储对象的对应关系,存储对象中的开始位置;释放对应的缓存对象空间;
在日志模块中记录对缓存对象的操作以及本操作所关联的小文件信息,日志模块中记录的数据具有掉电不丢失的能力。
上述基于索引在线拼接的海量小文件存储方法,周期性的将完成缓存的缓存对象写入到对应的存储对象中;
写入小文件时,至少在两个存储服务器上写入主数据与备份数据;备份节点收到写入小文件的命令,备份节点将小文件写入缓存对象,结合日志信息同步更新小文件索引;在日志模块中记录对缓存对象的操作以及本操作所关联的小文件信息,日志模块中记录的数据具有掉电不丢失的能力。
上述基于索引在线拼接的海量小文件存储方法,读取小文件数据时,主节点根据小文件名称在小文件索引中查找小文件元数据信息,如果查询不到小文件元数据信息,返回读取失败信息。
或者主节点根据小文件名称在小文件索引中查找小文件元数据信息,如果查询到小文件元数据信息,基于元数据信息中所关联的缓存对象,去查询缓存状态,如果缓存状态正常,读取缓存数据,返回读取命令。
或者主节点根据小文件名称在小文件索引中查找小文件元数据信息,如果查询到小文件元数据信息,在元数据信息中查询缓存状态,如果缓存状态不正常,则等待缓存对象恢复后再进行处理。
上述基于索引在线拼接的海量小文件存储方法,删除小文件数据时,主节点根据小文件名称在小文件索引中查找小文件元数据信息,如果查询不到小文件元数据信息,返回删除失败信息。
或者主节点根据小文件名称在小文件索引中查找小文件元数据信息,如果查询到小文件元数据信息,在元数据信息中查询对应的缓存对象的状态,如果缓存对象的状态为正常,释放小文件关联的缓存对象数据空间,在小文件索引信息中删除小文件对应的元数据信息,将删除操作写入日志;将删除命令发送给从节点,从节点完成删除,返回删除成功信息。
或者主节点根据小文件名称在小文件索引中查找小文件元数据信息,如果查询到小文件元数据信息,在元数据信息中查询对应的缓存对象的状态,如果缓存对象的状态为非正常,则等待缓存对象恢复后再进行处理。
上述基于索引在线拼接的海量小文件存储方法,节点故障后,缓存对象的状态由非正常状态恢复到正常状态的方法包括:主节点存储服务器收集各个从节点的操作日志,拼接出完整操作日志;根据完整操作日志,计算出待恢复的缓存对象列表,依次恢复缓存对象;根据操作日志中缓存对象所关联的小文件信息,在恢复缓存对象的同时,同步恢复缓存对象所关联的小文件索引信息;主节点与从节点恢复缓存对象数据和关联的小文件索引信息后,对应缓存对象恢复正常状态。
上述基于索引在线拼接的海量小文件存储方法,还包括大文件读写,可以是存储网关判断写入文件的大小,如果是文件大于设定大小,写入文件为大文件,建立大文件分片的索引信息,计算应该写入的分片和分片对应的主节点地址;给主节点发送写入大文件分片的命令;主节点收到写入大文件分片的命令,写入缓存对象,发送写入分片命令给从节点,从节点返回写入缓存成功命令后,主节点返回写入成功。
或者是客户端给存储网关发送大文件读命令,根据索引信息查询读取命令对应的主节点地址;给主节点发送读取大文件分片的命令;主节点收到读取大文件分片的命令,查询缓存对象的状态,如果缓存对象的状态正常,执行读取数据的操作。
上述技术方案的技术效果之1是:用掉电不丢失的存储盘来缓存小文件,提升了数据的安全性;
上述技术方案的技术效果之1是:用固态硬盘缓存小文件,提升了数据写入的响应速度;
上述技术方案的技术效果之1是:用机械硬盘对应存储缓存对象的数据,保证的数据的长期安全性;
上述技术方案的技术效果之1是:用机械硬盘对应存储缓存对象的数据,一次性写入一个或多个扇区,让机械硬盘一直处于高效运行状态,提高了系统的数据吞吐率;
上述技术方案的技术效果之1是:用掉电不丢失的日志记录操作过程,确保故障发生后,能够有效恢复数据状态,确保了数据安全;
上述技术方案的技术效果之1是:用2个或2个以上的数据副本,提高了数据的安全性;
上述技术方案的技术效果之1是:采用算法来分布和查找小文件与服务器之间的关系,没有小文件中心索引,提高了系统的安全性,响应的实时性;
上述技术方案的技术效果之1是:在服务器本地保存小文件与存储对象和缓存对象的关系,索引与数据存储保存在一起,提高了数据和索引的安全,减小了数据与索引的关系维护工作量;
上述技术方案的技术效果之1是:利用日志恢复数据状态,恢复小文件索引,同步各个备份之间的关系,确保了故障恢复的准确性。
附图说明
图1是一种基于索引在线拼接的海量小文件存储系统示意框图;
图2是小文件在线写入缓存对象,缓存对于与存储对象空间对应示意图;
图3是一种大文件存储系统示意框图;
图4是小文件在缓存空间的分配示意图;
图5是大文件分配到多个缓存对象的示意图;
图6是小文件索引包括多个小文件元数据的示意图;
图7是小文件元数据的示意图;
图8是日志模块记录的内容示意图;
图9是小文件写入系统的步骤示意图;
图10是小文件读取的步骤示意图;
图11是小文件删除过程找不到文件的步骤示意图;
图12是小文件删除过程发现状态不正常的步骤示意图;
图13是小文件删除成功的步骤示意图;
图14是数据恢复,状态同步的步骤示意图。
具体实施方式
以下结合各附图对本申请内容作进一步详述。需要说明的是,以下是本发明较佳实施例的说明,并不对本发明构成任何限制。本发明较佳实施例的说明只是作为本发明一般原理的说明。本发明中涉及的“第一”“第二”以及“A”“B”这样的编号只是为了说明的方便,并不代表时间或空间上的顺序关系,本发明中涉及的字母与数字的组合“TA”“TB”“H”只是为了说明的方便,具有含义由所代指的具有词汇决定。
如图1、图2,一种基于索引在线拼接的海量小文件存储系统,包括两个以上的存储服务器;一个存储服务器中包括至少一个缓存装置或至少一个存储装置,缓存装置用于缓存数据,存储装置用于存储数据;缓存装置具有掉电数据不丢失能力;缓存装置中的存储空间划分为一个以上的缓存空间,缓存对象对应到所述缓存空间,缓存对象对应缓存空间具有成块擦除数据能力,缓存对象对应缓存空间具有按照字节写入的能力;存储装置具有掉电数据不丢失能力;存储装置中的存储空间划分为一个以上的存储空间,存储对象对应到所述存储空间,存储对象对应存储空间具有成块擦除数据能力,存储对象对应存储空间具有按数据块写入的能力;写入小文件时,按顺序写入缓存对象,在小文件索引中记录小文件与缓存对象的对应关系;小文件索引中记录小文件的大小,缓存对象中的开始位置;当缓存对象大于设定缓存大小时,创建一个新的缓存对象,在新的缓存对象中继续写入;将缓存对象写入存储对象后,在小文件索引中记录小文件与存储对象的对应关系;小文件索引中记录小文件的大小,存储对象中的开始位置;在日志模块中记录对缓存对象的操作,在日志模块中记录缓存对象关联的小文件信息,日志模块中记录的数据具有掉电不丢失的能力。
固态硬盘与机械硬盘,都具有掉电不丢失数据的能力,固态硬盘的读写速度快于机械硬盘,相对机械硬盘,固态硬盘更适合作为缓存装置。对于一些实时性要求不高的应用场景,也可以用机械硬盘作为缓存装置。
固态硬盘价格高于机械硬盘,同时固态硬盘的读写寿命小于机械硬盘,出现故障后,固态硬盘的数据难以通过磁道恢复,因此机械硬盘更适合作为存储装置。
如图2,缓存对象与存储对象位于不同的存储装置,比如固态硬盘用来做缓存,机械硬盘用来做存储;或者一块固态硬盘用来做缓存磁盘,一块机械硬盘用来做存储磁盘;小文件先写入到缓存对象中,数据写满一个设定的空间后,再整体写入存储对象,缓存对象的空间可以释放用来缓存别的对象,缓存磁盘与存储磁盘都具有掉电不丢失的特性,但是固态硬盘的写入速度远远快于机械硬盘,机械硬盘在每次写入时,采用多个扇区一次性写入的读写性能高。这样配置,用固态硬盘的快速响应来缓存数据,用机械硬盘的大容量和安全性,确保数据的安全。即使用固态硬盘来作存储磁盘,一次性写入大块的数据,也能够大幅度地降低固态硬盘的擦除操作的次数,提高存储磁盘的寿命。
每次的操作,用日志模块记录,日志数据也是写在独立的SSD存储区,在计算机故障或掉电的状况,缓存磁盘的数据都不会丢失,日志数据也不会丢失,待恢复供电或故障消除重新启动后,根据日志数据,可以将缓存盘中的数据恢复,存储到存储磁盘中,而不会因为缓存到内存中,导致掉电丢失的情况出现。
分布式存储平台,为了提高数据的安全性,一般数据写入都要写多个备份,防止数据出现丢失的状态发生,多个备份,一般不能防止整个机房同时故障,这种情况,即使数据写入到两台服务器,但是数据没有写入磁盘,只能防止一台服务器出现故障,数据不丢失,如果发生批量的服务器同时掉电丢失,大量缓存在内存的数据,都会丢失,虽然数据写入了两台服务器,也不能确保不丢失数据。
采用本方案,在一台服务器上,数据是缓存到固态硬盘,掉电不丢失,因此单台服务器,也具有非常高的数据安全性能。
上述基于索引在线拼接的海量小文件存储系统,周期性地将完成缓存的缓存对象写入到对应的存储对象中;小文件索引中更新小文件与存储对象的对应关系,释放对应的缓存对象空间;小文件索引中包括小文件元数据信息,小文件元数据信息还包括小文件名、小文件大小信息;所述小文件写入时,至少在两个存储服务器中写入数据,一个服务器中写入主数据,另一个服务器中写入备份数据。
在大型的分布式文件存储系统中,根据文件编号或文件名称哈希计算获得路由编号,能将文件的存储均匀的分布到不同的服务器中,备份数据也可以采用相同的算法分布到不同的服务器中,无需中心服务器来对小文件进行索引管理,小文件具体到服务器上,建立小文件到缓存对象或存储对象的索引关系,消除了中心管理节点,系统的容量不受中心节点限制,小文件的吞吐率,也不受中心节点的带宽与处理速度限制。
缓存装置由固态硬盘构成,存储装置由机械硬盘构成。
固态硬盘上有大量的缓存对象,用来接收海量的文件写入,缓存对象对应的磁盘空间是扇区的整数倍大小,比如4MB,对应缓存完成的缓存对象,进行擦除操作,以供后续的小文件的缓存,现代固态硬盘的容量越来越大,上T容量的固态硬盘广泛使用,在擦除一片数据的时候,不会影响其他部分的写入,因此周期性的将完成缓存的数据写入磁盘,再批量的擦除这些缓存数据对应的空间,可以大幅度地降低固态硬盘的擦除次数,提高固态硬盘的使用寿命。
一次写入时,采用写入主数据与备份数据,2份数据之间相互备份,可以大幅度地提高存储系统的可服务性能,即使一台服务器因为故障退出服务,另一台服务器上的数据还可以提供服务。
如果采用一次写入,采用写入主数据与两份备份,3份数据之间相互备份,这时可服务性能就更高,在极端故障发生,所有服务器都掉电,系统恢复后,可以根据3份日志数据相互对比,来恢复数据,比如一个删除小文件指令执行过程中,发生了系统掉电,这时,可以根据3个备份中,有几个备份数据来判决删除指令执行成功没有。
如图3,上述基于索引在线拼接的海量小文件存储系统,还包括存储网关节点,所述存储网关节点包括大文件分片管理单元,所述存储服务器包括缓存管理单元,缓存管理单元包括日志模块和缓存对象,缓存对象用于缓存大文件的一个分片;所述存储网关节点接收外部的文件操作命令;存储网关节根据操作命令区别大小文件,或存储网关节根据文件的大小区分大小文件;大文件分片管理单元将大文件分片操作指令发送给存储服务器。
大文件分片的大小由大文件分片管理单元管理,每个分片具体分配到那个服务器存储,根据文件编号加分片编号,或文件名加分片编号哈希计算获得路由编号,将文件的分片均匀的分布到不同的服务器中,备份数据也可以采用相同的算法分布到不同的服务器中。在存储服务器的缓存管理单元按照对象缓存管理即可。相对小文件,一个分片占据一个完整的缓存对象。
如图3,在一个存储系统中,可以融合海量小文件存储系统与海量大文件存储系统,如图4,小文件存储的时候,缓存是多个小文件利用一个4MB,多个小文件顺次排列,占据一个4MB的缓存对象空间,对于尾部放不下一个小文件的空间,可以废弃不用,也可以放下一个小文件的前端部分,下一个4MB的缓存对象空间的放小文件的后端部分,在索引中记录就好,具有地可以采用两条记录来记录一个小文件的两个部分所用。
如图5,大于4MB的大文件,缓存空间与存储空间,与海量小文件存储系统相同的,但是一个大文件需要占据多个4MB的空间。
通过在存储网关节点区分大小文件,然后用不同的服务器来处理大文件或小文件。还可以采用统一的算法,大文件与小文件一样处理,大文件占据的索引数据的条目增多,每一条索引对应一个4MB的数据端,对文件首部,可以对齐到缓存空间的首部,也可以不用对齐。
分布式计算或存储系统,对于对象与服务器的寻址对应关系,有多种成熟的算法,可以是小文件完整的存储在一台服务器上,通过文件名哈希计算后,得到索引编码,用索引编码与服务器地址进行关联索引。因此每个小文件对应的服务器是明确可知的,这样处理,没有中心索引服务器,对于海量小文件,可以在成千或上万台服务器中快速地访问,没有中心节点,高效直接。
对于超过4MB的大文件,如图5,将一个大文件分解多个4MB的分片,如果采用大文件写入时,首部对应4M缓存空间的首部,每个分片进行“文件名+分片编号”进行哈希计算后,得到索引编码,用索引编码与服务器地址进行关联索引,也可以准确无误地找到每个分片对应的服务器,这样处理,大文件的尾部会浪费一些4MB的分片的空间。
如果采用大文件名称哈希计算后,得到索引编码,找到大文件缓存管理单元对应的服务器,在大文件缓存管理单元调度大文件的存储分片对应的服务器,可以有效降低4MB的分片的空间的浪费。
上述基于索引在线拼接的海量小文件存储系统,所述缓存对象对应缓存空间与存储对象对应存储空间的大小为4MB、8MB、16MB、32MB或64MB。
存储空间的大小可以根据需求来设定,对于读取要求频繁的系统,小文件读取的频率高,可以选择较小的分片,减小每次读取磁盘的操作量,对于大文件多或小文件读取不频繁的应用,可以选择较大的设定。
一种基于索引在线拼接的海量小文件存储方法,写入小文件时,按顺序写入缓存对象,在小文件索引中记录小文件与缓存对象的对应关系;小文件索引中记录小文件的大小,存储的开始位置;
当缓存对象大于设定缓存大小时,创建一个新的缓存对象,在新的缓存对象中继续写入;
将完成缓存的缓存对象写入到对应的存储对象中,小文件索引中更新小文件与存储对象的对应关系,存储对象中的开始位置;释放对应的缓存对象空间;
在日志模块中记录对缓存对象的操作以及本操作所关联的小文件信息,日志模块中记录的数据具有掉电不丢失的能力。
如图6,小文件索引中,包括每一个小文件的元数据信息,如图8,元数据信息中可以包括小文件名称、大小,文件的属性,状态信息,状态信息用于记录小文件写入的过程信息,比如小文件处于故障恢复过程中,或存储在存储对象,还没有读出到缓存对象中,或者已经读取到内存中等等信息。对于访问不频繁的小文件,可以有存储对象读取到内存后,不用放置到缓存对象,完成读取后,直接释放内存。
小文件的元数据信息可以保存在本地服务器的数据库中,也可以保持在本地的文件中。
小文件元数据还包括关联的缓存对象名,在缓存对象中的位置、长度信息。
在覆盖写的时候,存储对象上存储有老的小文件,这时不用真正地去覆盖写老文件所在的存储对象,而是在新的存储对象中,写入新的小文件,在小文件元数据中,将索引关系指向新的缓存对象名称和位置。覆盖写的小文件对象,在老的存储位置中的数据自然就作废,没有索引指向这部分空间。
如图8,日志模块中,保存操作类型,版本信息,不同的操作类型或版本信息在命令解析或有所不同,日志中要记录操作过的缓存对象,操作的方式,操作对应的小文件对象名,日志记录在掉电不丢失的存储介质上,如果发生故障或掉电,可以通过日志恢复数据。因小文件写在缓存对象中,故障恢复过程相对简单,不同频繁搬迁数据。
如图9,采用一个主节点服务器两个从节点服务器,写入小文件时,至少在3个存储服务器上写入主数据与备份数据;备份节点收到写入小文件的命令,根据文件索引号获得缓存对象;备份节点将小文件写入缓存对象;备份节点将小文件元数据信息写入小文件索引;备份节点将写入操作写入日志,记录小文件的写入操作;所述存储对象的大小为4MB;写入小文件时,如果小文件跨缓存对象存储,用两条元数据信息记录所述小文件的索引信息;写入小文件时,根据算法获得小文件索引号,由文件索引号获得存储服务器的地址;写入小文件时,根据写入文件的大小是否小于设定文件大小,判断写入是小文件写入。
客户端发送小文件写命令,或者在网关判断写入文件的大小,来决定写入的是小文件还是大文件,用文件名称哈希计算,或者其他方式获得文件索引号,根据文件索引号获得主节点或从节点的地址,主从节点根据写入命令,在缓存对象中依次写入小文件。
图10,读取小文件数据时,读取小文件数据时,主节点根据小文件名称在小文件索引中查找小文件元数据信息,如果查询不到小文件元数据信息,返回读取失败信息。
还可以主节点根据小文件名称在小文件索引中查找小文件元数据信息,如果查询到小文件元数据信息,基于元数据信息中所关联的缓存对象,去查询缓存状态,如果缓存状态正常,读取缓存数据,返回读取命令。
还可以主节点根据小文件名称在小文件索引中查找小文件元数据信息,如果查询到小文件元数据信息,在元数据信息中查询缓存状态,如果缓存状态不正常,则等待缓存对象恢复后再进行处理。
小文件读取的时候,有很多状态,比如文件正在做主从节点的数据恢复同步,数据在硬盘中,还需要读取,对不同的状态,需要做对应的处理。
如图11,删除小文件数据时,主节点根据小文件名称在小文件索引中查找小文件元数据信息,如果查询不到小文件元数据信息,返回删除失败信息。
或者主节点根据小文件名称在小文件索引中查找小文件元数据信息,如果查询到小文件元数据信息,在元数据信息中查询对应的缓存对象的状态,如果缓存对象的状态为正常,释放小文件关联的缓存对象数据空间,在小文件索引信息中删除小文件对应的元数据信息,将删除操作写入日志;将删除命令发送给从节点,从节点完成删除,返回删除成功信息。
或者主节点根据小文件名称在小文件索引中查找小文件元数据信息,如果查询到小文件元数据信息,在元数据信息中查询对应的缓存对象的状态,如果缓存对象的状态为非正常,则等待缓存对象恢复后再进行处理。
如图13,如果主节点根据文件索引号在小文件索引中查找小文件元数据信息,如果查询到小文件元数据信息,在元数据信息中查询对应的缓存对象的状态,如果缓存对象的状态为正常,释放小文件关联的缓存对象数据空间,在小文件索引信息中删除小文件对应的元数据信息,将删除操作写入日志;将删除命令发送给从节点,从节点完成删除,返回删除成功信息。
如图12,如果主节点根据文件索引号在小文件索引中查找小文件元数据信息,如果查询到小文件元数据信息,在元数据信息中查询对应的缓存对象的状态,如果缓存对象的状态为非正常,等待一定的时间后,再次查询对应的缓存对象的状态。
采用两个备份,一般的故障不会同时损坏3个备份,在一些服务器损坏下线后,这台服务器的数据需要根据算法由别的服务器分摊,服务器主节点寻址也会有影响,但是这种恢复会比较快,客户端等待一会再次发起请求,就可以恢复响应。
如果是服务器恢复备份,需要从不同的服务器复制数据,也需要等待一定的时间,就能恢复正常响应。删除数据的时候,如果处于恢复过程,也需要等待数据恢复后,再进行删除操作,防止数据的状态信息不正常。
如图14,缓存对象的状态由非正常状态恢复到正常状态的方法包括:主节点存储服务器收集各个从节点的日志,拼接出完整日志;根据日志,恢复小文件索引信息;根据小文件索引信息,与日志信息,主节点与从节点同步缓存对象;缓存对象同步后,恢复正常状态。
上述基于索引在线拼接的海量小文件存储方法,还包括大文件读写,可以是存储网关判断写入文件的大小,如果是文件大于设定大小,写入文件为大文件,建立大文件分片的索引信息,计算应该写入的分片和分片对应的主节点地址;给主节点发送写入大文件分片的命令;主节点收到写入大文件分片的命令,写入缓存对象,发送写入分片命令给从节点,从节点返回写入缓存成功命令后,主节点返回写入成功。
或者是客户端给存储网关发送大文件读命令,根据索引信息查询读取命令对应的主节点地址;给主节点发送读取大文件分片的命令;主节点收到读取大文件分片的命令,查询缓存对象的状态,如果缓存对象的状态正常,执行读取数据的操作。
本发明虽然根据优选实施例和若干备选方案进行说明和描述,但发明不会被在本说明书中的特定描述所限制。其他另外的替代或等同组件也可以用于实践本发明。

Claims (10)

1.一种基于索引在线拼接的海量小文件存储系统,其特征在于,包括两个以上的存储服务器;
一个存储服务器中包括至少一个缓存装置或至少一个存储装置,缓存装置用于缓存数据,存储装置用于存储数据;
缓存装置具有掉电数据不丢失能力;缓存装置中的存储空间划分为一个以上的缓存空间,缓存对象对应到所述缓存空间,缓存对象对应缓存空间具有成块擦除数据能力,缓存对象对应缓存空间具有按照字节写入的能力;
存储装置具有掉电数据不丢失能力;存储装置中的存储空间划分为一个以上的存储空间,存储对象对应到所述存储空间,存储对象对应存储空间具有成块擦除数据能力,存储对象对应存储空间具有按数据块写入的能力;
写入小文件时,按顺序写入缓存对象,在小文件索引中记录小文件与缓存对象的对应关系;小文件索引中记录小文件的大小,缓存对象中的开始位置;
当缓存对象大于设定缓存大小时,创建一个新的缓存对象,在新的缓存对象中继续写入;
将缓存对象写入存储对象后,在小文件索引中记录小文件与存储对象的对应关系;小文件索引中记录小文件的大小,存储对象中的开始位置;
在日志模块中记录对缓存对象的操作,在日志模块中记录缓存对象关联的小文件信息,日志模块中记录的数据具有掉电不丢失的能力。
2.根据权利要求1所述的基于索引在线拼接的海量小文件存储系统,其特征在于,
周期性地将完成缓存的缓存对象写入到对应的存储对象中;小文件索引中更新小文件与存储对象的对应关系,释放对应的缓存对象空间;
小文件索引中包括小文件元数据信息,小文件元数据信息还包括小文件名、小文件大小信息;
所述小文件写入时,至少在两个存储服务器中写入数据,一个服务器中写入主数据,另一个服务器中写入备份数据;
所述缓存装置由固态硬盘构成,所述存储装置由机械硬盘构成。
3.根据权利要求1所述的基于索引在线拼接的海量小文件存储系统,其特征在于,
还包括存储网关节点,所述存储网关节点包括大文件分片管理单元,所述存储服务器包括缓存管理单元,缓存管理单元包括日志模块和缓存对象,缓存对象用于缓存大文件的一个分片;所述存储网关节点接收外部的文件操作命令;存储网关节根据操作命令区别大小文件,或存储网关节根据文件的大小区分大小文件;大文件分片管理单元将大文件分片操作指令发送给存储服务器。
4.根据权利要求1至3任意一项所述的基于索引在线拼接的海量小文件存储系统,其特征在于,
所述缓存对象对应缓存空间与存储对象对应存储空间的大小为4MB、8MB、16MB、32MB或64MB。
5.一种基于索引在线拼接的海量小文件存储方法,其特征在于:
写入小文件时,按顺序写入缓存对象,在小文件索引中记录小文件与缓存对象的对应关系;小文件索引中记录小文件的大小,存储的开始位置;
当缓存对象大于设定缓存大小时,创建一个新的缓存对象,在新的缓存对象中继续写入;
将完成缓存的缓存对象写入到对应的存储对象中,小文件索引中更新小文件与存储对象的对应关系,存储对象中的开始位置;释放对应的缓存对象空间;
在日志模块中记录对缓存对象的操作以及本操作所关联的小文件信息,日志模块中记录的数据具有掉电不丢失的能力。
6.根据权利要求5所述的基于索引在线拼接的海量小文件存储方法,其特征在于,
周期性的将完成缓存的缓存对象写入到对应的存储对象中;
写入小文件时,至少在两个存储服务器上写入主数据与备份数据;备份节点收到写入小文件的命令,备份节点将小文件写入缓存对象,结合日志信息同步更新小文件索引;在日志模块中记录对缓存对象的操作以及本操作所关联的小文件信息,日志模块中记录的数据具有掉电不丢失的能力。
7.根据权利要求6所述的基于索引在线拼接的海量小文件存储方法,其特征在于,
读取小文件数据时,还包括如下任意一项技术特征,
特征TA10:主节点根据小文件名称在小文件索引中查找小文件元数据信息,如果查询不到小文件元数据信息,返回读取失败信息;
特征TA20:主节点根据小文件名称在小文件索引中查找小文件元数据信息,如果查询到小文件元数据信息,基于元数据信息中所关联的缓存对象,去查询缓存状态,如果缓存状态正常,读取缓存数据,返回读取命令;
特征TA30:主节点根据小文件名称在小文件索引中查找小文件元数据信息,如果查询到小文件元数据信息,在元数据信息中查询缓存状态,如果缓存状态不正常,则等待缓存对象恢复后再进行处理。
8.根据权利要求6所述的基于索引在线拼接的海量小文件存储方法,其特征在于,
删除小文件数据时,还包括如下任意一项技术特征,
特征TB10:主节点根据小文件名称在小文件索引中查找小文件元数据信息,如果查询不到小文件元数据信息,返回删除失败信息;
特征TB20:主节点根据小文件名称在小文件索引中查找小文件元数据信息,如果查询到小文件元数据信息,在元数据信息中查询对应的缓存对象的状态,如果缓存对象的状态为正常,释放小文件关联的缓存对象数据空间,在小文件索引信息中删除小文件对应的元数据信息,将删除操作写入日志;将删除命令发送给从节点,从节点完成删除,返回删除成功信息;
特征TB30:主节点根据小文件名称在小文件索引中查找小文件元数据信息,如果查询到小文件元数据信息,在元数据信息中查询对应的缓存对象的状态,如果缓存对象的状态为非正常,则等待缓存对象恢复后再进行处理。
9.根据权利要求6所述的基于索引在线拼接的海量小文件存储方法,其特征在于,
节点故障后,缓存对象的状态由非正常状态恢复到正常状态的方法包括:主节点存储服务器收集各个从节点的操作日志,拼接出完整操作日志;
根据完整操作日志,计算出待恢复的缓存对象列表,依次恢复缓存对象;
根据操作日志中缓存对象所关联的小文件信息,在恢复缓存对象的同时,同步恢复缓存对象所关联的小文件索引信息;
主节点与从节点恢复缓存对象数据和关联的小文件索引信息后,对应缓存对象恢复正常状态。
10.根据权利要求5所述的基于索引在线拼接的海量小文件存储方法,其特征在于,
还包括大文件读写,包括如下任意一项技术特征,
特征TC10:存储网关判断写入文件的大小,如果是文件大于设定大小,写入文件为大文件,建立大文件分片的索引信息,计算应该写入的分片和分片对应的主节点地址;给主节点发送写入大文件分片的命令;主节点收到写入大文件分片的命令,写入缓存对象,发送写入分片命令给从节点,从节点返回写入缓存成功命令后,主节点返回写入成功;
特征TC20:客户端给存储网关发送大文件读命令,根据索引信息查询读取命令对应的主节点地址;给主节点发送读取大文件分片的命令;主节点收到读取大文件分片的命令,查询缓存对象的状态,如果缓存对象的状态正常,执行读取数据的操作。
CN202410019858.6A 2024-01-06 2024-01-06 基于索引在线拼接的海量小文件存储系统与方法 Active CN117519612B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410019858.6A CN117519612B (zh) 2024-01-06 2024-01-06 基于索引在线拼接的海量小文件存储系统与方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410019858.6A CN117519612B (zh) 2024-01-06 2024-01-06 基于索引在线拼接的海量小文件存储系统与方法

Publications (2)

Publication Number Publication Date
CN117519612A CN117519612A (zh) 2024-02-06
CN117519612B true CN117519612B (zh) 2024-04-12

Family

ID=89757042

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410019858.6A Active CN117519612B (zh) 2024-01-06 2024-01-06 基于索引在线拼接的海量小文件存储系统与方法

Country Status (1)

Country Link
CN (1) CN117519612B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060067119A (ko) * 2004-12-14 2006-06-19 한국전자통신연구원 객체 기반 스토리지를 사용하는 분산 파일 서버에서 장애복구 시스템 및 방법
CN102332027A (zh) * 2011-10-15 2012-01-25 西安交通大学 一种基于Hadoop的海量非独立小文件关联存储方法
CN103020315A (zh) * 2013-01-10 2013-04-03 中国人民解放军国防科学技术大学 一种基于主从分布式文件系统的海量小文件存储方法
CN105183839A (zh) * 2015-09-02 2015-12-23 华中科技大学 一种基于Hadoop的小文件分级索引的存储优化方法
CN113868192A (zh) * 2021-12-03 2021-12-31 深圳市杉岩数据技术有限公司 一种数据存储设备、方法与分布式数据存储系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060067119A (ko) * 2004-12-14 2006-06-19 한국전자통신연구원 객체 기반 스토리지를 사용하는 분산 파일 서버에서 장애복구 시스템 및 방법
CN102332027A (zh) * 2011-10-15 2012-01-25 西安交通大学 一种基于Hadoop的海量非独立小文件关联存储方法
CN103020315A (zh) * 2013-01-10 2013-04-03 中国人民解放军国防科学技术大学 一种基于主从分布式文件系统的海量小文件存储方法
CN105183839A (zh) * 2015-09-02 2015-12-23 华中科技大学 一种基于Hadoop的小文件分级索引的存储优化方法
CN113868192A (zh) * 2021-12-03 2021-12-31 深圳市杉岩数据技术有限公司 一种数据存储设备、方法与分布式数据存储系统

Also Published As

Publication number Publication date
CN117519612A (zh) 2024-02-06

Similar Documents

Publication Publication Date Title
KR100510808B1 (ko) 데이터 저장 장치 및 시스템을 위한 로그 구조 기록 캐시
KR100211790B1 (ko) 직접 액세스 저장 장치에서 데이터 압축을 위한 디렉토리 재 구축 방법 및 장치
JP6708929B2 (ja) ストレージ制御装置、ストレージシステムおよびストレージ制御プログラム
TWI709864B (zh) 一種利用重複刪除過程的儲存系統、方法及裝置
US5875459A (en) Disk array apparatus including a management unit for selecting one or more disk drives to record data depending on the amount of data to be written
CN106354582B (zh) 一种连续数据保护方法
US9037787B2 (en) Computer system with physically-addressable solid state disk (SSD) and a method of addressing the same
EP3376394B1 (en) Method and device for processing access request, and computer system
JP2007234026A (ja) ユニークブロックプールマネージャを含むデータ記憶システムおよび階層記憶装置における応用
US20170124104A1 (en) Durable file system for sequentially written zoned storage
US20170123928A1 (en) Storage space reclamation for zoned storage
US20130305086A1 (en) Using cache to manage errors in primary storage
JPH096540A (ja) 直接アクセス記憶装置のデータ圧縮用組込みディレクトリ方法及びディレクトリ・レコード
US10114576B2 (en) Storage device metadata synchronization
KR20000022716A (ko) 로그 구조화 목표 저장장치를 사전에 구성하여 볼륨을 효율적으로 복사하는 방법 및 장치
KR101114125B1 (ko) 낸드 플래시 파일 시스템 및 그의 초기화 및 크래시 복구 방법
US9514052B2 (en) Write-through-and-back-cache
WO2017113211A1 (zh) 访问请求处理方法、装置及计算机系统
US20170123714A1 (en) Sequential write based durable file system
JP2018181202A (ja) ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
KR20010037155A (ko) 플래시 파일 시스템
CN110134551B (zh) 一种持续数据保护方法及装置
CN116483284B (zh) 一种读写虚拟硬盘的方法、装置、介质及电子设备
US20090164721A1 (en) Hierarchical storage control apparatus, hierarchical storage control system, hierarchical storage control method, and program for controlling storage apparatus having hierarchical structure
CN117519612B (zh) 基于索引在线拼接的海量小文件存储系统与方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant