一种日志写入及同步方法、装置、系统、计算机存储介质制造方法及图纸

技术编号:18553165 阅读:32 留言:0更新日期:2018-07-28 10:29
本发明专利技术公开了一种日志写入方法及装置、系统、计算机存储介质,所述方法包括:从日志盘的变量区中读取已写入日志的终点页编号;将日志写入所述终点页编号所对应的数据区页面中,形成日志页;获取所述日志页对应的写入位置和日志页所属的数据区段编号,将所述日志页对应的写入位置和日志页所属的数据区段编号存储至日志盘的位图区中;在所述日志盘的变量区中,将所述已写入日志的终点页编号加1,并判断日志是否已写到日志盘的盘尾;如果日志已写到日志盘的盘尾,则将已写入日志的终点设置为盘头。

【技术实现步骤摘要】
一种日志写入及同步方法、装置、系统、计算机存储介质
本专利技术涉及计算机存储领域,尤其涉及一种基于固态硬盘的日志写入及同步方法、装置、系统、计算机存储介质。
技术介绍
在存储系统中,高可靠、高性能以及低成本是最重要的,也是相互矛盾的三大指标。日志(Journal)技术是保证系统高可靠和高性能的有效手段。很多存储系统引入了日志技术,如EXT3、EXT4、XFS、JFS、F2FS、NTFS、Btrfs、CEPH等。在日志技术中,存储系统对数据的操作(包括创建、追加、修改、删除等)都被首先封装成日志,并记录到日志盘中。每隔一定时间(或日志盘即将写满),存储系统会根据日志,将数据内容真正写入数据盘,该过程称为日志同步(sync)。最后一条被写入磁盘的日志被称为检查点,检查点之前的日志全部删除,检查点之后开始新日志记录周期。当发生系统错误时(如掉电),则在下次系统启动时就会通过日志同步将未完成的数据修改操作持久化到硬盘,这个过程一般只需要几秒钟(如常见的windows操作系统断电重启的磁盘检查)。因此,当数据修改操作被记录到日志盘时,无须实际写入数据盘,即可认为写入成功。在存储系统中,一种常规的平衡性能与成本的做法是使用固态硬盘(SolidStateDrives,简称为SSD)作为日志盘,使用传统硬盘(HardDiskDrive,简称为HDD)作为数据盘。由于每次写入操作首先为写入日志,即写入固态硬盘,可以充分发挥性能优势。固态硬盘一方面起到了缓存的作用,另一方面相较于内存作为缓存,固态硬盘具有非易失性的特点,因此比传统缓存可靠。在系统闲时将日志同步,数据异步写入磁盘,对上层应用屏蔽了时延。在单机系统中,如图1所示,单个数据盘的日志均存储在单独的日志盘,日志盘\数据盘配比为1:1会带来高昂的成本。后来,为了降低成本,如图2所示,数据盘被分区,小分区作为日志盘,大分区作为数据盘。在大规模集群存储环境中,如图3所示,会采用单盘作为日志盘,同时被分区使用,即单个数据盘的日志存储在单独的日志盘分区中。这种在大规模集群存储环境中照搬单机系统的日志方案,虽然使得同一数据盘的日志集中存放,但是存在如下问题:问题1:系统扩展性差。日志盘分区导致系统扩展性差,分区数量难以随意增减,因此系统规模无法扩展。问题2:存储空间不均衡。各数据盘的繁忙程度不同,导致无法均衡各日志盘分区的存储空间,造成个别日志盘分区空间浪费,个别日志盘分区饱和。问题3:损害固态硬盘寿命。传统日志技术针对磁盘特性进行设计,近年来固态硬盘发展迅速,被广泛应用于日志盘。但日志技术鲜有针对固态硬盘特性的优化改进。旧的日志技术在写入时以原地更新的方式,该种方式未考虑固态硬盘的写前擦除特性,因而对固态硬盘的寿命产生较大的负面影响,也即造成了存储系统的成本高昂。问题4:日志写入效率低下。在日志写入时,以时间排序,而非以分区为单位进行,因此需要不断地在不同的分区切换,大量的随机写造成性能低下。面对上述问题,业界典型的解决思路是将多日志盘(或日志盘分区)“池化”,例如采用哈希算法使得日志盘各分区的负载均衡。又如通过设置一个Hash链表,用于记录日志数据在日志盘中的位置地址信息。再如采用链式方式组织写入的日志。以上方案的共同特点是将不同数据盘的日志混合存储,通过均衡算法使得日志在各分区分布均衡。这种技术方案很好地解决了问题1、2,但无法解决问题3、4,同时带来了新的问题:问题5:日志同步效率低下。在日志同步时,由于日志分散,导致大量随机读取,使得日志同步效率低下。问题6:日志删除效率低下。需要额外记录日志的有效性状态,在日志同步后必须立即删除该日志,但固态硬盘的擦除操作以块为单位并非以页为单位,造成了大量的有效数据搬迁,对固态硬盘的性能和寿命产生负面影响。
技术实现思路
为解决上述技术问题,本专利技术实施例提供了一种日志写入及同步方法、装置、系统、计算机存储介质。本专利技术实施例提供的日志写入方法,包括:从日志盘的变量区中读取已写入日志的终点页编号;将日志写入所述终点页编号所对应的数据区页面中,形成日志页;获取所述日志页对应的写入位置和日志页所属的数据区段编号,将所述日志页对应的写入位置和日志页所属的数据区段编号存储至日志盘的位图区中。本专利技术实施例中,所述方法还包括:在所述日志盘的变量区中,将所述已写入日志的终点页编号加1,并判断日志是否已写到日志盘的盘尾;如果日志已写到日志盘的盘尾,则将已写入日志的终点设置为盘头。本专利技术实施例中,所述方法还包括:在日志盘的数据区中,判断处于空闲态的数据区页面的数量是否小于等于预设阈值;如果处于空闲态的数据区页面的数量小于等于预设阈值,则触发日志同步。本专利技术实施例中,所述获取所述日志页对应的写入位置和日志页所属的数据区段编号,将所述日志页对应的写入位置和日志页所属的数据区段编号存储至日志盘的位图区中,包括:在日志盘的位图区中,确定所述日志页对应的位图编号,其中,所述日志页对应的位图编号等于所述已写入日志的终点页编号;获取所述日志页对应的写入位置和日志页所属的数据区段编号;在所述日志盘的位图区中,将所述日志页对应的写入位置和日志页所属的数据区段编号写入所述位图编号所指定的槽位中,并将所述槽位标记为已写入。本专利技术实施例中,所述在所述日志盘的变量区中,将所述已写入日志的终点页编号加1,包括:在所述日志盘的变量区中,读取处于有效态的已写入日志的终点页编号,作为旧终点页编号;判断所述旧终点页编号所在的块中是否存在剩余空间;如果所述旧终点页编号所在的块中存在剩余空间,则在所述旧终点页编号的相邻下一个位置处写入新终点页编号,所述新终点页编号等于所述旧终点页编号加1;将所述旧终点页编号标记为无效,将所述新终点页编号标记为有效;如果所述旧终点页编号所在的块中不存在剩余空间,则在另一个块的首部写入新终点页编号,所述新终点页编号等于所述旧终点页编号加1;将所述旧终点页编号所在的块擦除,将所述新终点页编号标记为有效。本专利技术实施例提供的日志同步方法,包括从日志盘的变量区中读取已写入日志的起点页编号和终点页编号;第一次遍历日志盘的位图区,查看从起点日志页至终点日志页对应的元数据,如果元数据中的写入位置有重复,则将旧元数据的是否覆盖写置为1;第二次遍历日志盘的位图区,如果遇到是否覆盖写为1的元数据,则跳过该元数据;否则,根据元数据中的写入位置和日志页所属的数据区段编号将相应日志页的内容写入数据盘;擦除日志盘的位图区和数据区中的内容,并修改所述日志盘的变量区中的变量,将已写入日志的起点页编号设置等于已写入日志的终点页编号。本专利技术实施例中,第二次遍历日志盘的位图区之后,所述方法还包括:第三次遍历日志盘的位图区,统计各日志页所属的数据区段编号的出现次数;如果日志页所属的数据区段编号的出现次数大于等于预设阈值,则通知内存在下一次日志同步之前保留该数据区段编号对应的文件数据,并修改日志页对应的写入位置,将所述文件数据转储至高速存储介质。本专利技术实施例中,第一次遍历日志盘的位图区之前,所述方法还包括:比较所述已写入日志的起点页编号和终点页编号是否相同;如果所述已写入日志的起点页编号和终点页编号不相同,则进行第一次遍历日志盘。本专利技术实施例中,所述擦除日志盘的位图区和数据区中的内容,包括:读取本文档来自技高网
...

