《一种纠删码存储中负载感知的读优化方法.pdf》由会员分享,可在线阅读,更多相关《一种纠删码存储中负载感知的读优化方法.pdf(11页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103176865 A (43)申请公布日 2013.06.26 CN 103176865 A *CN103176865A* (21)申请号 201310077285.4 (22)申请日 2013.03.12 G06F 11/14(2006.01) G06F 3/06(2006.01) (71)申请人 华中科技大学 地址 430074 湖北省武汉市洪山区珞喻路 1037 号 (72)发明人 黄建忠 曹强 谢长生 黄思倜 梁先海 (74)专利代理机构 华中科技大学专利中心 42201 代理人 朱仁玲 (54) 发明名称 一种纠删码存储中负载感知的读优化方法 (57) 摘。
2、要 本发明公开了一种纠删码存储中负载感知的 读优化方法, 包括 : 初始化纠删码存储集群中所 有节点的节点负载权重值为零, 从用户接收应用 访问请求, 从纠删码存储集群的数据节点中任选 一个数据节点, 判断该数据节点是否在应用访问 请求操作对应的节点号内, 如果是则判断该数据 节点的节点负载权重值是否大于或等于预定的阈 值, 若是则将纠删码存储集群中所有节点的节点 负载权重值按照从小到大的顺序进行排列, 读取 前 K 个节点对应的偏移地址的分块数据, 并获取 读取该分块数据各自所花费的时间, 并利用 RS 解 码算法对分块数据进行解码操作。本方法能够解 决传统方法在各节点负载相差很大时存在的应。
3、用 访问请求的响应时间长、 纠删码存储集群的可靠 性低的问题。 (51)Int.Cl. 权利要求书 1 页 说明书 5 页 附图 4 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书1页 说明书5页 附图4页 (10)申请公布号 CN 103176865 A CN 103176865 A *CN103176865A* 1/1 页 2 1. 一种纠删码存储中负载感知的读优化方法, 其是应用于纠删码存储集群中, 其特征 在于, 该方法包括以下步骤 : (1) 初始化纠删码存储集群中所有节点的节点负载权重值为零 ; (2) 从用户接收应用访问请求 ; (3) 从纠删码存储集。
4、群的数据节点中任选一个数据节点 ; (4) 判断该数据节点是否在应用访问请求操作对应的节点号内, 如果是则进入步骤 (5) , 否则转入步骤 (10) ; (5) 判断该数据节点的节点负载权重值是否大于或等于预定的阈值, 若是则转入步骤 (6) , 否则转入步骤 (10) ; (6) 将纠删码存储集群中所有节点的节点负载权重值按照从小到大的顺序进行排列 ; (7) 读取前 K 个节点对应的偏移地址的分块数据, 并获取读取该分块数据各自所花费 的时间, 并利用 RS 解码算法对读取的前 K 个节点对应的偏移地址的分块数据进行解码操 作 ; (8) 使用步骤 (7) 获取的前 K 个节点中各个节点。
5、的时间替换该节点最近 M 次被访问中 第一次被访问的响应时间 ; (9) 从解码后的分块数据中选取应用访问请求对应的分块数据, 将该分块数据返回给 用户, 然后转入步骤 (12) ; (10) 读取应用访问请求指定的各个节点对应的偏移地址的分块数据, 并获取应用访问 请求指定的各个节点读取分块数据所花费的时间, 并将分块数据返回给用户 ; (11) 使用步骤 (10) 获取的各个节点的时间替换该节点最近 M 次被访问中第一次被访 问的响应时间 ; (12) 从用户接收下一条应用访问请求, 并判断该应用访问请求是否是结束命令, 如果 是则过程结束, 否则将纠删码存储集群中所有节点的节点负载权重值。
6、按照从小到大的顺序 进行排列, 从中选取节点负载权重值最大的数据节点, 并返回步骤 (4) 。 2. 根据权利要求 1 所述的读优化方法, 其特征在于, 应用访问请求包括节点号、 偏移、 大小和跨越四个元素。 3.根据权利要求1所述的读优化方法, 其特征在于, 阈值的取值范围是50至100毫秒。 4. 根据权利要求 1 所述的读优化方法, 其特征在于, 数据节点的节点负载权重值是通 过计算该数据节点最近 M 次被访问的响应时间之和来获得, M 的取值范围是 5 至 10。 权 利 要 求 书 CN 103176865 A 2 1/5 页 3 一种纠删码存储中负载感知的读优化方法 技术领域 00。
7、01 本发明属于计算机存储领域, 更具体地, 涉及一种纠删码存储中负载感知的读优 化方法。 背景技术 0002 廉价冗余磁盘阵列 RAID (Redundant Array of Independent DisK) 是一种将一堆 磁盘通过相关的技术连接起来, 构成逻辑上的空间。同时 RAID 可以使诸多磁盘驱动器同时 传输数据, 在逻辑上面这些磁盘驱动器又是被看成一个磁盘驱动器。同时对于一般的 RAID 来说比如 RAID2、 RAID3、 RAID4 和 RAID5 等都提供了相应的校验技术来进行数据的校验。通 过校验技术可以保证 RAID 系统在某个或某些磁盘的数据出现错误的时候还可以通过。
8、校验 盘的数据和其余剩余未出错盘上的数据恢复出失效数据。作为 RAID 码的一般化形式, 纠删 码也具备这种特性, 如纠删码在存储集群下的应用, 它能保护集群节点的数据失效, 构成具 有容错特性的纠删码存储集群。 0003 在传统的纠删码存储集群中读取数据的大致过程可以分为以下两步 :(1) 首先接 收客户的访问请求, 获得所请求分块数据在纠删码集群的具体位置 (位于某数据节点上的 具体偏移地址) 。 (2) 根据数据节点相应的偏移地址读取出相应的分块数据, 并将请求结果 返回给客户。如图 1 所示, 其为传统纠删码存储集群中的数据读过程, 该过程是接收应用访 问请求, 直接从数据节点读取相应。
9、的分块数据返回给客户, 具体不涉及对校验节点进行操 作。如图 2 所示, 其为传统纠删码存储集群中数据读的流程图。 0004 在传统纠删码存储集群中的读取数据过程中, 如果各节点的负载相对比较均衡, 读取各分块数据的返回时间是接近的。 然而如果各节点的负载相差很大 (具体表现为 : 从不 同节点读取相应分块数据的完成时间参差不齐, 相差 1 2 个数量级) 时, 传统纠删码存储 集群中的读数据方法会存在以下问题 : 0005 1、 在纠删码存储集群中请求完成时间受限于最晚返回的分块请求, 因此会导致纠 删码存储集群很差的读性能, 增加应用访问请求的响应时间。 0006 2、 在纠删码存储集群中。
10、, 此时某些节点的负载相对较轻, 甚至处于空闲状态, 而一 些节点处于重负载状态, 频繁的超重负载往往增加节点崩溃的概率, 从而降低了纠删码存 储集群的可靠性。 发明内容 0007 针对现有技术的缺陷, 本发明的目的在于提供一种纠删码存储中负载感知的读优 化方法, 其不仅能够保证在各个节点的负载相对比较均衡时, 读取应用请求的分块数据与 传统纠删码集群读数据方法有相同的性能, 同时能够解决传统纠删码集群读数据方法在各 节点负载相差很大时存在的应用访问请求的响应时间长、 纠删码存储集群的可靠性低的问 题。 0008 为实现上述目的, 本发明提供了一种纠删码存储中负载感知的读优化方法, 其是 说 。
11、明 书 CN 103176865 A 3 2/5 页 4 应用于纠删码存储集群中, 该方法包括以下步骤 : 0009 (1) 初始化纠删码存储集群中所有节点的节点负载权重值为零 ; 0010 (2) 从用户接收应用访问请求 ; 0011 (3) 从纠删码存储集群的数据节点中任选一个数据节点 ; 0012 (4) 判断该数据节点是否在应用访问请求操作对应的节点号内, 如果是则进入步 骤 (5) , 否则转入步骤 (10) ; 0013 (5) 判断该数据节点的节点负载权重值是否大于或等于预定的阈值, 若是则转入 步骤 (6) , 否则转入步骤 (10) ; 0014 (6) 将纠删码存储集群中所。
12、有节点的节点负载权重值按照从小到大的顺序进行排 列 ; 0015 (7) 读取前 K 个节点对应的偏移地址的分块数据, 并获取读取该分块数据各自所 花费的时间, 并利用RS解码算法对读取的前K个节点对应的偏移地址的分块数据进行解码 操作 ; 0016 (8) 使用步骤 (7) 获取的前 K 个节点中各个节点的时间替换该节点最近 M 次被访 问中第一次被访问的响应时间 ; 0017 (9) 从解码后的分块数据中选取应用访问请求对应的分块数据, 将该分块数据返 回给用户, 然后转入步骤 (12) ; 0018 (10) 读取应用访问请求指定的各个节点对应的偏移地址的分块数据, 并获取应用 访问请求。
13、指定的各个节点读取分块数据所花费的时间, 并将分块数据返回给用户 ; 0019 (11) 使用步骤 (10) 获取的各个节点的时间替换该节点最近 M 次被访问中第一次 被访问的响应时间 ; 0020 (12) 从用户接收下一条应用访问请求, 并判断该应用访问请求是否是结束命令, 如果是则过程结束, 否则将纠删码存储集群中所有节点的节点负载权重值按照从小到大的 顺序进行排列, 从中选取节点负载权重值最大的数据节点, 并返回步骤 (4) 。 0021 应用访问请求包括节点号、 偏移、 大小和跨越四个元素。 0022 阈值的取值范围是 50 至 100 毫秒。 0023 数据节点的节点负载权重值是通。
14、过计算该数据节点最近 M 次被访问的响应时间 之和来获得, M 的取值范围是 5 至 10。 0024 通过本发明所构思的以上技术方案, 与现有技术相比, 本发明具有以下的有益效 果 : 0025 1、 在各个节点负载不均衡的情况下响应时间短 : 由于采用了步骤 (5) 、 步骤 (6) 以 及步骤 (7) 三个步骤对负载权重值最大的节点进行调度处理, 减少了该情况下的响应时间。 0026 2、 提高纠删码存储集群的可靠性 : 由于采用了步骤 (5) 、 步骤 (6) 、 步骤 (7) 、 步骤 (8) 和步骤 (9) 对负载权重值最大的节点进行调度, 一定程度上平衡了各个节点的负载情 况, 。
15、降低了纠删码存储集群中各个节点因频繁的超负载而崩溃的概率, 从而提高整个纠删 码存储集群的可靠性。 附图说明 0027 图 1 为传统数据读示意图。 说 明 书 CN 103176865 A 4 3/5 页 5 0028 图 2 为传统纠删码存储集群数据读流程图。 0029 图 3 为纠删码存储集群中各节点的条带与分块数据示意图。 0030 图 4 为 RS(N,K) 编码的结构组成图。 0031 图 5 为本发明数据读示意图。 0032 图 6 为本发明纠删码存储中负载感知的读优化方法的流程图。 0033 图 7 为 RS(8,5) 编码应用访问请求分布图。 具体实施方式 0034 为了使本。
16、发明的目的、 技术方案及优点更加清楚明白, 以下结合附图及实施例, 对 本发明进行进一步详细说明。 应当理解, 此处所描述的具体实施例仅仅用以解释本发明, 并 不用于限定本发明。 0035 以下首先就本发明的技术术语进行解释和说明 : 0036 节点负载权重 : 在本发明中以 Load_weight 表示, 其指示节点在一段时间窗口内 的负载情况, 负载权重值 (Load_weight) 还可以用许多状态量如 CPU 利用率、 存储空间、 I/ O 带宽等表征。在本发明中, 用负载权重值 (Load_weight) 表示节点在一段时间窗口内的平 均请求响应时间。Load_weight 值越大表。
17、示节点的负载越重, 负载权重值 (Load_weight) 的 取值可以是任意的正数。 0037 调度层 : 本发明中在客户层和底层节点之间增加一调度功能模块, 充当 I/O 调度 层, 其主要任务是维护纠删码存储集群中各个节点的负载权重值 (Load_weight) 。 0038 分块数据和数据条带以及偏移地址 : 节点的分块数据表示节点中一定大小的数据 块。如图 3 中所示的分块数据 D0,0、 D0,1、 D0,K-1等即为数据节点上的分块数据, 校验分块 P0,0、 P0,1等即为校验节点上的分块数据。偏移地址表示为相对于节点首地址的偏移量。如 图 3 中所示的 0、 1n-1、 n 。
18、表示的离节点首地址偏移量为 0*512 字节、 1*512 字节(n-1) *512 字节、 n*512 字节的位置。所有节点上相同偏移地址的各个分块数据构成一个数据条 带。在图 3 中表示为分块数据 D0,0、 D0,1D0,K-1、 P0,0P0,N-K-1, 这 N 块分块数据组成一个数据 条带。如图 3 所示一分块数据的大小为 512 字节。本发明提供了一种纠删码存储中负载感 知的读优化方法, 其采用 RS(N, K) 编码, 即水平 Vandermondev Reed-Solomon 编码, 如图 4 所示, 其中 K 表示存储集群中数据节点数目, N 表示存储集群中节点的总数 (具。
19、体表示为 : 存 储集群中节点总数为数据节点数目与校验节点数目之和, 即校验节点数目为 (N-K) ) , 对于 节点数 N 处于重构时间考虑, 节点数通常低于 20, 比如微软 Azure 存储中, 参数 K=12,(N-K) =4, 这样总节点数为 16。如果整个整个系统规模很大, 则对所有节点进行分组, 在分组内进 行纠删码数据组织。每个分组是一个独立的纠删码集群存储系统。 0039 如图 5 所示, 本发明方法主要在传统纠删码存储集群的数据读过程中增加一 I/O 调度层 (以 I/O 调度模块的方式呈现) , 该 I/O 调度层的主要任务是维护纠删码集群节点的 节点负载权重值, 并对应。
20、用访问请求进行调度。具体而言, 以下的步骤 (6) 至 (8) 都是通过 I/O 调度模块实现的。 0040 如图 6 所示, 本发明纠删码存储中负载感知的读优化方法是应用于纠删码存储集 群中, 并包括以下步骤 : 0041 (1) 初始化纠删码存储集群中所有节点的节点负载权重值为零 ; 说 明 书 CN 103176865 A 5 4/5 页 6 0042 (2) 从用户接收应用访问请求 ; 应用访问请求包括节点号 (node) 、 偏移 (offset) 、 大小 (size) 和跨越 (across) 四个元素, 表示为 , 各个元素 的含义如下 : 0043 节点号 : 表示应用访问请。
21、求的各个节点中, 第一个访问的节点的编号 (节点的编号 是从 1 开始标记的, 如数据节点 1 标记为 1、 数据节点 2 标记为 2、 数据节点 3 标记为 3, , 依次类推) 。 0044 偏移 : 表示节点上的偏移地址, 具体表示为在节点的具体位置读取分块数据, 单位 是字节 (Byte) 。 0045 大小 : 表示读取数据的大小, 单位是字节。 0046 跨越 : 表示应用访问请求中请求操作的节点个数。 0047 举例而言, 应用访问请求命令为 , 其表示从节点号为 1 的节点开始, 连续读取节点号 1、 2、 3 三个节点, 从上述节点的偏移地址 20 字节开始读取大小为 40 。
22、字节 的数据。 0048 (3) 从纠删码存储集群的数据节点中任选一个数据节点 ; 0049 (4) 判断该数据节点是否在应用访问请求操作对应的节点号内, 如果是则进入步 骤 (5) , 否则转入步骤 (10) ; 0050 (5) 判断该数据节点的节点负载权重值是否大于或等于预定的阈值, 若是则转入 步骤 (6) , 否则转入步骤 (10) ; 该阈值的取值范围是 50 至 100 毫秒, 优选为 60 毫秒 ; 具体而 言, 数据节点的节点负载权重值是通过计算该数据节点最近 M 次被访问的响应时间之和来 获得, M 的取值范围是 5 至 10 ; 0051 (6) 将纠删码存储集群中所有节。
23、点的节点负载权重值按照从小到大的顺序进行排 列 ; 0052 (7) 读取前 K 个节点对应的偏移地址的分块数据, 并获取读取该分块数据各自所 花费的时间, 并利用RS解码算法对读取的前K个节点对应的偏移地址的分块数据进行解码 操作 ; 0053 (8) 使用步骤 (7) 获取的前 K 个节点中各个节点的时间替换该节点最近 M 次被访 问中第一次被访问的响应时间 ; 0054 (9) 从解码后的分块数据中选取应用访问请求对应的分块数据, 将该分块数据返 回给用户, 然后转入步骤 (12) ; 0055 (10) 读取应用访问请求指定的各个节点对应的偏移地址的分块数据, 并获取应用 访问请求指定。
24、的各个节点读取分块数据所花费的时间, 并将分块数据返回给用户 ; 0056 (11) 使用步骤 (10) 获取的各个节点的时间替换该节点最近 M 次被访问中第一次 被访问的响应时间 ; 0057 (12) 从用户接收下一条应用访问请求, 并判断该应用访问请求是否是结束命令, 如果是则过程结束, 否则将纠删码存储集群中所有节点的节点负载权重值按照从小到大的 顺序进行排列, 从中选取节点负载权重值最大的数据节点, 并返回步骤 (4) 。 0058 如图 7 所示, 其示出以 RS(8, 5) 编码为实例的应用访问请求分布图。 0059 对图 7 的说明如下 : 0060 图 7 中各个节点的偏移地。
25、址以 512 字节为基数。 说 明 书 CN 103176865 A 6 5/5 页 7 0061 图 7 中虚线以上的部分表示各个节点数据块的分布图, 虚线以下部分表示当前各 个节点的负载权重值 (Load_weight) 的情况, 各个节点的负载权重值 (Load_weight) 通过 直方图反映。 0062 图 7 中客户发出一条 的应用访问请求。该应用访问请求在两 种不同的读过程中的操作分别如下 : 0063 (1) 传统的纠删码存储集群中的操作为 : 0064 如图 7 所示, 直接从三个数据节点 数据节点 1、 数据节点 2、 数据节点 3 的偏移 地址为 4*512 字节的位置,。
26、 读取大小为 1*512 字节的分块数据, 返回给客户 (具体为取附图 7 中 a、 b、 c 三个分块数据返回给客户) 。 0065 (2) 本发明中的操作分为 : 0066 第一步 : 根据各个节点的节点负载权重值对所有节点进行升序排列, 排序结果为 : 数据节点 2、 数据节点 1、 冗余节点 1、 数据节点 4、 数据节点 5、 冗余节点 2、 冗余节点 3、 数据 节点 4。 0067 第二步 : 取节点负载权重值 (Load_weight) 最大的数据节点 2 进行判断, 判断该节 点是否在客户应用访问请求的节点内 (客户请求访问的节点为数据节点 1、 数据节点 2、 数 据节点 。
27、3) 。 0068 第三步 : 由于数据节点 2 的节点负载权重值大于阈值 (本实例选取最佳阈值为 60ms) (70ms60ms) , 则进行调度处理 : 读取节点负载权重值值相对较小的数据节点 3、 数据 节点4、 数据节点5、 冗余节点2、 冗余节点3五个节点相应位置的分块数据 (具体在图7中即 为读取分块数据 c、 d、 e、 g、 h 到调度层) 。 0069 第四步 : 利用分块数据 c、 d、 e、 g、 h 解码出所有数据节点的分块数据 a、 b、 c、 d、 e, 然后从已解码的分块数据中选取应用访问请求所需的分块数据 a、 b、 c 返回给用户。 到此应用访问请求执行完毕。。
28、 0070 总而言之, 本发明具有以下的有益效果 : 0071 1、 在各个节点负载不均衡的情况下响应时间短 : 由于采用了步骤 (5) 、 步骤 (6) 以 及步骤 (7) 三个步骤对负载权重值最大的节点进行调度处理, 减少了该情况下的响应时间。 0072 2、 提高纠删码存储集群的可靠性 : 由于采用了步骤 (5) 、 步骤 (6) 、 步骤 (7) 、 步骤 (8) 和步骤 (9) 对负载权重值最大的节点进行调度, 一定程度上平衡了各个节点的负载情 况, 降低了纠删码存储集群中各个节点因频繁的超负载而崩溃的概率, 从而提高整个纠删 码存储集群的可靠性。 0073 本领域的技术人员容易理解, 以上所述仅为本发明的较佳实施例而已, 并不用以 限制本发明, 凡在本发明的精神和原则之内所作的任何修改、 等同替换和改进等, 均应包含 在本发明的保护范围之内。 说 明 书 CN 103176865 A 7 1/4 页 8 图 1 图 2 图 3 说 明 书 附 图 CN 103176865 A 8 2/4 页 9 图 4 图 5 说 明 书 附 图 CN 103176865 A 9 3/4 页 10 图 6 说 明 书 附 图 CN 103176865 A 10 4/4 页 11 图 7 说 明 书 附 图 CN 103176865 A 11 。