一种磁盘数据的同步回写方法技术

技术编号:14865748 阅读:36 留言:0更新日期:2017-03-20 12:10
本发明专利技术公开了一种磁盘数据的同步回写方法,包括设置一个写缓存空间,比较并获取具有相同起始扇区号的数据块A与A’的差异计算结果diff,并将数据块A’替换为数据块A;对每个差异计算的结果diff赋予权重值,并从大大小排序;当有普通数据块B请求写入时,控制对数据块B进行压缩,节省出部分空间,取权重最大的差异计算的结果diff插入到所述部分空间,并将新形成的数据块B’写入到磁盘第一个块为空的Z-簇中,并将数据块B缓存到写缓存空间中;当写缓存的使用率达到预设阈值时,置换出写缓存中的数据块替换磁盘上的数据块,使Z-簇变成N簇。该方法提高了磁盘的I/O带宽利用率,有效避免了小数据的写放大。

【技术实现步骤摘要】

本专利技术涉及计算机数据读写
,尤其涉及一种基于同步写的回写I/O调度系统。
技术介绍
档系统的最小逻辑可寻址单位是块(block),块的大小一般为4KB。块设备中最小的可寻址单元是扇区,大多数块设备的扇区大小为512B,一个块由8个扇区组成。物理上,磁盘由许多扇区组成,逻辑上,磁盘由许多块设备组成。I/O调度器是档系统和块存储设备之间的一层软件。应用程序通过调用read/write方法或者是mmap方法,创建I/O请求,这些请求可以是对任意档上任意位置的修改。档系统既不会简单地按请求接收次序提交请求,也不会在接收到请求后立即存储到磁盘。而是在提交前,它会先执行合并与排序操作,从而提高系统的整体性能。目前,现有的操作系统通常采用如下方式写入数据:当向档系统写入数据块时,档系统需要修改元数据,而这些元数据通常只是若干字节,为了保证系统的高可用,档系统需要将这些元数据的修改存储到磁盘下。磁盘的读写是以块为单位,通常块的大小为4KB,对于异步写,系统可以将修改积累到一定程度再写到磁盘,而对于同步写,向档系统写入几个位元组的小数据的时候,档系统必须向磁盘写入4KB数据,从而造成了小数据的写放大,浪费了磁盘的I/O带宽,影响系统的性能。
技术实现思路
本专利技术旨在至少在一定程度上解决相关技术中的技术问题之一。为此本发明的目的在于提出一种磁盘数据的同步回写方法。一种磁盘数据的同步回写方法,所述磁盘逻辑划分为多个Z-存储区和多个N-存储区,所述每个Z-存储区由多个Z簇组成,所述N-存储区由多个N簇组成,所述Z-簇及N-簇分别具有多个块,每个块由多个扇区组成,所述同步回写方法包括:设置一个写缓存,比较并获取档系统需要写入的数据块A与所述写缓存中具有相同起始扇区号的数据块A’的差异计算结果diff,并将写缓存中的数据块A’替换为数据块A;采用绝对公平算法对每个差异计算的结果diff赋予权重值,根据权重值对差异计算的结果diff从大大小排序;当有新的普通数据块B请求写入时,控制对数据块B进行压缩,节省出部分空间,取权重最大的差异计算的结果diff插入到所述部分空间形成数据块B’,并控制将数据块B’写入到磁盘第一个块为空的Z-簇中,并将数据块B缓存到写缓存空间中;当所述写缓存的使用率达到预设阈值时,置换出写缓存中的数据块替换磁盘上的数据块,使Z-簇变成N簇。优选地,所述设置一个写缓存,比较并获取档系统需要写入的数据块A与所述写缓存中具有相同起始扇区号的数据块A’的差异计算结果diff的具体步骤为:档系统接收到写请求,获取写请求中的所述数据块A的起始扇区号,并在写缓存中搜索,是否存在相同起始扇区号的数据块A’;如果存在,则使用差异计算,计算出数据块A和数据块A’之间的差异计算结果diff;如果不存在,则直接将写请求提交到请求队列上。优选地,当有新的普通数据块B请求写入时,在控制对数据块B进行压缩之前还包括步骤:判断是否有差异计算结果diff;若有差异计算结果diff,则采用部分块模式持久化存储数据方式先对数据块B进行压缩,节省出部分空间,计算压缩后的大小数据块B的大小Len,并取权重最大的差异计算的结果diff插入到所述节省出来的部分空间中形成数据块B’,并将数据块B’写入到所述磁盘;若无差异计算结果diff,采用全块模式持久化存储数据方式更新磁盘逻辑结构,则将所述数据块B写入到所述Z族的第一个数据块之后的块中。优选地,所述取权重最大的差异计算的结果diff插入到所述节省出来的部分空间中的具体步骤为:对差异计算结果diff进行压缩,并使用时间戳标识该差异计算结果diff,然后将带有时间戳的差异计算结果diff嵌入到所述节省出来的部分空间中形成数据块B’;再将写请求提交到请求队列中,并将数据块B缓存到写缓存中,并提供该部分数据的读操作服务。优选地,所述部分块模式持久化存储数据方式是将请求队列中带有差异计算结果diff的数据块B’存储到磁盘中,由写缓存中的数据块提供该部分数据的读操作。优选地,所述当所述写缓存的使用率达到预设阈值时,置换出写缓存中的数据块替换磁盘上的数据块,使Z-簇变成N簇的具体步骤为:如果写缓存中使用率达到了阈值,则使用置换算法,选择写缓存空间中的若干数据块置换出去,用全块模式持久化存储数据方式将该数据块覆盖先前的采用部分块模式持久化数据存储方式存储的数据块B’。优选地,所述同步回写方法还包括:对于系统提交的读请求,在写缓存中查找是否有满足要求的数据;如果有,则直接取出该数据提供读服务;否则,对读请求进行排序,然后按权重由高到低分发到读请求队列上,再向磁盘读取数据,提供档系统的读服务。优选地,所述同步回写方法还包括:当系统重启之后,通过扫描磁盘,搜索嵌入了差异计算结果diff的数据块,并将这些数据块加载到写缓存空间中,为档系统提供这部分数据的读操作。优选地,所述Z-存储区及N-存储区的大小分别为64MB,所述Z簇及N簇的大小分别为64KB,所述块的大小为4KB。优选地,所述设置一个写缓存的具体步骤为:为I/O调度器分配一块回写存储器空间,用来缓存部分数据块,提供该数据的读操作。本专利技术实施例的磁盘数据的同步回写方法,通过对具有相同起始扇区号的数据块进行差异计算,得到差异计算结果Diff,过将差异计算结果Diff嵌入到普通数据块中,实现同步写小数据,从而使小数据不会丢失,当小数据缓存到一定量再写入磁盘,可以有效提高小数据的写性能,从而提高磁盘I/O的利用率,有效避免小数据的写放大。附图说明图1是根据本专利技术磁盘数据的同步回写方法一实施例的流程图;图2是本专利技术的磁盘逻辑结构的示意图;图3是根据本专利技术磁盘数据的同步回写方法向Z簇中写入带差异计算结果的数据块的示意图;图4是根据本专利技术磁盘数据的同步回写方法向Z簇中写入普通数据块的示意图;图5是根据本专利技术磁盘数据的同步回写方法中普通数据块覆盖带有差异计算结果的数据块的示意图。具体实施方式下面详细描述本专利技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本专利技术,而不能理解为对本专利技术的限制。下面参考附图描述本专利技术实施例的本文档来自技高网...