【技术保护点】
1.一种日志写入方法,其特征在于,所述方法包括:从日志盘的变量区中读取已写入日志的终点页编号;将日志写入所述终点页编号所对应的数据区页面中,形成日志页;获取所述日志页对应的写入位置和日志页所属的数据区段编号,将所述日志页对应的写入位置和日志页所属的数据区段编号存储至日志盘的位图区中。

【技术特征摘要】
1.一种日志写入方法,其特征在于,所述方法包括:从日志盘的变量区中读取已写入日志的终点页编号;将日志写入所述终点页编号所对应的数据区页面中,形成日志页;获取所述日志页对应的写入位置和日志页所属的数据区段编号,将所述日志页对应的写入位置和日志页所属的数据区段编号存储至日志盘的位图区中。2.根据权利要求1所述的日志写入方法,其特征在于,所述方法还包括:在所述日志盘的变量区中,将所述已写入日志的终点页编号加1,并判断日志是否已写到日志盘的盘尾;如果日志已写到日志盘的盘尾,则将已写入日志的终点设置为盘头。3.根据权利要求1所述的日志写入方法,其特征在于,所述方法还包括:在日志盘的数据区中,判断处于空闲态的数据区页面的数量是否小于等于预设阈值;如果处于空闲态的数据区页面的数量小于等于预设阈值,则触发日志同步。4.根据权利要求1所述的日志写入方法,其特征在于,所述获取所述日志页对应的写入位置和日志页所属的数据区段编号,将所述日志页对应的写入位置和日志页所属的数据区段编号存储至日志盘的位图区中,包括:在日志盘的位图区中,确定所述日志页对应的位图编号,其中,所述日志页对应的位图编号等于所述已写入日志的终点页编号;获取所述日志页对应的写入位置和日志页所属的数据区段编号;在所述日志盘的位图区中,将所述日志页对应的写入位置和日志页所属的数据区段编号写入所述位图编号所指定的槽位中,并将所述槽位标记为已写入。5.根据权利要求1所述的日志写入方法,其特征在于,所述在所述日志盘的变量区中,将所述已写入日志的终点页编号加1,包括:在所述日志盘的变量区中,读取处于有效态的已写入日志的终点页编号,作为旧终点页编号;判断所述旧终点页编号所在的块中是否存在剩余空间;如果所述旧终点页编号所在的块中存在剩余空间,则在所述旧终点页编号的相邻下一个位置处写入新终点页编号,所述新终点页编号等于所述旧终点页编号加1;将所述旧终点页编号标记为无效,将所述新终点页编号标记为有效;如果所述旧终点页编号所在的块中不存在剩余空间,则在另一个块的首部写入新终点页编号,所述新终点页编号等于所述旧终点页编号加1;将所述旧终点页编号所在的块擦除,将所述新终点页编号标记为有效。6.一种日志同步方法,其特征在于,所述方法包括从日志盘的变量区中读取已写入日志的起点页编号和终点页编号;第一次遍历日志盘的位图区,查看从起点日志页至终点日志页对应的元数据,如果元数据中的写入位置有重复,则将旧元数据的是否覆盖写置为1;第二次遍历日志盘的位图区,如果遇到是否覆盖写为1的元数据,则跳过该元数据;否则,根据元数据中的写入位置和日志页所属的数据区段编号将相应日志页的内容写入数据盘;擦除日志盘的位图区和数据区中的内容,并修改所述日志盘的变量区中的变量,将已写入日志的起点页编号设置等于已写入日志的终点页编号。7.根据权利要求6所述的日志同步方法,其特征在于,第二次遍历日志盘的位图区之后,所述方法还包括:第三次遍历日志盘的位图区,统计各日志页所属的数据区段编号的出现次数;如果日志页所属的数据区段编号的出现次数大于等于预设阈值,则通知内存在下一次日志同步之前保留该数据区段编号对应的文件数据,并修改日志页对应的写入位置,将所述文件数据转储至高速存储介质。8.根据权利要求6所述的日志同步方法,其特征在于,第一次遍历日志盘的位图区之前,所述方法还包括:比较所述已写入日志的起点页编号和终点页编号是否相同;如果所述已写入日志的起点页编号和终点页编号不相同,则进行第一次遍历日志盘。9.根据权利要求6所述的日志同步方法,其特征在于,所述擦除日志盘的位图区和数据区中的内容,包括:读取已写入日志的起点页编号和终点页编号;在数据区中,将起点页编号所在的块擦除,将起点页编号所在的块的相邻下一个块擦除,直至将终点页编号所在的块的相邻前一个块擦除;判断终点页编号是否位于块的最后一页;如果终点页编号位于块的最后一页,则将终点页编号所在的块擦除;在位图区中,将与起点页编号相等的位图编号所在的块擦除,依次擦除相邻...

【专利技术属性】
技术研发人员:杨洪章罗圣美江滢
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1