在共享存储上实现逻辑卷动态分配的方法及系统与流程

文档序号:11147695阅读:418来源:国知局

本发明涉及云计算领域,具体是涉及一种在共享存储上实现逻辑卷动态分配的方法及系统。



背景技术:

在云计算数据中心,多台服务器之间为了实现高可用、高性能以及高可靠性,将数据保存在共享存储中。当其中一台服务器发生故障时,其他正常的服务器可以接管其在共享存储上的数据,从而做到不间断对外服务。

传统的数据共享方法有两种:

1、基于逻辑卷的数据共享。以类UNIX系统下的LVM为例,其中的精简配置功能可以做到按需分配,但只能在单机环境下使用,无法做到高可用。逻辑卷的分配往往需要提前确定要分配的大小,如果分配少了,则必须关闭正在使用的程序,待扩展空间后才能启动程序继续使用,如果分配多了,而程序有可能用不了那么多,造成空间的浪费。

2、购买支持精简配置功能的存储设备。这种存储设备可以预先分配用户要求大小的逻辑卷,但直到进行真正写入时才进行真正空间分配,而且性能很好。然而这类设备比较昂贵,同时需要对硬件设施有更多要求,增加部署和运维成本。



技术实现要素:

本发明的目的是为了克服上述背景技术的不足,提供一种在共享存储上实现逻辑卷动态分配的方法及系统,无需购买昂贵的高端存储设备,低成本、低消耗、高性能、高可用,实现存储空间的动态按需分配,能够更加有效的利用存储空间。

本发明提供一种在共享存储上实现逻辑卷动态分配的系统,应用在云计算数据中心,其特征在于,该系统包括若干服务器、共享存储设备和网络交换机,每台服务器上都安装有虚拟磁盘的驱动程序、服务程序和命令行工具,其中一台服务器为主节点,其他的服务器为从节点;

用户通过命令行工具发出创建虚拟磁盘的命令,命令行工具将该命令发送给主节点的服务程序,主节点的服务程序根据参数调用驱动程序,创建虚拟磁盘,同时在虚拟磁盘的保留空间内保存对应的配置、映射数据,然后将创建结果返回给命令行工具,命令行工具更新本地数据,并使用驱动程序在本地加载对应的虚拟磁盘;此时驱动程序仅给用户分配一个要求大小的虚拟磁盘,实际上却只分配了使用者要求大小的1%到10%的存储空间,这一点对用户是透明的,用户以为分配了全部的空间;

当用户对该虚拟磁盘进行写入时,驱动程序如果发现被写入的存储空间还没有被分配,则通知主节点的服务程序分配额外的存储空间,并更新保留空间内的映射数据,然后用户在新分配的空间上进行写入,实现存储空间的动态按需分配;

当用户对该虚拟磁盘进行读取时,驱动程序如果发现被读取的存储空间还没有被分配,则直接返回全0的数据,不进行实际的存储设备操作;

当用户读写已经实际分配存储空间时,驱动程序直接在本地进行数据块映射;

当主节点崩溃时,在从节点中任意选一个,设为新主节点,然后向其余节点上的服务程序发送新主节点的相关信息,虚拟磁盘继续正常运行,不间断对外提供服务,实现高可用。

在上述技术方案的基础上,所述驱动程序采用数组映射算法进行数据块映射。

本发明还提供一种在共享存储上实现逻辑卷动态分配的方法,应用在云计算数据中心,该方法包括以下步骤:

在所有服务器上安装虚拟磁盘的驱动程序、服务程序和命令行工具,其中一台服务器为主节点,其他的服务器为从节点;

用户通过命令行工具发出创建虚拟磁盘的命令,命令行工具将该命令发送给主节点的服务程序,主节点的服务程序根据参数调用驱动程序,创建虚拟磁盘,同时在虚拟磁盘的保留空间内保存对应的配置、映射数据,然后将创建结果返回给命令行工具,命令行工具更新本地数据,并使用驱动程序在本地加载对应的虚拟磁盘;此时驱动程序仅给用户分配一个要求大小的虚拟磁盘,实际上却只分配了使用者要求大小的1%到10%的存储空间,这一点对用户是透明的,用户以为分配了全部的空间;

