总第8期
2016年12月刊
Patent    专利
Patent    专利
CRush算法在超融合基础架构中的一种优化方法
文/王曌寅
分享

在超融合基础架构中,存储与计算融合,每个hypervisor(一种运行在物理服务器和操作系统之间的中间软件层)主机拥有本地存储,使用分布式存储软件将存储资源池化后形成共享存储池。

超融合基础架构的核心是存储的融合,存储的融合由分布式存储软件实现,其中数据分布算法关系着分布式存储系统最终的可管理性、可扩展性以及可用性,是最关键的组成部分。

图1 采用Crush算法的超融合基础架构中的数据读写路径

如图1所示的超融合基础架构中,存储和计算在同一个主机(host1)上,但是属于vm1的数据,只有三分之一的主副本在本地,三分之二的主副本不在本地。

这是因为,虚拟机对应的卷实际被分割为n个固定大小的数据块,对每个数据块的编号(OID)进行HASH得到一个GID,基于该GID可以计算出该数据块中的数据可以存储在哪些存储组件(storage)中,这些存储组件形成一个序列,在该序列中,存储组件的排序是随机的,例如,图1中storage1,storage2,storage3在一个序列中的排序是随机的,在不同的数据块对应的序列中的排序可能不同。通常主副本存储在序列中排列第一的storage中,在三副本的情况下,平均只有三分之一的主副本在本地storage中。

由于写数据需要先发送到主副本,主副本负责分发数据到其余副本,读数据只能从主副本读取,所以,若主副本不在本地,数据写入主副本时,需要跨设备执行,主副本将数据分发给副副本时,也需要跨设备执行,读数据时也需要跨设备执行,整体数据读写性能较低。

为此,本发明提供了一种新的数据分布方法,提高了虚拟机的主副本在本地的概率,从而优化了数据读写的性能,该方法的特点在于:

在确定了虚拟机的各个数据块所对应的上述序列后,将序列中距离数据块位置最近的存储组件调整到序列的最前端、即主副本所在。

下面还以图1所示的超融合基础架构来说明一下该方法的具体实现。

1、以vm1请求读取数据为例,假设host1确定vm1请求读取的数据所在的数据块的OID为:rbd.vm1-1.3~ rbd.vm1-1.5;

2、本发明中将数据块的位置信息编入OID,数据块的位置信息可以是磁盘编号、主机编号和/或机架编号,以磁盘编号为例,新的数据块的OID可以为:

rbd.vm1-1.3@storage1~ rbd.vm1-1.5@storage1;

3、对@前的内容进行HASH得到数据块的GID;

4、根据GID进行计算,可以得到每个数据块的数据可以存储在哪些storage中,假设随机生成的序列为:

rbd.vm1-1.3@ storage1--> GID --> {storage1, storage2, storage3}

rbd.vm1-1.4@ storage1--> GID --> {storage3, storage1, storage2}

rbd.vm1-1.5@ storage1--> GID --> {storage2, storage3, storage1}

5、使用数据块的位置信息(@ storage1)对上述序列进行修正后,为:

rbd.vm1-1.3 @ storage1--> GID+storage1--> {storage1, storage2, storage3}

rbd.vm1-1.4@ storage1 --> GID+storage1--> {storage1, storage3, storage2}

rbd.vm1-1.5 @ storage1--> GID+storage1--> {storage1, storage2, storage3}

6、写数据时,host1可以直接写入本地的storage1,读数据时可以直接从本地storage1中的主副本读取,而不需要进行跨设备读取,极大的提高了数据读写性能。

技术点评:

本发明通过对存储组件序列中组件排序进行调整,将距离数据块位置最近的存储组件调整到主副本所在的位置,从而提高了主副本在本地的概率,以此提升数据读写性能。

分享到
关闭