一种基于存储级内存的日志文件系统性能提高方法

文档序号:9579000阅读:375来源:国知局
一种基于存储级内存的日志文件系统性能提高方法
【技术领域】
[0001]本发明属于计算机数据存储技术领域,更具体地,涉及一种基于存储级内存的日志文件系统性能提高方法。
【背景技术】
[0002]存储级内存(Storage Class Memory,简称SCM)是一类新型非易失存储器,兼具内存(memory)和存储(storage)的特性。SCM的字节寻址、快速随机访问的特性接近于内存,因此SCM可以直接挂载在内存总线上,这也让传统存储设备望尘莫及。正是基于这些卓越的性能,SCM的出现不仅能够解决高性能数据中心的I/O瓶颈和能耗问题,同时也将引发计算机系统结构的变革。因此,SCM不仅是当前存储领域研究的热点,在未来很长一段时间内都必将是存储领域研究的核心。
[0003]传统的日志技术是一种常用的保证文件系统一致性的方法。在改动文件系统之前,先把更新数据记录在日志中。日志一般存放在磁盘分区或日志文件中。系统宕机后,利用顺序将日志记录写回磁盘的方式进行系统恢复。传统的日志技术针对块级存储设备而设计,采取以空间换时间的策略。由于日志机制面临“写两遍”的问题,即先写一次日志,再写一次文件系统,日志机制可能会给文件系统带来比较大的开销。另外,传统日志技术在系统恢复时全部不加区别地写到磁盘,这样,同一个数据块的多个日志副本就要占据多份日志记录空间,系统恢复时也要写回多次,不仅占据了大量日志空间,也延长了系统恢复时间。又由于空间利用率低,很容易造成日志满的情况,传统日志技术不得不频繁地把内存数据写回磁盘。
[0004]元数据指用来描述一个文件的特征的系统数据,元数据以块为单位存储在文件系统中,部分元数据的更新却会导致对整个块的读写,从而放大了磁盘I/O。研究数据表明,只有21 %的请求为文件I/O请求,而超过50%的请求是元数据操作。元数据虽然都是小更新,但是磁盘随机小写性能很差。所以,元数据的频繁访问与大量小写操作会大大降低文件系统的性能。

【发明内容】

