专利名称:一种云环境下虚拟机数据持久化存储系统和方法
技术领域:
本发明属于数据存储和管理领域,更具体地,涉及一种云环境下虚拟机数据持久化存储系统和方法。
背景技术:
随着虚拟化技术的提出和使用,云计算技术得到了蓬勃的发展和广泛的应用。虚拟机中数据存储和管理也受到了越来越多人的重视和关注。虚拟化将物理服务器的CPU、内存、存储和网络安全隔离以提高资源的使用率并实现资源的灵活分配。IaaS平台正是通过虚拟化技术将物理资源转化为弹性的虚拟基础设施,向上层应用提供支撑,并面向用户提供基础设施服务。虚拟化技术在云计算中的应用也给虚拟机中的数据存储带来了新的问题和挑战。首先在云环境下,用户存储在虚拟机中的数据并不是持久化的,当虚拟机关闭或意外宕机后,用户保存在虚拟机中的数据将全部丢失;用户储存在虚拟机中的数据受限于虚拟机镜像的大小,不能满足用户对存储动态增长的需求;一种改进方案是使用增量镜像,但这不利于数据的管理,增量镜像中的数据可能并不全是用户所需要的;原有的解决方案中数据都是与虚拟机紧密耦合的,数据与虚拟机一一对应,用户要获取数据必须先启动指定的虚拟机,这种耦合不利于数据在虚拟机之间的传输,并且大规模的数据传输将消耗大量的时间,降低系统的可用性。
发明内容
针对现有技术的缺陷,本发明的目的在于提供一种云环境下虚拟机数据的持久化存储方法和系统,旨在解决现有云计算系统中用户数据在虚拟机关闭后不能持久化存储的问题,并且该方法数据与虚拟机不是紧密耦合的,简化了用户数据的管理。为实现上述目的,本发明提供了一种云环境下虚拟机数据的持久化存储方法,包括以下步骤:(I)主节点接收服务器的用户请求,并判断该用户请求是创建块设备,还是对块设备进行扩容,如果是创建块设备则跳转到步骤(2),如果是对块设备进行扩容则跳转到步骤(5);(2)获取所有存储节点的磁盘信息,根据用户请求选择一个存储节点,并通知该存储节点创建块设备;(3)存储节点根据主节点的信息创建并管理逻辑卷;(4)存储节点将逻辑卷注册到iSCSI中,使得该逻辑卷作为块设备服务提供给虚拟机调用;(5)主节点根据用户请求获取块设备所在的存储节点,并调用该存储节点对块设备进行扩容;(6)主节点通知虚拟机块设备服务已创建完毕,虚拟机通过iSCSI向用户提供块设备。步骤(2)包括以下子步骤:(2-1)主节点通过Thrift远程调用框架获取所有存储节点的磁盘信息,包括存储节点的磁盘剩余空间信息和磁盘IO信息;(2-2)主节点分析获取的信息,选择磁盘剩余空间大于用户所申请空间的存储节点,将这些存储节点按照磁盘IO从小到大进行排序,并选择磁盘IO最小的节点创建块设备;(2-3)主节点获取存储节点的返回信息,并判断返回信息指示创建块设备成功还是失败,若返回信息指示创建块设备成功,则过程结束,若失败,则进入步骤(2-4);(2-4)主节点将创建失败写入日志并重新选择新的存储节点,然后跳转到步骤(2-2)。步骤(4)包括以下子步骤:(4-1)存储节点将步骤(3)中创建的逻辑卷添加到iSCSI目标服务中;(4-2)根据调用者的信息生成MD5,作为用户使用逻辑卷的密码;(4-3)设置虚拟机访问块设备服务的用户名和密码;(4-4)通过iSCSI将逻辑卷作为块设备服务等待虚拟机调用。步骤(6)包括以下子步骤:(6-1)主节点获取用户指定虚拟机的信息;具体而言包括虚拟机的ip地址以及虚拟机所在服务器的ip地址;(6-2)主节点调用虚拟机中的iSCSI发起者程序发现在步骤(4-4)中的存储节点所创建的设备服务;(6-3)虚拟机根据步骤(4-2)中的用户名和信息摘要登录到块设备中。步骤(3)中存储节点通过逻辑卷管理器创建由主节点指定大小的逻辑卷。步骤(4)中的注册信息包括逻辑卷的路径,虚拟机登录该服务时所需的用户名和密码。步骤(5)中存储节点通过逻辑卷管理器向已创建的块设备中追加用户指定的磁盘空间。一种云环境下虚拟机数据的持久化存储系统,包括用户请求处理模块、存储节点磁盘信息分析模块、存储节点逻辑卷创建模块、iSCSI服务注册模块、块设备扩容模块以及虚拟机块设备挂载模块,用户请求处理模块接收服务器的用户请求,并判断该用户请求是创建块设备,还是对块设备进行扩容,如果是则调用存储节点磁盘信息分析模块,如果是对块设备进行扩容则调用块设备扩容模块,存储节点磁盘信息分析模块获取所有存储节点的磁盘信息,根据用户请求选择一个存储节点,并通知该存储节点创建块设备,存储节点逻辑卷创建模块根据主节点的信息创建并管理逻辑卷,iSCSI服务注册模块将逻辑卷注册到iSCSI中,使得该逻辑卷作为块设备服务提供给虚拟机调用,块设备扩容模块根据用户请求获取块设备所在的存储节点,并调用该存储节点对块设备进行扩容,虚拟机块设备挂载模块通知虚拟机块设备服务已创建完毕,虚拟机通过iSCSI向用户提供块设备。通过本发明所构思的以上技术方案,与现有技术相比,本发明的方法具有以下的有益效果:
1、可实现块设备存储:由于采用了步骤(3)、步骤(4)和步骤(6),本系统通过在IP层运行的SCSI指令集,将物理机的块设备挂载到虚拟机中,在用户看来新添加的存储空间就像虚拟机本地设备。用户可以在设备上构建一个文件系统,也可以当做一个原始的未格式化的块设备使用。相比于通过用户空间文件系统(FUSE)的挂载只是在系统中只是提供了用于存储的文件夹,并不是实际意义上的块设备。2、可扩展性强:由于采用了步骤(5)用户可以在需要的时候扩充块设备的空间。在这个过程中采用逻辑卷进行磁盘管理,块设备空间的扩展不会影响到设备中已有的数据。相比采用增量镜像的方式的优势在于,增量镜像只是在使用上达到写时拷贝的效果,保存用户在虚拟机磁盘中写入的数据,但是最终还是受限于虚拟机模板镜像的大小,增量只是在使用行为上不断增大所使用的磁盘空间,但是最终能够使用的磁盘空间是固定的,并不能满足用户对磁盘空间增长扩容的需求。3、松耦合:由于采用了步骤(3)本发明系统的使用解耦了虚拟机的存储资源,使得存储独立于虚拟机。用户可以将申请的块设备在不同的虚拟机之间挂载,存储资源不再与特定的虚拟机一一对应,而是作为一个独立的系统进行管理。
图1是本发明的应用环境图。图2是本发明云环境下虚拟机数据的持久化存储方法的流程图。图3是本发明方法中步骤(2)的细化流程图。图4是本发明方法中步骤(4)的细化流程图。图5是本发明方法中步骤(6)的细化流程图。图6是本发明云环境下虚拟机数据的持久化存储系统的模块框图。图7是本发明系统中存储节点磁盘信息分析模块的细化框图。图8是本发明系统中iSCSI服务注册模块的细化框图。图9是本发明系统中虚拟机块设备挂载模块的细化框图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。如图1所示,本发明是为在虚拟机环境下的用户提供存储设备。图中物理机共有n台物理机1,2,…,n,其中物理机I为主节点,物理机2至n为存储节点。主节点负责处理用户请求,根据存储节点的磁盘信息选择合适的存储节点分配块设备并管理整个请求的流程,具体的块设备操作通过Thrift远程调用完成。各个存储节点提供存储节点磁盘信息,执行设备创建、扩容操作,并通过Thrift远程调用作为服务提供给主节点。当用户向系统申请创建设备的时候,主节点利用获取的存储节点信息,选择相应的节点创建或扩容块设备并挂载到虚拟机中使用。如图2所示,本发明云环境下虚拟机数据的持久化存储方法包括以下步骤:
(I)主节点接收服务器的用户请求,并判断该用户请求是创建块设备,还是对块设备进行扩容,如果是创建块设备则跳转到步骤(2),如果是对块设备进行扩容则跳转到步骤(5);(2)获取所有存储节点的磁盘信息,根据用户请求选择一个存储节点,并通知该存储节点创建块设备;具体而言,获取存储节点的信息包括磁盘剩余空间信息和磁盘IO信息;(3)存储节点根据主节点的信息创建并管理逻辑卷;具体而言,存储节点通过逻辑卷管理器创建由主节点指定大小的逻辑卷;(4)存储节点将逻辑卷注册到iSCSI中,使得该逻辑卷作为块设备服务提供给虚拟机调用;具体而言,注册信息包括逻辑卷的路径,虚拟机登录该服务时所需的用户名和密码;(5)主节点根据用户请求获取块设备所在的存储节点,并调用该存储节点对块设备进行扩容;(6)主节点通知虚拟机块设备服务已创建完毕,虚拟机通过小型计算机系统指令接口(Internet Small Computer System Interface,简称 iSCSI)向用户提供块设备。不同系统间的通信米用Facebook的Thrift远程调用框架。如图3所示,本发明方法中步骤(2)包括以下子步骤:(2-1)主节点通过Thrift远程调用框架获取所有存储节点的磁盘信息,包括存储节点的磁盘剩余空间信息和磁盘IO信息;(2-2)主节点分析获取的信息,选择磁盘剩余空间大于用户所申请空间的存储节点,将这些存储节点按照磁盘IO从小到大进行排序,并选择磁盘IO最小的节点创建块设备;(2-3)主节点获取存储节点的返回信息,并判断返回信息指示创建块设备成功还是失败,若返回信息指示创建块设备成功,则过程结束,若失败,则进入步骤(2-4);(2-4)主节点将创建失败写入日志并重新选择新的存储节点,然后跳转到步骤(2-2)。如图4所示,本发明方法中步骤(4)包括以下子步骤:(4-1)存储节点将步骤(3)中创建的逻辑卷添加到iSCSI目标服务中;具体而言,存储节点提供给iSCSI的注册信息包括逻辑卷的路径,文件类型以及服务名称;(4-2)根据调用者的信息生成调用者信息摘要(Message digest-5,简称MD5),作为用户使用逻辑卷的密码;(4-3)设置虚拟机访问块设备服务的用户名和密码;(4-4)通过iSCSI将逻辑卷作为块设备服务等待虚拟机调用。如图5所示,本发明方法中步骤(6)包括以下子步骤:(6-1)主节点获取用户指定虚拟机的信息;具体而言包括虚拟机的ip地址以及虚拟机所在服务器的ip地址;(6-2)主节点调用虚拟机中的iSCSI发起者程序发现在步骤(4-4)中的存储节点所创建的设备服务;(6-3)虚拟机根据步骤(4-2)中的用户名和信息摘要登录到块设备中。如图6所示,本发明云环境下虚拟机数据的持久化存储系统包括用户请求处理模块1、存储节点磁盘信息分析模块2、存储节点逻辑卷创建模块3、iSCSI服务注册模块4、块设备扩容模块5、虚拟机块设备挂载模块6。用户请求处理模块I接收服务器的用户请求,并判断该用户请求是创建块设备,还是对块设备进行扩容,如果是则调用存储节点磁盘信息分析模块2,如果是对块设备进行扩容则调用块设备扩容模块5。存储节点磁盘信息分析模块2获取所有存储节点的磁盘信息,根据用户请求选择一个存储节点,并通知该存储节点创建块设备。存储节点逻辑卷创建模块3根据主节点的信息创建并管理逻辑卷。iSCSI服务注册模块4将逻辑卷注册到iSCSI中,使得该逻辑卷作为块设备服务提供给虚拟机调用。块设备扩容模块5根据用户请求获取块设备所在的存储节点,并调用该存储节点对块设备进行扩容。虚拟机块设备挂载模块6通知虚拟机块设备服务已创建完毕,虚拟机通过iSCSI向用户提供块设备。如图7所示,本发明系统中存储节点磁盘信息分析模块2包括存储节点信息获取子模块21、信息分析子模块22、设备创建远程调用子模块23、创建失败处理子模块24。存储节点信息获取子模块21通过Thrift远程调用框架获取所有存储节点的磁盘信息,包括存储节点的磁盘剩余空间信息和磁盘IO信息。信息分析子模块22分析获取的信息,首先选择磁盘剩余空间大于用户所申请空间的存储节点,主节点将这些存储节点按照磁盘IO从小到大进行排序,并选择磁盘IO最小的节点创建块设备。设备创建远程调用子模块23获取存储节点的返回信息,并判断返回信息指示创建块设备成功还是失败,若返回信息指示创建块设备成功,则过程结束,若失败,则调用创建失败处理子模块24。创建失败处理子模块24记录系统日志,并重新选择存储子节点。如图8所示,本发明系统中iSCSI服务注册模块4包括逻辑卷注册子模块41、用户摘要生成子模块42、服务密码设置子模块43、块设备服务生成子模块44。逻辑卷注册子模块41将逻辑卷添加到iSCSI (小型计算机系统指令接口)目标服务中;具体而言,存储节点提供给iSCSI的注册信息包括逻辑卷的路径,文件类型以及服务名称。用户摘要生成子模块42根据调用者的信息生成调用者信息摘要(Messagedigest-5,简称MD5),作为用户使用逻辑卷的密码。服务密码设置子模块43设置虚拟机访问块设备服务的用户名和密码。块设备服务生成子模块44通过iSCSI将逻辑卷作为块设备服务等待虚拟机调用。如图9所示,本发明系统中虚拟机块设备挂载模块6包括虚拟机信息获取子模块61、服务发现子模块62、块设备挂载子模块63 ;虚拟机信息获取子模块61获取用户指定虚拟机的信息;具体而言包括虚拟机的ip地址以及虚拟机所在服务器的ip地址。服务发现子模块62调用虚拟机中的iSCSI发起者程序发现存储节点所创建的设备服务。块设备挂载子模块63使用用户摘要生成子模块42中生成的用户名和信息摘要登录到设备中。实例:为了验证本发明方法的可行性和有效性,在真实环境下配置系统,对云环境下虚拟机数据的持久化存储进行实验。本发明的服务器基本硬件和软件配置如表I所示:
CPU内存 Cache 硬盘操作系统Xen版
权利要求
1.一种云环境下虚拟机数据的持久化存储方法,其特征在于,包括以下步骤: (1)主节点接收服务器的用户请求,并判断该用户请求是创建块设备,还是对块设备进行扩容,如果是创建块设备则跳转到步骤(2),如果是对块设备进行扩容则跳转到步骤(5); (2)获取所有存储节点的磁盘信息,根据用户请求选择一个存储节点,并通知该存储节点创建块设备; (3)存储节点根据主节点的信息创建并管理逻辑卷; (4)存储节点将逻辑卷注册到iSCSI中,使得该逻辑卷作为块设备服务提供给虚拟机调用; (5)主节点根据用户请求获取块设备所在的存储节点,并调用该存储节点对块设备进行扩容; (6)主节点通知虚拟机块设备服务已创建完毕,虚拟机通过iSCSI向用户提供块设备。
2.根据权利要求1所述的持久化存储方法,其特征在于,步骤(2)包括以下子步骤: (2-1)主节点通过Thrift远程调用框架获取所有存储节点的磁盘信息,包括存储节点的磁盘剩余空间信息和磁盘IO信息; (2-2)主节点分析获取的信息,选择磁盘剩余空间大于用户所申请空间的存储节点,将这些存储节点按照磁盘IO从小到大进行排序,并选择磁盘IO最小的节点创建块设备;(2-3)主节点获取存储节点的返回信息,并判断返回信息指示创建块设备成功还是失败,若返回信息指示创建块设备成功,则过程结束,若失败,则进入步骤(2-4); (2-4)主节点将创建失败写入日志并重新选择新的存储节点,然后跳转到步骤(2-2)。
3.根据权利要求1所述的持久化存储方法,其特征在于,步骤(4)包括以下子步骤: (4-1)存储节点将步骤(3)中创建的逻辑卷添加到iSCSI目标服务中; (4-2)根据调用者的信息生成MD5,作为用户使用逻辑卷的密码; (4-3)设置虚拟机访问块设备服务的用户名和密码; (4-4)通过iSCSI将逻辑卷作为块设备服务等待虚拟机调用。
4.根据权利要求1所述的持久化存储方法,其特征在于,步骤(6)包括以下子步骤: (6-1)主节点获取用户指定虚拟机的信息;具体而言包括虚拟机的ip地址以及虚拟机所在服务器的ip地址; (6-2)主节点调用虚拟机中的iSCSI发起者程序发现在步骤(4-4)中的存储节点所创建的设备服务; (6-3)虚拟机根据步骤(4-2)中的用户名和信息摘要登录到块设备中。
5.根据权利要求1所述的持久化存储方法,其特征在于,步骤(3)中存储节点通过逻辑卷管理器创建由主节点指定大小的逻辑卷。
6.根据权利要求1所述的持久化存储方法,其特征在于,步骤(4)中的注册信息包括逻辑卷的路径,虚拟机登录该服务时所需的用户名和密码。
7.根据权利要求1所述 的持久化存储方法,其特征在于,步骤(5)中存储节点通过逻辑卷管理器向已创建的块设备中追加用户指定的磁盘空间。
8.—种云环境下虚拟机数据的持久化存储系统,包括用户请求处理模块、存储节点磁盘信息分析模块、存储节点逻辑卷创建模块、iSCSI服务注册模块、块设备扩容模块以及虚拟机块设备挂载模块,其特征在于, 用户请求处理模块接收服务器的用户请求,并判断该用户请求是创建块设备,还是对块设备进行扩容,如果是则调用存储节点磁盘信息分析模块,如果是对块设备进行扩容则调用块设备扩容模块; 存储节点磁盘信息分析模块获取所有存储节点的磁盘信息,根据用户请求选择一个存储节点,并通知该存储节点创建块设备; 存储节点逻辑卷创建模块根据主节点的信息创建并管理逻辑卷;iSCSI服务注册模块将逻辑卷注册到iSCSI中,使得该逻辑卷作为块设备服务提供给虚拟机调用; 块设备扩容模块根据用户请求获取块设备所在的存储节点,并调用该存储节点对块设备进行扩容; 虚拟机块设备挂载模块通知虚拟机块设备服务已创建完毕,虚拟机通过iSCSI向用户提供块设 备。
全文摘要
本发明公开了一种云环境下虚拟机数据的持久化存储方法,包括(1)主节点接收服务器的用户请求,并判断该用户请求是创建块设备,还是对块设备进行扩容,如果是创建块设备则跳转到步骤(2),如果是对块设备进行扩容则跳转到步骤(5);(2)获取所有存储节点的磁盘信息,根据用户请求选择一个存储节点,并通知该存储节点创建块设备;(3)存储节点根据主节点的信息创建并管理逻辑卷;(4)存储节点将逻辑卷注册到iSCSI中,使得该逻辑卷作为块设备服务提供给虚拟机调用;(5)主节点根据用户请求获取块设备所在的存储节点,并调用该存储节点对块设备进行扩容。本发明解决了现有云计算系统中用户数据在虚拟机关闭后不能持久化存储的问题。
文档编号G06F9/455GK103118073SQ201310005800
公开日2013年5月22日 申请日期2013年1月8日 优先权日2013年1月8日
发明者吴松, 金海 , 石宣化, 陈辉 申请人:华中科技大学