一种写性能优化方法、装置及存储系统的制作方法_2

文档序号:9564390阅读:来源:国知局
合并提交;
[0056] 图9表示本发明实施例的较佳实施方式的同步写全局负载均衡;
[0057] 图10表示本发明实施例提供的第一种存储装置的结构框图;
[0058] 图11表示本发明实施例提供的第二种存储装置的结构框图;
[0059] 图12表示本发明实施例提供的第三种存储装置的结构框图。
【具体实施方式】
[0060] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图及具体实 施例对本发明实施例进行详细描述。
[0061] 图2表示本发明实施例提供的第一种存储方法的步骤流程图,参照图2,本发明实 施例提供一种存储方法,包括如下步骤:
[0062] 步骤201,获取至少两个顺序写请求,所述顺序写请求非对齐地访问所述存储系统 的存储装置中的数据块,所述顺序写请求携带有待写入数据和所述待写入数据的待写入到 所述存储装置中的存储空间信息;
[0063] 步骤202,根据全部所述顺序写请求携带的存储空间信息,判断全部所述顺序写请 求是否连续;
[0064] 步骤203,在全部所述顺序写请求连续时,读取全部所述顺序写请求非对齐地访问 的所述存储装置中的第一个和最后一个数据块;
[0065] 步骤204,根据全部所述顺序写请求携带的待写入数据和存储空间信息和读取出 的第一个和最后一个数据块,更新全部所述顺序写请求非对齐地访问的数据块。
[0066] 所述方法用于一存储系统。
[0067] 可见,通过顺序写请求连续时读取第一个和最后一个数据块来进行非对齐地访问 的数据块的更新,不需要读取中间数据块,从而减少了从存储装置中读取数据块的次数。 [0068] 其中,所述存储系统可以为文件系统,例如:ZFS文件系统。
[0069] 所述存储装置例如:机械硬盘或闪存设备等。
[0070] 存储空间信息例如:存储空间标识和/或存储空间位置偏置等。
[0071] 本发明实施例中,所述根据全部所述顺序写请求携带的存储空间信息,判断全部 所述顺序写请求是否连续可以包括:
[0072] 根据全部所述顺序写请求携带的存储空间信息,判断全部所述存储空间信息表征 的存储空间是否连续,如果是,则全部所述顺序写请求连续;否则,全部所述顺序写请求不 连续。
[0073] 本发明实施例中,所述根据全部所述顺序写请求携带的待写入数据和存储空间信 息和读取出的第一个和最后一个数据块,更新全部所述顺序写请求非对齐地访问的数据块 可以包括:
[0074] 根据访问所述第一个数据块的所述顺序写请求携带的待写入数据和存储空间信 息,更新所述第一个数据块;
[0075] 根据访问所述最后一个数据块的所述顺序写请求携带的待写入数据和存储空间 信息,更新所述最后一个数据块;
[0076] 对于全部所述顺序写请求非对齐地访问的所述第一个和最后一个数据块之外的 其它每个数据块,根据访问所述其它每个数据块的全部所述顺序写请求携带的待写入数据 和存储空间信息,更新所述其它每个数据块。
[0077] 图3表示本发明实施例提供的第二种存储方法的步骤流程图,参照图3,本发明实 施例提供一种存储方法,包括如下步骤:
[0078] 步骤301,判断至少两个写请求针对的数据是否需要同步存储到所述存储系统的 存储装置;
[0079] 步骤302,当所述数据需要同步存储到所述存储装置时,利用一个输入/输出1/ 〇请求,将所述至少两个写请求对应的待提交日志提交给所述存储装置,使得所述存储装置 能够根据所述待提交日志,对所述数据进行同步存储,所述待提交日志包括所述至少两个 写请求中每个写请求针对的数据和所述存储装置中的存储空间信息。
[0080] 所述方法用于一存储系统。
[0081] 可见,通过利用一个I/O请求提交日志,减少了同步写请求的日志提交所产生的 I/O请求数。
[0082] 本发明实施例中,所述待提交日志可以包括所述至少两个写请求分别对应的日 志,或者,所述至少两个写请求分别对应的日志被合并后得到的日志。
[0083] 图4表示本发明实施例提供的第三种存储方法的步骤流程图,参照图4,本发明实 施例提供一种存储方法,所述存储系统包括至少第一对象集和第二对象集,所述方法包括 如下步骤:
[0084] 步骤401,获取所述第一对象集内分别针对第一待写入数据和第二待写入数据的 第一同步写请求和第二同步写请求;
[0085] 步骤402,分别为所述第一待写入数据和所述第二待写入数据分配所述第一对象 集和所述第二对象集的存储装置进行存储。
[0086] 所述方法用于一存储系统。
[0087] 可见,通过为本对象集内的同步写请求分配其它对象集的成员盘,从而减轻了本 对象集的成员盘负载。
[0088] 其中,所述存储装置例如对象集的成员盘。
[0089] 为将本发明实施例阐述得更加清楚明白,下面提供本发明实施例的较佳实施方 式。
[0090] 本较佳实施方式提供ZFS写性能优化方法,属于计算机信息存储技术领域,尤其 涉及到外存储设备的高性能、高可靠、高可扩展的优化组织技术领域。
[0091] 本较佳实施方式提出一种ZFS写性能优化方法FastWrite,该方法不仅可以优化 ZFS的顺序写性能,同时可以提高ZFS同步写的效率。
[0092] 当写请求非对齐地访问数据块时,ZFS将整块数据读取出来,修改该块数据再写入 存储设备,参照图6。这样,额外的读操作会严重影响写性能,如图5所示。另外,ZFS处理 同步写请求时,每个写请求都单独提交日志。这种同步方式虽然保证了同步写语义,却因为 牺牲了同步写的并发度而降低了同步写的吞吐量。当同步写负载较重时,性能会明显下降。 为了提高同步写的吞吐量,ZFS利用多块盘的带宽,将同步写分布到各个设备上。这虽然能 够保证单个对象集内(ZFS中一个文件系统或块设备称为一个对象集)的同步写在其成员 盘之间是负载均衡的,但在多个对象集存在同步写时不能保证底层存储设备之间的负载均 衡。我们考虑是否可以减少写请求过程中的I/O个数,从而提高ZFS的写性能。
[0093] 针对ZFS存在的写性能问题,提出了 FastWrite优化方法,该方法有效地解决了上 述问题。
[0094] FastWrite方法是既能提高原ZFS的顺序写性能,又能优化同步写的I/O性能的高 效率的ZFS写性能优化方法。FastWrite写性能优化技术的重点是:非对齐顺序写聚合、同 步写合并提交、同步写全局负载均衡。
[0095] 本发明的特征在于:实现顺序写与随机写的分离,同步写与非同步写的分离。采 用聚合I/O请求的思想,将相邻的顺序写聚合成更大的I/O请求,有效的减少了"读-修 改-写"带来的额外读开销;采用同步写合并提交的方式将同步写请求放入到同步写队列 中并合并提交日志写,提高了同步写的吞吐量;采用同步写全局负载均衡确保无论单个对 象集还是多个对象集存在同步写时在底层存储设备之间的负载均衡。
[0096] 非对齐顺序写聚合针对顺序写特征,减少"读-修改-写"带来的写性能损失。该 方法检测请求序列的顺序性,并将非对齐写请求聚合成更大的写请求。由于相邻的写请求 被合并,所以减少了"读-修改-写"所产生的读操作。
[0097] 同步写合并提交是对同步写提交方式的优化,目的是避免同步写请求频繁提交日 志。将待提交的同步写请求放入同步写队列中,由同步线程负责合并提交,从而减少了提交 日志产生的开销,提高了同步写的吞吐量。
[0098] 同步写全局负载均衡使用全局同步写请求分发器来确保同步写请求可以均匀分 布到ZFS的成员设备上。这种负载均衡可以实现同步写请求在ZFS底层设备上的负载均衡。 [0099] 所述方法是在有阵列功能的主机或阵列系统上依次按以下步骤实现的:
[0100] 步骤(I) =FastWrite 优化方法;
[0101] 步骤(I. 1):判断当前写请求是否为随机写,如果是随机写,转步骤(3)。如果为顺 序写,跳转到步骤(2)。
[0102] 步骤(1.2):如图5所示,当步骤(3)返回时,继续判断是否存在多个对象集合,如 果存在多个对象集合,继续跳转到(4)。否则,按照ZFS原有的局部负载均衡策略处理同步 写请求。
[0103] 步骤(1. 3):执行具体的写操作,写请求返回。
[0104] 步骤⑵:非对齐顺序写聚合;
[0105] 步骤(2. 1):判断请求是否为非对齐写请求,并判断相信写请求之间是否存在顺 序性。
[0106] 步骤(2. 2):将相邻的顺序写请求聚合成更大的I/O请求并发送到ZFS的数据管 理层。
[0107] 步骤(2. 3):执行具体的写操作,写请求返回;
[0108] 步骤(3):同步写合并提交
[0109] 步骤(3. 1):将待提交日志的同步写请求放入到同步写队列中并通知同步线程。
[0110] 步骤(3. 2):同步线程接到通知后,检查同步写队列的状态,如果队列中仍有待提 交的请求,将同步写队列中待提交的日志项一次性全部提交到磁盘上。
[0111] 步骤(3.3):日志提交结束后
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1