[0005]针对现有技术的以上缺陷或改进需求,本发明提出一种基于存储级内存的日志文件系统性能提高方法,其目的在于,通过将SCM作为内存设备存放文件系统元数据和日志,优化了元数据的访问,采用简化的日志机制结合垃圾回收机制,解决现有日志技术开销大、元数据写回频繁、I/O瓶颈等问题。
[0006]为实现上述目的,本发明提供一种基于存储级内存的日志文件系统性能提高方法,包括存储系统的构建、写日志、垃圾回收、数据写回、系统恢复这五个操作,其中:
[0007]存储系统的构建操作:给原有的文件系统添加一块SCM挂载在内存总线上,与内存共享内存总线;并将SCM划分为日志区和元数据区,日志区用于记录元数据日志和覆盖写数据日志,元数据区用于永久保存元数据;
[0008]写日志操作:将内存事务的追加写数据写到文件系统;并且将内存事务的元数据和覆盖写数据写到日志区;
[0009]垃圾回收操作:每隔一段时间进行垃圾回收;在垃圾回收间隔内,若日志区空间不足,也进行垃圾回收;即交换高地址处有效的日志标签和低地址处无效的日志标签,从而将所有有效日志记录集中在从日志起始位置起的一段连续的日志区空间内;
[0010]数据写回操作:当完成垃圾回收后,日志区空间依然不足时,将缓存于SCM日志区中的覆盖写数据写回到磁盘,元数据写回到元数据区;
[0011]系统恢复操作:在系统宕机后,利用SCM中的日志记录将系统恢复到一致性状态;系统恢复后,SCM中的日志记录全部作废。
[0012]总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
[0013]1、本发明解决了现有文件系统中存在的元数据频繁访问导致的磁盘I/O问题:将元数据永久存放在SCM,消除了频繁访问元数据的磁盘I/O问题,结合日志技术,保证了文件系统一致性。
[0014]2、本发明提高了文件系统的写性能。简化了传统的日志模式,区分追加写数据和覆盖写数据,使用字节粒度更新的方法,减少了日志数据流,并加快了系统恢复速度。
[0015]3、本发明将元数据粒度细化,同时采用垃圾回收机制,充分利用了存储级内存,提高了空间利用率。
【附图说明】
[0016]图1为本发明的系统构架示意图;
[0017]图2为本发明的日志记录结构示意图;
[0018]图3为本发明的日志记录哈希表示意图;
[0019]图4为本发明的日志超级块示意图;
[0020]图5为本发明的写日志操作流程图;
[0021]图6为本发明的垃圾回收操作流程图;
[0022]图7为本发明的数据写回操作流程图;
[0023]图8为本发明的系统恢复操作流程图;
【具体实施方式】
[0024]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0025]图1为本发明的系统构建示意图。硬件部署上需要内存总线上挂载一个SCM盘作为日志盘和元数据盘,与DRAM共享内存总线;软件结构上包括四个操作:写日志操作,垃圾回收操作,数据写回操作,系统恢复操作。另外,SCM日志盘设有日志超级块、日志记录哈希表和日志记录三种结构。
[0026]因此,实现本发明方法需首先在原来的文件系统上添加一块SCM挂载在内存总线上,与内存共享内存总线。将SCM划分为日志区和元数据区,日志区用于记录元数据日志和覆盖写数据日志,元数据区用于永久保存元数据。
[0027]其次,在SCM中主要建立有日志超级块、日志记录哈希表和日志记录三种存储结构。其中,日志超级块用于记录第一个可用日志块、日志容量、剩余空间、有效日志记录数量、日志记录起始位置、上一次事务结束位置、当前事务结束位置等信息;日志记录哈希表用于记录数据块对应的最新日志记录和次最新日志记录;日志记录,包括日志块和日志标签,日志块用于存放事务提交到日志区的缓冲区内容,日志标签用于描述日志记录的相关信息,包括日志记录对应的磁盘块号、日志记录有效标志和元数据标志位等。
[0028]最后,考虑到元数据比较小,为避免写放大和空间浪费的问题,将元数据区中元数据粒度设定为128bytes。
[0029]图2为本发明的日志记录结构不意图。日志记录包括日志块和日志标签两部分。日志块用于存放文件系统覆盖写数据块和元数据块,日志标签用于存放日志块的描述信息。日志标签由四个字段组成:磁盘块号blknr,有效位valid,元数据标志位meta,日志块所在的位置scmnr。对日志记录的定位、查找、标记无效等操作均通过日志标签进行。
[0030]图3为本发明的日志记录哈希表示意图。日志记录哈希表由三个字段组成:磁盘块号blknr,最新日志记录scmlog,次最新日志记录old_scmlog。日志记录哈希表的每一条表项用来记录磁盘块号blknr对应的最新日志记录scmlog和次最新日志记录old_scmlog。[0031 ] 图4为本发明的日志超级块示意图。日志超级块包括七个字段:魔数,表示日志超级块的标志;日志记录大小,表示日志的大小;可用日志空间,表示日志还有多少空闲空间;下一个可用日志块,表示日志可分配的块起点;有效日志记录数量,表示有效日志记录的数目;日志起始位置,表示日志区的起始位置;上一个事务结束位置,表示上一个事务的结束,同时也是当前事务顺序写的起点;当前事务结束位置,表示当前事务的结束,当前事务完整地记录在上一个事务结束位置和当前事务结束位置之间。日志超级块记录了日志的基本信息,确保内存事务的原子性。
[0032]图5为本发明的写日志操作流程图,写日志操作用于将内存事务提交到日志设备,通过对写数据流的控制来保证文件系统的一致性。
[0033]—个内存事务由两个双向循环链表进行管理:一个是追加写链表,用于管理追加写数据缓冲区内容;另一个是覆盖写和元数据链表,用于管理覆盖写缓冲区和元数据数据缓冲区内容。写日志操作主要包括两个过程:
[0034]1、将内存事务的追加写数据写到文件系统;
[0035]2、将内存事务的元数据和覆盖写数据写到日志区。
[0036]追加写数据可
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1