当用户对该虚拟磁盘进行写入时,驱动程序如果发现被写入的存储空间还没有被分配,则通知主节点的服务程序分配额外的存储空间,并更新保留空间内的映射数据,然后用户在新分配的空间上进行写入,实现存储空间的动态按需分配;

当用户对该虚拟磁盘进行读取时,驱动程序如果发现被读取的存储空间还没有被分配,则直接返回全0的数据,不进行实际的存储设备操作;

当用户读写已经实际分配存储空间时,驱动程序直接在本地进行数据块映射;

当主节点崩溃时,在从节点中任意选一个,设为新主节点,然后向其余节点上的服务程序发送新主节点的相关信息,虚拟磁盘继续正常运行,不间断对外提供服务,实现高可用。

在上述技术方案的基础上,所述驱动程序采用数组映射算法进行数据块映射。

在上述技术方案的基础上,所述云计算数据中心有两台服务器时,其中一个是主节点M,另外一个是从节点S,他们使用同一个共享存储的一个逻辑单元号LUN为1的卷,并在其上使用逻辑卷管理软件创建一个物理卷,然后加入卷组,这种情况下,步骤S1中,在主节点M上加载驱动,并以主控模式启动服务程序,然后在从节点S上加载驱动,以主节点M的IP地址为参数,使用从属模式启动服务程序。

在上述技术方案的基础上,在任意一个节点上,使用命令行工具创建一个大小为L的虚拟磁盘D,其中需要指定主节点M的IP地址,要使用的卷组,命令行工具将对应的命令发送给主节点M的服务程序执行。

在上述技术方案的基础上,所述主节点M的服务程序使用逻辑卷管理软件在卷组上创建一个名称为“D-Base”、大小为L-Base的卷,D-Base是一个名称,L-Base是一个变量,L-Base远小于用户所要求的磁盘大小L,其中包含保留空间R和部分预先分配空间P,即L-Base=(R+P)<<L,保留空间仅用于保存虚拟磁盘头信息,数据块映射表,对用户不可见;

命令行工具调用驱动程序创建虚拟磁盘D,虚拟磁盘驱动程序加载刚才创建的D-Base卷,读取其头信息及数据块映射表,建立虚拟磁盘D到D-Base卷的映射;

驱动程序根据指定参数将磁盘D和D-Base拆分成大小相等的N个数据块,N为正整数,每个数据块都有一个唯一的序号,从0到N-1;映射表其实就是一个数组,其索引为磁盘D上的数据块序号,内容为映射到磁盘D-Base上的数据块序号;如果某个映射表项的内容为-1,则表明该数据块尚未映射到D-Base上,即该数据块尚未被分配,创建虚拟磁盘时,映射表的所有内容都是-1;同时虚拟磁盘头信息中保存当前已经分配的数据块个数U,创建虚拟磁盘时为0,最大为N。

在上述技术方案的基础上,当用户对虚拟磁盘D进行写入时,驱动程序计算出用户写入地址所对应的数据块序号X,并根据数据块序号X获取对应数据块的映射表内容,如果是-1,则表明虚拟磁盘D的第X个数据块尚未在D-Base上进行分配,于是将D-Base卷上第U个数据块分配给虚拟磁盘D的第X个数据块,同时更新映射表,U加一,U为正整数,且U小于N;另外驱动程序中还有一个内核线程定时重新计算映射表的循环冗余校验CRC校验值,并异步刷新至虚拟磁盘D中,减少存储设备写入次数,提高寿命;如果映射表不是-1,则表明该数据块已经分配,直接将D-Base卷上的数据块提供给用户。

在上述技术方案的基础上,所述驱动程序对用户的写入操作进行区分,仅当写入未分配的数据块时,才进行新的数据块分配,读取未分配的数据块时,直接返回全0的数据。

在上述技术方案的基础上,所述D-Base卷中至少预留Y个数据块供逻辑卷D使用,Y为正整数,且Y小于N;当D-Base卷中预留的数据块不足Y个时,在给虚拟磁盘D分配新数据块的同时,提前通知主节点M的服务程序使用逻辑卷管理软件给虚拟磁盘D增加容量。