【技术保护点】
一种磁盘数据的同步回写方法,所述磁盘逻辑划分为多个Z‑存储区和多个N‑存储区,所述每个Z‑存储区由多个Z簇组成,所述N‑存储区由多个N簇组成,所述Z‑簇及N‑簇分别具有多个块,每个块由多个扇区组成,其特征在于,所述同步回写方法包括:设置一个写缓存空间,比较并获取档系统需要写入的数据块A与所述写缓存中具有相同起始扇区号的数据块A’的差异计算结果diff,并将写缓存中的数据块A’替换为数据块A;采用绝对公平算法对每个差异计算的结果diff赋予权重值,根据权重值对差异计算的结果diff从大大小排序;当有普通数据块B请求写入时,控制对数据块B进行压缩,节省出部分空间,取权重最大的差异计算的结果diff插入到所述部分空间形成数据块B’,并控制将数据块B’写入到磁盘第一个块为空的Z‑簇中,并将数据块B缓存到写缓存空间中;当所述写缓存的使用率达到预设阈值时,置换出写缓存中的数据块替换磁盘上的数据块,使Z‑簇变成N簇。

【技术特征摘要】
1.一种磁盘数据的同步回写方法,所述磁盘逻辑划分为多个Z-存储区和
多个N-存储区,所述每个Z-存储区由多个Z簇组成,所述N-存储区由多个N
簇组成,所述Z-簇及N-簇分别具有多个块,每个块由多个扇区组成,其特征
在于,所述同步回写方法包括:
设置一个写缓存空间,比较并获取档系统需要写入的数据块A与所述写缓
存中具有相同起始扇区号的数据块A’的差异计算结果diff,并将写缓存中的
数据块A’替换为数据块A;
采用绝对公平算法对每个差异计算的结果diff赋予权重值,根据权重值
对差异计算的结果diff从大大小排序;
当有普通数据块B请求写入时,控制对数据块B进行压缩,节省出部分空
间,取权重最大的差异计算的结果diff插入到所述部分空间形成数据块B’,
并控制将数据块B’写入到磁盘第一个块为空的Z-簇中,并将数据块B缓存到
写缓存空间中;
当所述写缓存的使用率达到预设阈值时,置换出写缓存中的数据块替换磁
盘上的数据块,使Z-簇变成N簇。
2.根据权利要求1所述的同步回写方法,其特征在于,所述设置一个写
缓存,比较并获取档系统需要写入的数据块A与所述写缓存中具有相同起始扇
区号的数据块A’的差异计算结果diff的具体步骤为:
档系统接收到写请求,获取写请求中的所述数据块A的起始扇区号,并在
写缓存中搜索,是否存在相同起始扇区号的数据块A’;
如果存在,则使用差异计算,计算出数据块A和数据块A’之间的差异计
算结果diff;
如果不存在,则直接将写请求提交到请求队列上。
3.根据权利要求2所述的同步回写方法,其特征在于,当有新的普通数
据块B请求写入时,在控制对数据块B进行压缩之前还包括步骤:
判断是否有差异计算结果diff;
若有差异计算结果diff,则采用部分块模式持久化存储数据方式先对数
据块B进行压缩,节省出部分空间,计算压缩后的大小数据块B的大小Len,
并取权重最大的差异计算的结果diff插入到所述节省出来的部分空间中形成
数据块B’,并将数据块B’写入到所述磁盘;
若无差异计算结果diff,采用全块模式持久化存储数据方式更新磁盘逻
辑结构,则将所述数据块B写入到所述Z族的第一个数据块之...

【专利技术属性】
技术研发人员:刘星江松王洋须成忠
申请(专利权)人:中国科学院深圳先进技术研究院
类型:发明
国别省市:广东;44

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

1