分布式存储系统的接入方法和设备的制作方法
【专利摘要】本申请涉及分布式存储系统的接入方法和设备。该分布式存储系统的接入方法,其特征在于,包括:接收虚拟机的数据输入/输出请求和虚拟机的配置文件,数据输入/输出请求包括虚拟机上的存储位置信息,配置文件包括与虚拟机上的存储位置对应的存储系统信息;以及根据配置文件,通过与存储系统对应的接口将数据输入/输出请求接入到与虚拟机上的存储位置信息对应的存储系统。由此可以实现在用户态下完成分布式存储系统的接入,而无需使用内核的设备驱动,从而避免了内核设备驱动的不灵活性,并且减少了I/O请求在内核态和用户态之间切换的开销。另外,可以更简单且快捷地支持各种存储系统的接入。
【专利说明】分布式存储系统的接入方法和设备
【技术领域】
[0001] 本申请涉及云计算领域,更具体地涉及一种分布式存储系统的接入方法和设备。
【背景技术】
[0002] 这里的内容尽管是在【背景技术】标题下阐述的,但是其中也包含了本发明人的发现 和构思,所以不应被完全视为现有技术。
[0003] 随着云时代的到来,存储虚拟化技术与分布式存储技术在云计算领域中被广泛应 用,并且各种分布式虚拟存储系统(本文中简称为"分布式存储系统")应运而生。
[0004] 传统上而言,虚拟存储系统通常被挂载在物理机的某个设备(例如块设备或字符 设备)上,也就是,虚拟机配置文件中包括虚拟机磁盘位置与内核设备的对应关系。在对分 布式存储系统进行接入或访问时,即,当虚拟机发出数据输入/输出(I/O)请求以对其对应 存储系统上的数据进行输入/输出(I/O)操作时,I/O请求被映射到虚拟机配置文件中指明 的内核设备上,通过内核的设备驱动来接入对应的存储系统。如图1所示,例如针对虚拟机 磁盘的第几个扇区发出的虚拟机I/O请求到达物理机上的用户态进程,该用户态进程将包 括虚拟机磁盘扇区位置与内核设备对应关系的虚拟机配置文件以及I/O请求传送给内核 设备驱动,然后内核设备驱动调用与内核设备对应的存储系统接口将I/O请求接入到对应 的用户态存储系统。
[0005] 本发明人注意到,在这样的存储系统接入方法中,当虚拟机的数据是以文件的形 式(例如使用了诸如vhcUvmdk之类的稀疏文件格式)存在时,需要从I/O请求的用户态进程 切换到内核态的设备驱动(例如块设备驱动),然后通过内核态的设备驱动连接到用户态的 存储系统。这其中存在着一些弊端。一方面,内核态的驱动不利于维护和更新,另一方面, I/O请求在用户态与内核态之间的来回切换增大了开销。
【发明内容】
[0006] 因此,本申请的目的在于提供一种改进的分布式存储系统的接入技术,以克服上 述缺陷。
[0007] 根据本申请一个方面的实施例,提供一种分布式存储系统的接入方法,其特征在 于,包括:接收虚拟机的数据输入/输出请求和虚拟机的配置文件,所述数据输入/输出请 求包括虚拟机上的存储位置信息,所述配置文件包括与所述虚拟机上的存储位置对应的存 储系统信息;以及根据所述配置文件,通过与存储系统对应的接口将所述数据输入/输出 请求接入到与所述虚拟机上的存储位置信息对应的存储系统。
[0008] 根据本申请另一方面的实施例,提供一种分布式存储系统的接入设备,其特征在 于,包括:接收装置,用于接收虚拟机的数据输入/输出请求和虚拟机的配置文件,所述数 据输入/输出请求包括虚拟机上的存储位置信息,所述配置文件包括与所述虚拟机上的存 储位置对应的存储系统信息;以及接入装置,用于根据所述配置文件,通过与存储系统对应 的接口将所述数据输入/输出请求接入到与所述虚拟机上的存储位置信息对应的存储系 统。
[0009] 与现有技术相比,根据本申请的技术方案,可以通过用户态驱动方式将I/O请求 的用户态进程接入到对应的用户态存储系统中,实现在用户态下完成分布式存储系统的接 入,而无需使用内核的设备驱动,从而避免了由于内核态协议及驱动问题带来的内核态的 不灵活性,并且减少了 I/O请求在内核态和用户态之间切换的开销。另外,根据本申请的技 术方案,可以更简单且快捷地支持各种存储系统的接入。
【专利附图】
【附图说明】
[0010] 此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申 请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0011] 图1示出现有技术中的虚拟机I/O请求的内核设备驱动过程的示意图;
[0012] 图2示出根据本申请构思的虚拟机I/O请求的用户态存储系统驱动过程的示意 图;
[0013] 图3示出根据本申请实施例的分布式存储系统的接入方法的流程图;以及
[0014] 图4示出根据本申请实施例的分布式存储系统的接入设备的示意框图。
【具体实施方式】
[0015] 如上所述,本发明人注意到,传统上,存储系统挂载在物理机的内核设备上,在接 入存储系统时,需要通过内核的设备驱动来将I/O请求接入存储系统,在这其间进程需要 在用户态和内核态之间进行切换,所以增大了开销,并且内核态驱动的实现复杂度高,不利 于维护和更新。
[0016] 本申请的主要思想在于,不再将存储系统挂载在内核设备上,而是通过一种用户 态驱动方式,将用户态的I/O请求直接接入用户态的存储系统。更具体而言,根据本申请 的构思,将虚拟机的配置文件配置为包括虚拟机存储位置与存储系统的对应关系,即包括 与虚拟机存储位置对应的存储系统信息,由此在用户态直接接入存储系统,而不再需要转 至内核态来使用内核设备驱动接入。如图2所示,例如针对虚拟机磁盘的第几个扇区发出 的虚拟机I/O请求到达物理机上的用户态进程,该用户态进程将包括虚拟机磁盘扇区位置 与存储系统的对应关系的虚拟机配置文件以及虚拟机I/O请求传送给存储系统驱动(用户 态),然后存储系统驱动调用与相应存储系统对应的接口将I/O请求接入到对应的存储系统 (用户态)。
[0017] 为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及 相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一 部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做 出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0018] 参考图3,图3示出根据本申请实施例的分布式存储系统的接入方法的流程图。这 里需要指出的是,该方法是在用户态的存储系统驱动上实施的。
[0019] 如图3所示,在步骤S310处,接收虚拟机的数据输入/输出(I/O)请求和虚拟机 的配置文件,所述数据输入/输出请求包括虚拟机上的存储位置信息,所述配置文件包括 与所述虚拟机上的存储位置对应的存储系统信息。
[0020] 具体而言,例如当虚拟机发出数据I/O请求以对其磁盘上某扇区进行数据输入/ 输出操作时,该请求首先通过各种虚拟设备的映射和处理到达物理机上的某个用户态进 程,该用户态进程将收到的该请求发送给存储系统驱动。也就是,本申请中的用户态存储系 统驱动可以从用户态进程接收该数据I/O请求。
[0021] 根据本申请的一个实施例,该I/O请求可以包括虚拟机上的存储位置信息,例如 可以为扇区信息。例如,当虚拟机发出数据读请求时,该请求中可以包括虚拟机上的存储位 置信息。更进一步而言,该I/O请求还可以包括数据信息。例如,当虚拟机发出数据写请求 时,该请求中可以包括虚拟机上的存储位置信息和想要写入的数据信息。
[0022] 另外,用户态进程可以将虚拟机的配置文件也传送给用户态存储系统驱动。也就 是,本申请中的用户态存储系统驱动还可以从用户态进程接收虚拟机的配置文件。该配置 文件包括虚拟机上的存储位置与存储系统的对应关系,即,可以包括与虚拟机上的存储位 置对应的存储系统信息。
[0023] 在一个实施例中,所述存储系统信息可以至少包括以下信息中的至少一种:存储 系统类型信息、设备标识信息、数据大小信息、数据的母盘信息。
[0024] 更具体而言,存储系统类型信息表明存储系统的类型。用户态存储系统驱动可以 根据存储系统的类型确定接入该存储系统的接口。
[0025] 设备标识信息表明存储系统中的存储设备的唯一标识。
[0026] 数据大小信息表明存储系统中存储的数据的大小。
[0027] 数据的母盘信息表明存储系统中存储的数据的母盘。换言之,相应数据存储在母 盘中,通过查看母盘可以获取该数据。
[0028] 这里需要指出的是,除了上述列出的信息之外,存储系统信息还可以包括其它任 意表明存储系统特征的合适信息。
[0029] 由此可见,在虚拟机的配置文件中,实际上包括与虚拟机上的某个存储位置对应 的某个存储系统中的某个存储设备的信息以及数据信息。
[0030] 接下来,在步骤S320处,根据配置文件,通过与存储系统对应的接口将数据输入/ 输出请求接入到与虚拟机上的存储位置信息对应的存储系统。
[0031] 具体而言,用户态存储系统驱动根据从用户态进程接收到的虚拟机配置文件中的 存储系统信息,可以获知I/O请求想要接入的存储系统,从而可以通过对应于该存储系统 的接口来将I/O请求接入该存储系统。在一个实施例中,用户态存储系统驱动可以根据存 储系统的类型来设置接口,即每一种存储系统类型对应于一个接口。例如,如果存储系统信 息表明将要接入的存储系统为类谷歌文件系统(类GFS系统),则可以通过与类GFS系统对 应的接口 1&将I/O请求接入对应存储系统。如果存储系统信息表明将要接入的存储系统 为键值存储系统,则可以通过与键值存储系统对应的接口預 2将I/O请求接入对应的存储 系统。换言之,用户态存储系统驱动实际上可以包括与各种存储系统对应的接口配置,可以 理解为是对各种存储系统接口的封装。
[0032] 进一步而言,将数据I/O请求接入到与虚拟机上的存储位置信息对应的存储系统 的步骤可以包括:根据数据I/O请求,对与虚拟机上的存储位置信息对应的存储系统进行 数据输入/输出(I/O)操作。
[0033] 根据数据I/O请求的具体类型,例如同步读/写请求或者异步读/写请求,上述数 据I/O操作可以包括同步读/写操作或异步读/写操作。
[0034] 如前面所述,本申请的存储系统可以指各种分布式虚拟存储系统。在一个实施例 中,存储系统至少可以包括类GFS系统、键值(Key-Value)存储系统中的至少一种。
[0035] 通过本申请的分布式存储系统的接入方法,可以按照用户态的存储系统驱动方 式,在用户态实现I/O请求到对应存储系统的接入,相对于现有技术而言,操作性能比内核 态高并且实现简单。更进一步而言,本申请的用户态存储系统驱动方式可以理解为实现各 个存储系统的接口的封装,由此可以将各种I/O请求直接接入其对应的存储系统。换言之, 本申请的用户态存储系统驱动方式可以为多种存储系统提供统一的存储接口,在其中不同 的存储系统的接入只需要实现对应的部分关键接口配置即可。
[0036] 下面结合上述本申请的分布式存储系统的接入方法的多个应用场景来描述上述 接入方法的其它优势。
[0037] 在一个实施例中,通过本申请的分布式存储系统的接入方法可以实现在线切换存 储系统。
[0038] 具体而言,响应于来自外部的存储系统切换命令,可以将接收到的新的数据I/O 请求接入到该存储系统切换命令中指定的存储系统。
[0039] 更具体而言,本申请的用户态存储系统驱动可以接收来自外部(例如来自用户设 备或外部控制设备)的存储系统切换命令,该存储系统切换命令可以包括想要切换到的存 储系统信息。例如该存储系统信息至少可以包括存储系统类型信息、设备标识信息、数据大 小信息、数据的母盘信息中的至少一种。
[0040] 当接收到该存储系统切换命令时,用户态存储系统驱动可以先将之前接收到的 (在队列中尚未处理的)数据I/O请求按照原有方式处理完,然后将之后接收到的新的数据 I/O请求接入到该存储系统切换命令中指定的存储系统中,从而完成存储系统的在线切换。
[0041] 在另一个实施例中,通过本申请的分布式存储系统的接入方法可以实现在线升级 存储系统。
[0042] 具体而言,与上述在线切换存储系统类似,响应于来自外部的存储系统升级命令, 可以将接收到的新的数据I/O请求接入到该存储系统升级命令中指定版本的存储系统。
[0043] 更具体而言,本申请的用户态存储系统驱动可以接收来自外部(例如来自用户设 备或外部控制设备)的存储系统升级命令,该存储系统升级命令可以包括升级后的存储系 统版本信息。例如该存储系统版本信息至少可以包括存储系统类型信息、设备标识信息、数 据大小信息、数据的母盘信息中的至少一种。
[0044] 当接收到该存储系统升级命令时,用户态存储系统驱动可以先将之前接收到的 (在队列中尚未处理的)数据I/O请求按照原有方式处理完,然后再将之后接收到的新的数 据I/O请求接入到该存储系统升级命令中指定版本的存储系统中,从而完成存储系统的在 线升级。
[0045] 在又一个实施例中,通过本申请的分布式存储系统的接入方法可以实现数据引 流。
[0046] 具体而言,响应于来自外部的数据引流命令,可以将接收到的新的数据I/O请求 接入到配置文件中指定的存储系统并接入到数据引流命令中指定的存储系统。
[0047] 更具体而言,本申请的用户态存储系统驱动可以接收来自外部(例如来自用户设 备或外部控制设备)的数据引流命令,该数据引流命令可以包括想要将数据引流到的一个 或多个存储系统的信息。例如,该存储系统信息至少可以包括存储系统类型信息、设备标识 信息、数据大小信息、数据的母盘信息中的至少一种。
[0048] 当接收到该存储系统升级命令时,用户态存储系统驱动可以先将之前接收到的 (在队列中尚未处理的)数据I/O请求按照原有方式处理完,然后再将之后接收到的新的数 据I/O请求除了接入到原存储系统(即虚拟机配置文件中指定的存储系统)中之外,还接入 到该数据引流命令中指定的存储系统中,从而达到引流的目的。
[0049] 至此,已经描述了本申请实施例的分布式存储系统的接入方法。与上述分布式存 储系统的接入方法类似,本申请还提供了分布式存储系统的接入设备。
[0050] 图4示出根据本申请实施例的分布式存储系统的接入设备400的示意框图。如图 4所示,该设备400可以包括接收装置410和接入装置420。
[0051] 具体而言,接收装置410可以用于接收虚拟机的数据I/O请求和虚拟机的配置文 件。该数据I/O请求可以包括虚拟机上的存储位置信息。该配置文件可以包括与虚拟机上 的存储位置对应的存储系统信息。
[0052] 在一个实施例中,该数据I/O请求除了虚拟机上的存储位置信息之外,还可以包 括数据信息。
[0053] 在一个实施例中,存储系统信息可以至少包括以下信息中的至少一种:存储系统 类型信息、设备标识信息、数据大小信息、数据的母盘信息。
[0054] 接入装置420可以用于根据配置文件,通过与存储系统对应的接口将数据I/O请 求接入到与虚拟机上的存储位置信息对应的存储系统。
[0055] 具体而言,接入装置420可以根据配置文件中的存储系统信息,按照数据I/O请 求,对与虚拟机上的存储位置信息对应的存储系统进行数据I/O操作。例如该数据I/O操 作可以包括同步读/写操作或异步读/写操作。
[0056] 在一个实施例中,存储系统至少可以包括类谷歌文件系统、键值存储系统中的至 少一种。
[0057] 与上面根据本申请实施例的分布式存储系统的接入方法的多个应用场景类似,根 据本申请实施例的分布式存储系统的接入设备也可以实现这些场景应用,下面进行具体描 述。
[0058] 在一个实施例中,通过本申请的分布式存储系统的接入设备400可以实现在线切 换存储系统。
[0059] 具体而言,设备400中的接收装置410可以接收来自外部(例如来自用户设备或外 部控制设备)的存储系统切换命令,该存储系统切换命令可以包括想要切换到的存储系统 信息。接入装置420可以响应于来自外部的存储系统切换命令,将接收到的新的数据I/O 请求接入到该存储系统切换命令中指定的存储系统。
[0060] 当接收到该存储系统切换命令时,设备400可以先将之前接收到的(在队列中尚 未处理的)数据I/O请求按照原有方式处理完,然后将之后接收到的新的数据I/O请求接入 到该存储系统切换命令中指定的存储系统中,从而完成存储系统的在线切换。
[0061] 在另一个实施例中,通过本申请的分布式存储系统的接入设备400可以实现在线 升级存储系统。
[0062] 具体而言,设备400中的接收装置410可以接收来自外部(例如来自用户设备或外 部控制设备)的存储系统升级命令,该存储系统升级命令可以包括升级后的存储系统版本 信息。接入装置420可以响应于来自外部的存储系统升级命令,将接收到的新的数据I/O 请求接入到该存储系统升级命令中指定版本的存储系统。
[0063] 当接收到该存储系统升级命令时,设备400可以先将之前接收到的(在队列中尚 未处理的)数据I/O请求按照原有方式处理完,然后再将之后接收到的新的数据I/O请求接 入到该存储系统升级命令中指定版本的存储系统中,从而完成存储系统的在线升级。
[0064] 在又一个实施例中,通过本申请的分布式存储系统的接入设备400可以实现数据 引流。
[0065] 具体而言,设备400中的接收装置410可以接收来自外部(例如来自用户设备或外 部控制设备)的数据引流命令,该数据引流命令可以包括想要将数据引流到的一个或多个 存储系统的信息。接入装置420可以响应于来自外部的数据引流命令,将接收到的新的数 据I/O请求接入到配置文件中指定的存储系统并接入到数据引流命令中指定的存储系统。 [0066] 当接收到该存储系统升级命令时,设备400可以先将之前接收到的(在队列中尚 未处理的)数据I/O请求按照原有方式处理完,然后再将之后接收到的新的数据I/O请求除 了接入到原存储系统(即虚拟机配置文件中指定的存储系统)中之外,还接入到该数据引流 命令中指定的存储系统中,从而达到引流的目的。
[0067] 至此,已经描述了本申请实施例的分布式存储系统的接入设备。
[0068] 以上描述的分布式存储系统的接入设备与之前描述的分布式存储系统的接入方 法的处理是对应的,因此,关于更详细的技术细节,可以参见之前描述的分布式存储系统的 接入方法,这里不再赘述。
[0069] 本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。 因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的 形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存 储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形 式。
[0070] 以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员 来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同 替换、改进等,均应包含在本申请的权利要求范围之内。
【权利要求】
1. 一种分布式存储系统的接入方法,其特征在于,包括: 接收虚拟机的数据输入/输出请求和虚拟机的配置文件,所述数据输入/输出请求包 括虚拟机上的存储位置信息,所述配置文件包括与所述虚拟机上的存储位置对应的存储系 统信息;以及 根据所述配置文件,通过与存储系统对应的接口将所述数据输入/输出请求接入到与 所述虚拟机上的存储位置信息对应的存储系统。
2. 根据权利要求1所述的接入方法,其特征在于,所述存储系统信息至少包括以下信 息中的至少一种:存储系统类型信息、设备标识信息、数据大小信息、数据的母盘信息。
3. 根据权利要求1所述的接入方法,其特征在于,所述将所述数据输入/输出请求接入 到与所述虚拟机上的存储位置信息对应的存储系统的步骤包括: 根据所述数据输入/输出请求,对与所述虚拟机上的存储位置信息对应的存储系统进 行数据输入/输出操作。
4. 根据权利要求3所述的接入方法,其特征在于,所述数据输入/输出操作包括同步读 /写操作或异步读/写操作。
5. 根据权利要求1-4中任一项所述的接入方法,其特征在于,所述数据输入/输出请求 还包括数据信息。
6. 根据权利要求1-4中任一项所述的接入方法,其特征在于,所述存储系统至少包括 类谷歌文件系统、键值存储系统中的至少一种。
7. 根据权利要求1所述的接入方法,其特征在于,还包括: 响应于来自外部的存储系统切换命令,将接收到的新的数据输入/输出请求接入到所 述存储系统切换命令中指定的存储系统。
8. 根据权利要求1所述的接入方法,其特征在于,还包括: 响应于来自外部的存储系统升级命令,将接收到的新的数据输入/输出请求接入到所 述存储系统升级命令中指定版本的存储系统。
9. 根据权利要求1所述的接入方法,其特征在于,还包括: 响应于来自外部的数据引流命令,将接收到的新的数据输入/输出请求接入到所述配 置文件中指定的存储系统并接入到所述数据引流命令中指定的存储系统。
10. -种分布式存储系统的接入设备,其特征在于,包括: 接收装置,用于接收虚拟机的数据输入/输出请求和虚拟机的配置文件,所述数据输 入/输出请求包括虚拟机上的存储位置信息,所述配置文件包括与所述虚拟机上的存储位 置对应的存储系统信息;以及 接入装置,用于根据所述配置文件,通过与存储系统对应的接口将所述数据输入/输 出请求接入到与所述虚拟机上的存储位置信息对应的存储系统。
11. 根据权利要求10所述的接入设备,其特征在于,所述存储系统信息至少包括以下 信息中的至少一种:存储系统类型信息、设备标识信息、数据大小信息、数据的母盘信息。
12. 根据权利要求10所述的接入设备,其特征在于,所述将所述数据输入/输出请求接 入到与所述虚拟机上的存储位置信息对应的存储系统的步骤包括: 根据所述数据输入/输出请求,对与所述虚拟机上的存储位置信息对应的存储系统进 行数据输入/输出操作。
13. 根据权利要求12所述的接入设备,其特征在于,所述数据输入/输出操作包括同步 读/写操作或异步读/写操作。
14. 根据权利要求10-13中任一项所述的接入设备,其特征在于,所述数据输入/输出 请求还包括数据信息。
15. 根据权利要求10-13中任一项所述的接入设备,其特征在于,所述存储系统至少包 括类谷歌文件系统、键值存储系统中的至少一种。
16. 根据权利要求10所述的接入设备,其特征在于,所述接入装置还用于响应于来自 外部的存储系统切换命令,将接收到的新的数据输入/输出请求接入到所述存储系统切换 命令中指定的存储系统。
17. 根据权利要求10所述的接入设备,其特征在于,所述接入装置还用于响应于来自 外部的存储系统升级命令,将接收到的新的数据输入/输出请求接入到所述存储系统升级 命令中指定版本的存储系统。
18. 根据权利要求10所述的接入设备,其特征在于,所述接入装置还用于响应于来自 外部的数据引流命令,将接收到的新的数据输入/输出请求接入到所述配置文件中指定的 存储系统并接入到所述数据引流命令中指定的存储系统。
【文档编号】H04L29/08GK104104705SQ201310125694
【公开日】2014年10月15日 申请日期:2013年4月11日 优先权日:2013年4月11日
【发明者】万佳, 陈伟才 申请人:阿里巴巴集团控股有限公司