与现有技术相比,本发明的优点如下:

(1)节省空间。在云计算数据中心中,多台计算机通过块存储设备共享存储。在共享的块存储设备上,用户可以通过多台计算机同时使用虚拟磁盘分配要求的存储空间,但虚拟磁盘并未立即分配全部空间,直到用户真正进行存取时,才根据特定的算法进行实际分配。本发明只有在用户初次写入时,才实际分配空间,能够有效避免空间浪费。读取未被分配的数据块时,不会分配新的数据块,直接返回全0的数据,避免不必要的空间占用,同时也避免真正的磁盘读取操作,提升了性能。映射表支持随机映射,因此允许空洞文件,不会分配那些没有被使用的块,进一步节省空间。

(2)高可用。虚拟磁盘进行实际分配的过程对用户是透明的,对用户来说一开始就全部分配完成了。虚拟磁盘在进行实际分配时,不需要关闭正在使用虚拟磁盘的程序,从而实现真正的动态按需分配。多台计算机可同时使用,在虚拟磁盘动态分配时不需要关闭使用它的程序,当其中一台计算机发生故障时可以快速转移。

(3)高性能。当用户访问已分配数据块时,由于映射表在内存中,且采用数组结构,几乎无性能损耗。对于少量较为耗时的动态数据块分配,由于采用并行预分配算法,对性能的影响也非常小。

(4)低成本。支持逻辑卷管理功能的计算机系统均可以使用本发明的方法,且不需要购买昂贵的高端存储设备,也不需要对部署环境做额外硬件要求和特殊配置,能够降低部署和运维成本。

(5)低消耗。由于使用了基于数组的映射算法,当配置数据块大小为16M时,只消耗约1M内存,就可以映射2TB容量的虚拟磁盘。虚拟磁盘通过此算法,在保证高可用、高性能、低成本、低消耗的同时,能够更加有效的利用存储空间。

(6)高可靠性。映射表设计简单高效,还使用了CRC校验和异步刷新机制,可以检测映射表的异常情况,并延长映射表保存区域的磁盘寿命,有效提高虚拟磁盘的可靠性。

具体实施方式

本发明实施例提供一种在共享存储上实现逻辑卷动态分配的系统,应用在云计算数据中心,该系统包括若干服务器、共享存储设备和网络交换机,每台服务器上都安装有虚拟磁盘的驱动程序、服务程序和命令行工具。

本发明实施例提供一种在共享存储上实现逻辑卷动态分配的方法,应用在云计算数据中心,该方法包括以下步骤:

在所有服务器上安装虚拟磁盘的驱动程序、服务程序和命令行工具,其中一台服务器为主节点,其他的服务器为从节点;

用户通过命令行工具发出创建虚拟磁盘的命令,命令行工具将该命令发送给主节点的服务程序,主节点的服务程序根据参数调用驱动程序,创建虚拟磁盘,同时在虚拟磁盘的保留空间内保存对应的配置、映射数据等,然后将创建结果返回给命令行工具,命令行工具更新本地数据,并使用驱动程序在本地加载对应的虚拟磁盘;此时驱动程序仅给用户分配一个要求大小的虚拟磁盘,然而实际上却只分配了很小的一部分存储空间,大约使用者要求大小的1%到10%,也可自由调整,这一点对用户是透明的,用户以为分配了全部的空间;

当用户对这个虚拟磁盘进行写入时,驱动程序如果发现被写入的存储空间还没有被分配,则通知主节点的服务程序分配额外的存储空间,并更新保留空间内的映射数据,然后用户在新分配的空间上进行写入,从而实现存储空间的动态按需分配;

当用户对该虚拟磁盘进行读取时,驱动程序如果发现被读取的存储空间还没有被分配,则直接返回全0的数据,不进行实际的存储设备操作;

当用户读写已经实际分配存储空间时,直接在本地进行数据块映射,由于采用简单的数组映射算法,整个过程几乎没有性能损耗;

当主节点崩溃时,在从节点中任意选一个,设为新主节点,然后向其余节点上的服务程序发送新主节点的相关信息,虚拟磁盘就可以继续正常运行,不间断对外提供服务,实现高可用。

下面结合具体实施例对本发明作进一步的详细描述。

假设云计算数据中心有两台服务器,其中一个是主节点M,另外一个是从节点S,他们使用同一个共享存储的一个LUN(Logical Unit Number,逻辑单元号)为1的卷,并在其上使用逻辑卷管理软件创建一个物理卷PV(Physical Volume,物理卷),然后加入卷组VG(Volume Group,卷组)。

这种情况下,在主节点M上加载驱动,并以主控模式启动服务程序,然后在从节点S上加载驱动,以主节点M的IP地址为参数,使用从属模式启动服务程序。

在任意一个节点上,使用命令行工具创建一个大小为L的虚拟磁盘D,其中需要指定主节点M的IP地址,要使用的卷组。命令行工具会将对应的命令发送给主节点M的服务程序执行。

主节点M的服务程序使用逻辑卷管理软件在卷组上创建一个名称为“D-Base”、大小为L-Base的卷,D-Base是一个名称,L-Base是一个变量,L-Base远小于用户所要求的磁盘大小L,其中包含保留空间R和部分预先分配空间P,即L-Base=(R+P)<<L。保留空间仅用于保存虚拟磁盘头信息,数据块映射表,对用户不可见。

命令行工具调用驱动程序创建虚拟磁盘D,虚拟磁盘驱动程序加载刚才创建的D-Base卷,读取其头信息及数据块映射表,建立虚拟磁盘D到D-Base卷的映射。

驱动程序根据指定参数将磁盘D和D-Base拆分成大小相等的N个数据块,N为正整数,每个数据块都有一个唯一的序号,从0到N-1。映射表其实就是一个数组,其索引为磁盘D上的数据块序号,内容为映射到磁盘D-Base上的数据块序号。如果某个映射表项的内容为-1,则表明该数据块尚未映射到D-Base上,也就是说该数据块尚未被分配,创建虚拟磁盘时,映射表的所有内容都是-1;同时虚拟磁盘头信息中保存当前已经分配的数据块个数U,创建虚拟磁盘时为0,最大为N。

当用户对虚拟磁盘D进行写入时,驱动程序计算出用户写入地址所对应的数据块序号X,并根据数据块序号X获取对应数据块的映射表内容,如果是-1,则表明虚拟磁盘D的第X个数据块尚未在D-Base上进行分配,于是将D-Base卷上第U个数据块分配给虚拟磁盘D的第X个数据块,同时更新映射表,U加一,U为正整数,且U小于N;另外驱动程序中还有一个内核线程定时重新计算映射表的CRC(Cyclic Redundancy Check,循环冗余校验)校验值,并异步刷新至虚拟磁盘D中,减少存储设备写入次数,提高寿命;如果映射表不是-1,则表明该数据块已经分配,直接将D-Base卷上的数据块提供给用户。

驱动程序对用户的写入操作进行区分,仅当写入未分配的数据块时,才进行新的数据块分配,读取未分配的数据块时,直接返回全0的数据。

一般情况下,D-Base卷中至少预留Y个数据块供逻辑卷D使用,Y为正整数,且Y小于N;Y设置的越大性能越好,设置的越小越节省空间,应根据实际情况调整;当D-Base卷中预留的数据块不足Y个时,在给虚拟磁盘D分配新数据块的同时,提前通知主节点M的服务程序使用逻辑卷管理软件给虚拟磁盘D增加容量,例如:Z个数据块的大小。Y和Z设置太大,会导致空间浪费;设置太小,会导致分配的次数增多或者等待的时间过长。通过给Y和Z设置合理的大小,可以减少由于D-Base卷不足而导致等待主节点M的服务程序分配的情况,提升性能。

本领域的技术人员可以对本发明实施例进行各种修改和变型,倘若这些修改和变型在本发明权利要求及其等同技术的范围之内,则这些修改和变型也在本发明的保护范围之内。

说明书中未详细描述的内容为本领域技术人员公知的现有技术。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1