CN104636076A - 一种用于云存储的分布式块设备驱动方法和系统 - Google Patents
一种用于云存储的分布式块设备驱动方法和系统 Download PDFInfo
- Publication number
- CN104636076A CN104636076A CN201310574012.0A CN201310574012A CN104636076A CN 104636076 A CN104636076 A CN 104636076A CN 201310574012 A CN201310574012 A CN 201310574012A CN 104636076 A CN104636076 A CN 104636076A
- Authority
- CN
- China
- Prior art keywords
- virtual
- vsp
- virtual disk
- vbus
- disk
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000012545 processing Methods 0.000 claims abstract description 24
- 238000013507 mapping Methods 0.000 claims description 15
- 230000008569 process Effects 0.000 claims description 13
- 239000000284 extract Substances 0.000 claims description 8
- 230000005540 biological transmission Effects 0.000 claims description 7
- 230000003993 interaction Effects 0.000 claims description 6
- 238000012790 confirmation Methods 0.000 claims description 5
- 238000004891 communication Methods 0.000 claims description 4
- 230000006870 function Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种用于云存储的分布式块设备驱动方法和系统。该方法包括:将上层文件系统传来的I/O请求转换成虚拟块设备的访问报文,再调用网卡驱动将数据包发送至服务器,以访问服务器上的真实物理存储设备。本发明能够支持多种操作系统的远程加载和运行,支持多种存储设备的指令接口,并且能够高效地完成数据请求和处理。
Description
技术领域
本发明涉及云计算领域,特别是涉及一种用于云存储的分布式块设备驱动方法和系统。
背景技术
随着网络技术的发展,用户将重要的个人数据通过终端设备同步到网络存储设备中进行保存和管理。云计算作为一种新型的网络计算模式,将用户熟悉的操作系统和应用程序作为网络存储的内容提供给用户。云计算终端通过网络远程加载操作系统,采用块流方式动态执行,为用户提供跨平台的各种应用和服务。由于云计算终端本身不预设物理存储设备,因此它需要通过一种虚拟存储设备驱动来与云计算服务器上的物理存储资源进行交互,从而为用户提供一个虚拟磁盘的视图。该驱动方法需要能够支持多种操作系统的远程加载和运行,支持多种存储设备的指令接口,并且能够高效地完成数据请求和处理。
传统的驱动方法存在以下问题:
第一、传统的驱动方法如Windows驱动模型和Linux驱动模型都是面向某种特定的操作系统的设备驱动模型,且仅适用于单机环境,不能满足云计算虚拟存储系统跨平台、网络化的需求。
第二、基于虚拟机的设备模型配合网络存储协议的方式能够实现操作系统的远程启动和运行,著名的成果有Collective、ISR和OSCircular。其中,Collective和ISR是基于VMWare设备模型开发的系统,OS Circular则使用Xen-HVM设备模型。但是虚拟机运行时占用较多内存,并延长了I/O访问路径,从而对数据访问性能有较大影响。
发明内容
鉴于以上,本发明提出一种用于云存储的分布式块设备驱动方法和系统。
本发明提出一种用于云存储的分布式块设备驱动方法,包括:
终端的VBD接收来自OS的I/O请求并传送给VSP;
VSP提取I/O请求中的虚拟磁盘参数并传送给VHBA;
VHBA将该虚拟磁盘参数封装为网络数据报文并发送给服务器;
服务器的VIOP解析收到的网络数据报文,传送给PSP;
PSP根据虚拟磁盘与物理磁盘之间的映射关系,将该虚拟磁盘参数转换为物理磁盘参数,访问真实的存储设备;
VHBA将处理结果返回给对应的虚拟磁盘设备对象,激活VSP;
VBD将返回的数据拷贝到指定的内存中,完成I/O请求。
进一步,还包括:
PSP设置对VBus的监听程序,当检测到VSP进入初始化状态后,PSP将探测物理磁盘,分配并初始化块设备接口,使其中的相应字段指向物理设备的设备号,向VBus进行注册并写入物理磁盘信息,等待VBus写入虚拟磁盘信息,VBus是VSP和PSP间的一种总线抽象,用以完成虚拟磁盘接口和物理存储接口之间的交互;
VSP进入初始化状态,向VBus进行注册,写入虚拟磁盘请求报告,分配并初始化接口结构,使其中的相应字段指向虚拟磁盘设备的设备号之后进入初始化完成状态;
PSP检测到VBus中注册了新的虚拟设备后,获取VBus中虚拟设备请求报告,根据报告中的虚拟磁盘信息创建虚拟磁盘;
创建完成后,当PSP监测到VSP进入初始化完成状态时,向VBus中更新设备的物理磁盘信息,进入连接状态,准备处理从VSP传递过来的I/O请求;
VSP检测到PSP进入连接状态,建立与PSP的连接,并从VBus中读入物理磁盘信息,完成虚拟磁盘与物理磁盘之间的映射。
进一步,还包括:
操作系统遍历PCI总线上存在的所有驱动程序,加载VSP驱动;
VSP初始化具体的虚拟块设备对象,注册中断处理程序,虚拟块设备对象作为一个PCI设备将调用VHBA驱动;
VHBA初始化虚拟总线适配器控制器对象,通过PCI配置空间的信息分配硬件资源,注册中断服务,扩展出下一级虚拟接口总线结构VBus;
VHBA调用网络扫描接口,向服务器发送连接指令确认存储设备是否准备接收虚拟I/O请求;
在获得一个确认成功回复后,VHBA发送虚拟磁盘扫描指令获取设备名称、设备号和虚拟磁盘信息;
根据上述设备配置信息,VHBA向VBus注册新的虚拟磁盘设备对象,进入虚拟块设备的创建阶段。
本发明提出一种用于云存储的分布式块设备驱动系统,包括终端,该终端包括:VBD、VSP和VHBA,其中:
VBD,接收来自OS的I/O请求并传送给VSP,将返回的数据拷贝到指定的内存中,完成I/O请求;
VSP,提取I/O请求中的虚拟磁盘参数并传送给VHBA;
VHBA,将该虚拟磁盘参数封装为网络数据报文并发送给服务器,将服务器处理结果返回给对应的虚拟磁盘设备对象,激活VSP;
其中,服务器解析收到的网络数据报文,根据虚拟磁盘与物理磁盘之间的映射关系,将该虚拟磁盘参数转换为物理磁盘参数,访问真实的存储设备。
进一步,VSP进入初始化状态,向VBus进行注册,写入虚拟磁盘请求报告,分配并初始化接口结构,使其中的相应字段指向虚拟磁盘设备的设备号之后进入初始化完成状态;VSP检测到PSP进入连接状态,建立与PSP的连接,并从VBus中读入物理磁盘信息,完成虚拟磁盘与物理磁盘之间的映射。
进一步,VSP初始化具体的虚拟块设备对象,注册中断处理程序,虚拟块设备对象作为一个PCI设备将调用VHBA驱动;
VHBA初始化虚拟总线适配器控制器对象,通过PCI配置空间的信息分配硬件资源,注册中断服务,扩展出下一级虚拟接口总线结构VBus;VHBA调用网络扫描接口,向服务器发送连接指令确认存储设备是否准备接收虚拟I/O请求;在获得一个确认成功回复后,VHBA发送虚拟磁盘扫描指令获取设备名称、设备号和虚拟磁盘信息;根据上述设备配置信息,VHBA向VBus注册新的虚拟磁盘设备对象,进入虚拟块设备的创建阶段。
本发明提出一种用于云存储的分布式块设备驱动系统,包括服务器,该服务器包括VIOP和PSP,其中:
VIOP,解析从终端收到的网络数据报文,传送给PSP;
PSP,根据虚拟磁盘与物理磁盘之间的映射关系,将网络数据报文中携带的虚拟磁盘参数转换为物理磁盘参数,访问真实的存储设备;
其中,终端接收来自OS的I/O请求,提取I/O请求中的虚拟磁盘参数,将该虚拟磁盘参数封装为网络数据报文并发送给服务器,以及将服务器结果返回给对应的虚拟磁盘设备对象,完成I/O请求。
进一步,PSP设置对VBus的监听程序,当检测到VSP进入初始化状态后,PSP将探测物理磁盘,分配并初始化块设备接口,使其中的相应字段指向物理设备的设备号,向VBus进行注册并写入物理磁盘信息,等待VBus写入虚拟磁盘信息,VBus是VSP和PSP间的一种总线抽象,用以完成虚拟磁盘接口和物理存储接口之间的交互;PSP检测到VBus中注册了新的虚拟设备后,获取VBus中虚拟设备请求报告,根据报告中的虚拟磁盘信息创建虚拟磁盘;创建完成后,当PSP监测到VSP进入初始化完成状态时,向VBus中更新设备的物理磁盘信息,进入连接状态,准备处理从VSP传递过来的I/O请求。
本发明提出一种用于云存储的分布式块设备驱动系统,包括上述任一所述终端和上述任一所述服务器。
进一步,终端和服务器之间通过标准的通信传输协议建立数据交互通道。
本发明为云计算环境下的存储设备驱动程序描述了一个开放的架构。该架构独立于特定的操作系统、硬件平台以及系统I/O总线,能够满足云计算虚拟存储系统跨平台、网络化的需求。
本发明能够支持多种操作系统的远程加载和运行,支持多种存储设备的指令接口,并且能够高效地完成数据请求和处理。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1所示为本发明云计算环境下的设备驱动方法与传统设备驱动方法的比较示意图。
图2所示为本发明一实施例中的分布式块设备驱动系统的架构示意图。
图3所示为本发明一实施例中的分布式块设备驱动方法的流程示意图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置和数值不限制本发明的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本发明为云计算环境下的存储设备驱动程序描述了一个开放的架构。该架构独立于特定的操作系统、硬件平台以及系统I/O总线,如图1所示为本发明云计算环境下的设备驱动方法与传统设备驱动方法的比较示意图。
图1中箭头左侧是传统的设备驱动方法,传统的驱动方法不需要服务器,只驱动本地的磁盘。传统方法面向特定操作系统,且基于单机系统。存储设备驱动在执行操作系统内核初始化过程中被加载,此后,应用程序运行时产生的I/O请求都由该驱动去访问本地磁盘来完成。图1中箭头右侧是本发明的驱动方法。其中,左侧是终端,右侧是服务器。本发明独立于特定的操作系统、硬件平台以及系统总线,本发明将驱动扩展至网络环境。
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
图2所示为本发明一实施例中的分布式块设备驱动系统的架构示意图。该系统包括终端和服务器。其中,终端包括前端模块,服务器包括后端模块。
前端模块和后端模块均以内核态的驱动程序分别加载入终端和服务器的操作系统中,两者具有不同的结构和功能。根据功能层次的不同,前端模块和后端模块分别建立了各自的驱动堆栈。下面将结合附图,对前端模块和后端模块分别进行说明。
1.前端模块驱动栈
前端模块负责获取上层文件系统传来的I/O请求,将请求转换成虚拟块设备的访问报文,再调用网卡驱动将数据包发送至服务器端。前端模块驱动协议栈在终端的内核态运行,按功能结构分为3个部分。
(1)虚拟块设备驱动层(virtual block device,VBD)。
VBD的主要任务是获取来自操作系统I/O子系统外部的请求,并将其转换成可行的虚拟块设备访问请求,向下传送给中层驱动,即传送给VSP,以及将VSP返回的数据拷贝到指定的内存中,完成I/O请求。VBD驱动向上提供一个虚拟的块设备接口,具有块设备的一切属性,具体可表现为虚拟磁盘类设备、虚拟磁带类设备、虚拟光驱类设备等。为满足系统的开放性要求,VBD组件还为操作系统提供符合相关标准的PnP接口、设备电源管理接口和I/O数据访问接口。PnP接口提供虚拟存储设备实体的启动、配置、停止、删除等功能。设备电源管理接口将虚拟存储设备的电源信号传递至服务器,由服务器提供电源管理策略,终端再根据服务器返回的结果设置相应的电源状态。在I/O数据接口方面,VBD对通用的数据交互接口ATA和SCSI提供全面支持。
(2)虚拟存储接口驱动层(virtual storage port,VSP)。
VSP主要实现前端模块的各种功能,包括总线扫描、错误恢复、命令排队、与内核通信以及其他各种初始化功能。它从VBD接收I/O请求,提取I/O请求中的虚拟磁盘参数并传送给下层即VHBA。直到I/O请求处理完成,VSP再将处理结果返还至VBD。VSP还执行错误处理如超时或指令错误等。因此,VSP是虚拟设备接口的总线层驱动,为上下层驱动提供统一接口并进行总线扫描,完成设备枚举、数据传输和错误处理。
(3)虚拟总线适配器驱动层(virtual host bus adaptor,VHBA)。
VHBA采用适合的网络传输协议实现虚拟接口总线结构VBus,并通过与服务器交互,完成前端模块和后端模块间状态、数据、命令和消息的传送。VHBA是虚拟控制器的驱动,向下与具体的硬件适配器相关。例如,它能够调用网卡驱动向服务器端发送I/O请求报文。即,VHBA将虚拟磁盘参数封装为网络数据报文并发送给服务器,将服务器处理结果返回给对应的虚拟磁盘设备对象,激活VSP。
2.后端模块驱动栈
后端模块主要负责处理来自多个终端的前端模块的虚拟I/O请求,解析其中的访问信息,依据请求类型分别进行排队、调度,构造真实块设备访问指令,并传递给物理设备进行处理,最后将组织好的数据发送回相应的前端模块。后端模块驱动位于服务端的内核态,按功能结构分为2个层次。
(1)虚拟I/O处理驱动层(virtual I/O processor,VIOP)。
VIOP对来自前端模块的虚拟I/O请求进行解析、分类、排队和调度,将其中的物理设备访问指令传送给PSP层进行处理。VIOP将来自PSP层的数据或响应等内容进行封装,并通过网络传送给对应的前端模块。服务器端传输协议的功能在VIOP内完成。
(2)物理存储接口驱动层(physical storage port,PSP)。
PSP与网络传输无关,主要处理来自VIOP设备驱动层的物理设备访问指令。PSP根据虚拟磁盘与物理磁盘之间的映射关系,将该虚拟磁盘参数转换为物理磁盘参数,访问真实的存储设备。它可以将接收到的块接口访问指令根据接口类别进行分类、聚合后,调用与之接口类型相对应的物理存储设备驱动程序进行处理。PSP还负责错误指令处理和指令状态维护。
本发明能够支持多种操作系统的远程加载和运行,支持多种存储设备的指令接口,并且能够高效地完成数据请求和处理。本发明中,虚拟块设备驱动与云计算服务器上的物理存储资源进行交互,从而为用户提供一个虚拟磁盘的视图。
本发明采用基于块级的虚拟化技术,提供相应的虚拟块设备接口来处理I/O请求。驱动方法采用客户端/服务器结构,根据代码功能将驱动程序划分为前端模块和后端模块两部分。前端模块运行在云计算终端,为终端OS提供虚拟设备接口,而不需要具体硬件的代码。后端模块运行在云计算服务器,提供I/O适配器和其物理设备的接口,而不需要终端OS相关代码。两个模块间使用一个标准的通信传输协议如iSCSI或NBD,为物理上分离的2个模块间建立数据交互通道。下面将结合附图,对前端模块和后端模块的工作流程进行详细说明。
云计算终端本地不驻留操作系统,因此开机启动后需要BIOS调用PXE协议提供的服务进行操作系统内核的远程加载。OS内核被加载后,在执行内核初始化过程中加载前端模块协议栈。OS系统程序的装载和OS启动后应用程序的运行所产生的I/O请求,都由前端模块和工作在服务器中的后端模块协同工作进行处理。工作流程主要包括总线扫描、虚拟块设备创建和I/O请求处理3个过程。
总线扫描、虚拟块设备创建、I/O请求处理是顺序执行的流程,即,总线扫描为虚拟块创建做准备,虚拟块设备创建以建立虚拟磁盘和物理磁盘之间的映射,然后进行I/O请求处理时,需要基于建立的映射关系进行转换。下面将对上述三个过程分别进行详细说明。
(1)总线扫描
步骤一:在计算机系统启动过程中,操作系统扫描默认的PCI(Peripheral Component Interconnect,外部设备互连总线)根节点,遍历PCI总线上存在的所有驱动程序,加载VSP驱动。
步骤二:VSP初始化具体的虚拟块设备对象,注册中断处理程序。虚拟块设备对象作为一个PCI设备将调用VHBA驱动。
步骤三:VHBA初始化虚拟总线适配器控制器对象,通过PCI配置空间的信息分配硬件资源,注册中断服务,扩展出下一级虚拟接口总线结构VBus。VBus是VSP和PSP间的一种总线抽象,用以完成虚拟磁盘接口和物理存储接口之间的交互。
步骤四:VHBA调用网络扫描接口,向后端模块端发送连接指令确认存储设备是否准备接收虚拟I/O请求。
步骤五:在获得一个确认成功回复后,VHBA发送虚拟磁盘扫描指令获取设备名称、设备号和虚拟磁盘的配置信息(包括虚拟磁盘的个数以及各磁盘的大小等信息)。
步骤六:根据上述设备配置信息,VHBA向VBus注册新的虚拟磁盘设备对象。开始进入虚拟块设备的创建阶段。
(2)虚拟块设备创建
VSP和PSP通过底层提供的VBus总线抽象进行通信和协商,两者协同工作创建虚拟块设备,流程如下:
步骤一:PSP首先设置对VBus的监听程序,当检测到VSP进入初始化状态后,PSP将探测物理磁盘,分配并初始化块设备接口等结构,使其中的相应字段指向物理设备的设备号,向VBus进行注册并写入物理磁盘信息,等待VBus写入虚拟磁盘信息。
步骤二:VSP进入初始化状态,向VBus进行注册,写入虚拟磁盘请求报告,分配并初始化接口结构,使其中的相应字段指向虚拟磁盘设备的设备号之后进入初始化完成状态。
步骤三:PSP监听函数检测到VBus中注册了新的虚拟设备后,获取VBus中虚拟设备请求报告,根据报告中的虚拟磁盘配置信息开始创建虚拟磁盘。
步骤四:创建完成后,当PSP监测到VSP进入初始化完成状态时,向VBus中更新设备的物理扇区数、扇区大小等信息,然后进入连接状态,准备处理从VSP传递过来的I/O请求。
步骤五:VSP检测到PSP进入连接状态,立即建立与PSP的连接,并从VBus中读入物理扇区数、扇区大小等信息,进而完成虚拟磁盘与物理磁盘间的映射关系表。根据映射关系表,VBD开始注册、分配并配置通用的磁盘对象,通知OS有新的块设备被创建。此后,OS可以像使用本地磁盘一样使用虚拟磁盘。
(3)I/O请求处理
图3所示为本发明一实施例中的分布式块设备驱动方法的流程示意图。该流程示出了I/O请求处理流程。包括以下步骤:
步骤一:VSP从VBD接收来自OS的I/O请求后,先将该请求加入访问请求队列,并采用适当的队列管理的算法(如先入先出队列和加权公平队列等),从队列中选择合适的I/O请求进行进一步处理。
步骤二:VSP每次从队列中取出一个I/O请求,也就是说当且仅当前一个I/O请求处理完成后,队列中的下一个I/O请求才会被处理。
步骤三:VSP提取I/O请求数据结构中的相关参数(包括被请求磁盘块的起始地址、块大小以及缓冲区指针),调用VHBA的读/写接口,将相关参数封装成为磁盘访问读/写指令,然后将封装为网络数据报文发送给服务端VIOP。
步骤四:VIOP解析接收到的请求报文,根据分类规则(按用户分类或I/O类型分类)对虚拟I/O请求进行分类。调度策略对于不同类别的I/O队列赋予不同的优先级,例如可为系统类的I/O请求赋予最高优先级。
步骤五:PSP将接收到的I/O请求进行聚合处理后,调用物理磁盘接口访问真实的存储设备。当服务器返回给处理结果后,VHBA将结果返回给对应的虚拟磁盘设备对象,激活VSP。
步骤六:VBD将返回的数据拷贝到指定的内存中,通知OS,完成一次I/O请求。
本发明不仅局限于云计算环境下的计算终端,还可应用在各种计算设备上,如各种应用服务器。
至此,已经详细描述了本发明。为了避免遮蔽本发明的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。
可能以许多方式来实现本发明的方法以及装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法以及装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。
虽然已经通过示例对本发明的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本发明的范围。本领域的技术人员应该理解,可在不脱离本发明的范围和精神的情况下,对以上实施例进行修改。本发明的范围由所附权利要求来限定。
Claims (10)
1.一种用于云存储的分布式块设备驱动方法,其特征在于:
终端的VBD接收来自OS的I/O请求并传送给VSP;
VSP提取I/O请求中的虚拟磁盘参数并传送给VHBA;
VHBA将该虚拟磁盘参数封装为网络数据报文并发送给服务器;
服务器的VIOP解析收到的网络数据报文,传送给PSP;
PSP根据虚拟磁盘与物理磁盘之间的映射关系,将该虚拟磁盘参数转换为物理磁盘参数,访问真实的存储设备;
VHBA将处理结果返回给对应的虚拟磁盘设备对象,激活VSP;
VBD将返回的数据拷贝到指定的内存中,完成I/O请求。
2.根据权利要求1所述用于云存储的分布式块设备驱动方法,其特征在于,还包括:
PSP设置对VBus的监听程序,当检测到VSP进入初始化状态后,PSP将探测物理磁盘,分配并初始化块设备接口,使其中的相应字段指向物理设备的设备号,向VBus进行注册并写入物理磁盘信息,等待VBus写入虚拟磁盘信息,VBus是VSP和PSP间的一种总线抽象,用以完成虚拟磁盘接口和物理存储接口之间的交互;
VSP进入初始化状态,向VBus进行注册,写入虚拟磁盘请求报告,分配并初始化接口结构,使其中的相应字段指向虚拟磁盘设备的设备号之后进入初始化完成状态;
PSP检测到VBus中注册了新的虚拟设备后,获取VBus中虚拟设备请求报告,根据报告中的虚拟磁盘信息创建虚拟磁盘;
创建完成后,当PSP监测到VSP进入初始化完成状态时,向VBus中更新设备的物理磁盘信息,进入连接状态,准备处理从VSP传递过来的I/O请求;
VSP检测到PSP进入连接状态,建立与PSP的连接,并从VBus中读入物理磁盘信息,完成虚拟磁盘与物理磁盘之间的映射。
3.根据权利要求1或2所述用于云存储的分布式块设备驱动方法,其特征在于,还包括:
操作系统遍历PCI总线上存在的所有驱动程序,加载VSP驱动;
VSP初始化具体的虚拟块设备对象,注册中断处理程序,虚拟块设备对象作为一个PCI设备将调用VHBA驱动;
VHBA初始化虚拟总线适配器控制器对象,通过PCI配置空间的信息分配硬件资源,注册中断服务,扩展出下一级虚拟接口总线结构VBus;
VHBA调用网络扫描接口,向服务器发送连接指令确认存储设备是否准备接收虚拟I/O请求;
在获得一个确认成功回复后,VHBA发送虚拟磁盘扫描指令获取设备名称、设备号和虚拟磁盘信息;
根据上述设备配置信息,VHBA向VBus注册新的虚拟磁盘设备对象,进入虚拟块设备的创建阶段。
4.一种用于云存储的分布式块设备驱动系统,包括终端,该终端包括:VBD、VSP和VHBA,其特征在于:
VBD,接收来自OS的I/O请求并传送给VSP,将返回的数据拷贝到指定的内存中,完成I/O请求;
VSP,提取I/O请求中的虚拟磁盘参数并传送给VHBA;
VHBA,将该虚拟磁盘参数封装为网络数据报文并发送给服务器,将服务器处理结果返回给对应的虚拟磁盘设备对象,激活VSP;
其中,服务器解析收到的网络数据报文,根据虚拟磁盘与物理磁盘之间的映射关系,将该虚拟磁盘参数转换为物理磁盘参数,访问真实的存储设备。
5.根据权利要求4所述用于云存储的分布式块设备驱动系统,其特征在于:
VSP进入初始化状态,向VBus进行注册,写入虚拟磁盘请求报告,分配并初始化接口结构,使其中的相应字段指向虚拟磁盘设备的设备号之后进入初始化完成状态;VSP检测到PSP进入连接状态,建立与PSP的连接,并从VBus中读入物理磁盘信息,完成虚拟磁盘与物理磁盘之间的映射。
6.根据权利要求5所述用于云存储的分布式块设备驱动系统,其特征在于:
VSP初始化具体的虚拟块设备对象,注册中断处理程序,虚拟块设备对象作为一个PCI设备将调用VHBA驱动;
VHBA初始化虚拟总线适配器控制器对象,通过PCI配置空间的信息分配硬件资源,注册中断服务,扩展出下一级虚拟接口总线结构VBus;VHBA调用网络扫描接口,向服务器发送连接指令确认存储设备是否准备接收虚拟I/O请求;在获得一个确认成功回复后,VHBA发送虚拟磁盘扫描指令获取设备名称、设备号和虚拟磁盘信息;根据上述设备配置信息,VHBA向VBus注册新的虚拟磁盘设备对象,进入虚拟块设备的创建阶段。
7.一种用于云存储的分布式块设备驱动系统,包括服务器,该服务器包括VIOP和PSP,其特征在于:
VIOP,解析从终端收到的网络数据报文,传送给PSP;
PSP,根据虚拟磁盘与物理磁盘之间的映射关系,将网络数据报文中携带的虚拟磁盘参数转换为物理磁盘参数,访问真实的存储设备;
其中,终端接收来自OS的I/O请求,提取I/O请求中的虚拟磁盘参数,将该虚拟磁盘参数封装为网络数据报文并发送给服务器,以及将服务器结果返回给对应的虚拟磁盘设备对象,完成I/O请求。
8.根据权利要求7所述用于云存储的分布式块设备驱动系统,其特征在于:
PSP设置对VBus的监听程序,当检测到VSP进入初始化状态后,PSP将探测物理磁盘,分配并初始化块设备接口,使其中的相应字段指向物理设备的设备号,向VBus进行注册并写入物理磁盘信息,等待VBus写入虚拟磁盘信息,VBus是VSP和PSP间的一种总线抽象,用以完成虚拟磁盘接口和物理存储接口之间的交互;PSP检测到VBus中注册了新的虚拟设备后,获取VBus中虚拟设备请求报告,根据报告中的虚拟磁盘信息创建虚拟磁盘;创建完成后,当PSP监测到VSP进入初始化完成状态时,向VBus中更新设备的物理磁盘信息,进入连接状态,准备处理从VSP传递过来的I/O请求。
9.一种用于云存储的分布式块设备驱动系统,其特征在于:包括权利要求4至6任一所述终端和权利要求7或8任一所述服务器。
10.根据权利要求9所述用于云存储的分布式块设备驱动系统,其特征在于:终端和服务器之间通过标准的通信传输协议建立数据交互通道。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310574012.0A CN104636076B (zh) | 2013-11-15 | 2013-11-15 | 一种用于云存储的分布式块设备驱动方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310574012.0A CN104636076B (zh) | 2013-11-15 | 2013-11-15 | 一种用于云存储的分布式块设备驱动方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104636076A true CN104636076A (zh) | 2015-05-20 |
CN104636076B CN104636076B (zh) | 2017-12-05 |
Family
ID=53214890
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310574012.0A Active CN104636076B (zh) | 2013-11-15 | 2013-11-15 | 一种用于云存储的分布式块设备驱动方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104636076B (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104881254A (zh) * | 2015-05-27 | 2015-09-02 | 北京百度网讯科技有限公司 | 数据存储方法和装置 |
CN105404471A (zh) * | 2015-11-03 | 2016-03-16 | 国云科技股份有限公司 | 一种分布式云存储高速缓存层实现方法 |
CN106534328A (zh) * | 2016-11-28 | 2017-03-22 | 网宿科技股份有限公司 | 节点连接方法及分布式计算系统 |
CN106557280A (zh) * | 2016-10-31 | 2017-04-05 | 北京华为数字技术有限公司 | 数据存储方法、存储阵列及主机服务器 |
CN106610789A (zh) * | 2015-10-26 | 2017-05-03 | 华为技术有限公司 | 一种数据处理方法、装置及系统 |
CN107015889A (zh) * | 2017-04-12 | 2017-08-04 | 广州市品高软件股份有限公司 | 一种基于云计算的多用户虚拟磁带库的实现方法 |
CN107025146A (zh) * | 2016-01-30 | 2017-08-08 | 华为技术有限公司 | 一种文件生成方法、装置和系统 |
CN109656675A (zh) * | 2017-10-11 | 2019-04-19 | 阿里巴巴集团控股有限公司 | 总线设备、计算机设备及实现物理主机云存储的方法 |
CN109933278A (zh) * | 2017-12-19 | 2019-06-25 | 中国电信股份有限公司 | 用于实现块设备挂载访问的方法和装置 |
CN110568996A (zh) * | 2019-09-05 | 2019-12-13 | 蒋昊坤 | 基于设备驱动程序的本地存储容量扩充系统 |
CN112860601A (zh) * | 2019-11-12 | 2021-05-28 | 深圳怡化电脑股份有限公司 | 设备驱动功能的调用方法、装置、计算机设备和系统 |
CN113672411A (zh) * | 2021-08-25 | 2021-11-19 | 烽火通信科技股份有限公司 | 一种网络设备虚拟化驱动适配层的实现方法和装置 |
CN114356421A (zh) * | 2022-01-07 | 2022-04-15 | 北京金山云网络技术有限公司 | 指令拆分方法、装置和电子设备 |
CN114356242A (zh) * | 2022-01-05 | 2022-04-15 | 河北工业职业技术学院 | 数据存储提升方法、数据存储装置及电子设备 |
TWI769696B (zh) * | 2020-02-14 | 2022-07-01 | 日商三菱電機股份有限公司 | 驅動控制裝置及驅動控制系統 |
CN114844957A (zh) * | 2022-04-27 | 2022-08-02 | 工银科技有限公司 | 链路报文转换方法、装置、设备、存储介质和程序产品 |
CN114860321A (zh) * | 2022-04-06 | 2022-08-05 | 网易(杭州)网络有限公司 | 基于树莓派的外接设备控制方法、装置、设备及介质 |
CN115062340A (zh) * | 2022-06-16 | 2022-09-16 | 北京字跳网络技术有限公司 | 设备访问方法、接口处理方法及设备 |
CN115190044A (zh) * | 2022-06-28 | 2022-10-14 | 平安银行股份有限公司 | 设备连接状态检查方法、装置、设备和存储介质 |
WO2024245069A1 (zh) * | 2023-06-01 | 2024-12-05 | 阿里云计算有限公司 | 云存储处理方法、设备、存储介质和系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1623136A (zh) * | 2002-01-09 | 2005-06-01 | 思科技术公司 | 通过虚拟包封在存储区域网络内实现存储虚拟化的方法和装置 |
CN1945537A (zh) * | 2006-07-27 | 2007-04-11 | 清华大学 | 基于存储区域网络的高速固态存储设备的实现方法 |
CN101419535A (zh) * | 2008-11-19 | 2009-04-29 | 北京航空航天大学 | 虚拟机的分布式虚拟磁盘系统 |
CN102999400A (zh) * | 2012-11-22 | 2013-03-27 | 中国电信股份有限公司云计算分公司 | 一种云存储系统数据备份方法及装置 |
US20130083693A1 (en) * | 2011-10-04 | 2013-04-04 | Hitachi, Ltd. | Configuration management method of logical topology in virtual network and management server |
-
2013
- 2013-11-15 CN CN201310574012.0A patent/CN104636076B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1623136A (zh) * | 2002-01-09 | 2005-06-01 | 思科技术公司 | 通过虚拟包封在存储区域网络内实现存储虚拟化的方法和装置 |
CN1945537A (zh) * | 2006-07-27 | 2007-04-11 | 清华大学 | 基于存储区域网络的高速固态存储设备的实现方法 |
CN101419535A (zh) * | 2008-11-19 | 2009-04-29 | 北京航空航天大学 | 虚拟机的分布式虚拟磁盘系统 |
US20130083693A1 (en) * | 2011-10-04 | 2013-04-04 | Hitachi, Ltd. | Configuration management method of logical topology in virtual network and management server |
CN102999400A (zh) * | 2012-11-22 | 2013-03-27 | 中国电信股份有限公司云计算分公司 | 一种云存储系统数据备份方法及装置 |
Cited By (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016188014A1 (zh) * | 2015-05-27 | 2016-12-01 | 北京百度网讯科技有限公司 | 数据存储方法和装置 |
US10469583B2 (en) | 2015-05-27 | 2019-11-05 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Data storage method and device |
CN104881254A (zh) * | 2015-05-27 | 2015-09-02 | 北京百度网讯科技有限公司 | 数据存储方法和装置 |
CN104881254B (zh) * | 2015-05-27 | 2018-09-07 | 北京百度网讯科技有限公司 | 数据存储方法和装置 |
CN106610789B (zh) * | 2015-10-26 | 2019-08-16 | 华为技术有限公司 | 一种数据处理方法、装置及系统 |
CN106610789A (zh) * | 2015-10-26 | 2017-05-03 | 华为技术有限公司 | 一种数据处理方法、装置及系统 |
CN105404471A (zh) * | 2015-11-03 | 2016-03-16 | 国云科技股份有限公司 | 一种分布式云存储高速缓存层实现方法 |
CN105404471B (zh) * | 2015-11-03 | 2018-06-12 | 国云科技股份有限公司 | 一种分布式云存储高速缓存层实现方法 |
CN107025146B (zh) * | 2016-01-30 | 2019-10-18 | 华为技术有限公司 | 一种文件生成方法、装置和系统 |
CN107025146A (zh) * | 2016-01-30 | 2017-08-08 | 华为技术有限公司 | 一种文件生成方法、装置和系统 |
CN106557280A (zh) * | 2016-10-31 | 2017-04-05 | 北京华为数字技术有限公司 | 数据存储方法、存储阵列及主机服务器 |
CN106557280B (zh) * | 2016-10-31 | 2019-10-15 | 北京华为数字技术有限公司 | 数据存储方法、存储阵列及主机服务器 |
WO2018094909A1 (zh) * | 2016-11-28 | 2018-05-31 | 网宿科技股份有限公司 | 节点连接方法及分布式计算系统 |
CN106534328A (zh) * | 2016-11-28 | 2017-03-22 | 网宿科技股份有限公司 | 节点连接方法及分布式计算系统 |
CN106534328B (zh) * | 2016-11-28 | 2020-01-31 | 网宿科技股份有限公司 | 节点连接方法及分布式计算系统 |
CN107015889A (zh) * | 2017-04-12 | 2017-08-04 | 广州市品高软件股份有限公司 | 一种基于云计算的多用户虚拟磁带库的实现方法 |
CN107015889B (zh) * | 2017-04-12 | 2019-11-22 | 广州市品高软件股份有限公司 | 一种基于云计算的多用户虚拟磁带库的实现方法 |
CN109656675A (zh) * | 2017-10-11 | 2019-04-19 | 阿里巴巴集团控股有限公司 | 总线设备、计算机设备及实现物理主机云存储的方法 |
CN109933278A (zh) * | 2017-12-19 | 2019-06-25 | 中国电信股份有限公司 | 用于实现块设备挂载访问的方法和装置 |
CN110568996A (zh) * | 2019-09-05 | 2019-12-13 | 蒋昊坤 | 基于设备驱动程序的本地存储容量扩充系统 |
CN112860601A (zh) * | 2019-11-12 | 2021-05-28 | 深圳怡化电脑股份有限公司 | 设备驱动功能的调用方法、装置、计算机设备和系统 |
TWI769696B (zh) * | 2020-02-14 | 2022-07-01 | 日商三菱電機股份有限公司 | 驅動控制裝置及驅動控制系統 |
CN113672411A (zh) * | 2021-08-25 | 2021-11-19 | 烽火通信科技股份有限公司 | 一种网络设备虚拟化驱动适配层的实现方法和装置 |
CN113672411B (zh) * | 2021-08-25 | 2023-08-11 | 烽火通信科技股份有限公司 | 一种网络设备虚拟化驱动适配层的实现方法和装置 |
CN114356242A (zh) * | 2022-01-05 | 2022-04-15 | 河北工业职业技术学院 | 数据存储提升方法、数据存储装置及电子设备 |
CN114356421A (zh) * | 2022-01-07 | 2022-04-15 | 北京金山云网络技术有限公司 | 指令拆分方法、装置和电子设备 |
CN114860321A (zh) * | 2022-04-06 | 2022-08-05 | 网易(杭州)网络有限公司 | 基于树莓派的外接设备控制方法、装置、设备及介质 |
CN114860321B (zh) * | 2022-04-06 | 2023-07-18 | 网易(杭州)网络有限公司 | 基于树莓派的外接设备控制方法、装置、设备及介质 |
CN114844957A (zh) * | 2022-04-27 | 2022-08-02 | 工银科技有限公司 | 链路报文转换方法、装置、设备、存储介质和程序产品 |
CN114844957B (zh) * | 2022-04-27 | 2024-03-08 | 工银科技有限公司 | 链路报文转换方法、装置、设备、存储介质和程序产品 |
CN115062340A (zh) * | 2022-06-16 | 2022-09-16 | 北京字跳网络技术有限公司 | 设备访问方法、接口处理方法及设备 |
CN115190044A (zh) * | 2022-06-28 | 2022-10-14 | 平安银行股份有限公司 | 设备连接状态检查方法、装置、设备和存储介质 |
CN115190044B (zh) * | 2022-06-28 | 2023-08-08 | 平安银行股份有限公司 | 设备连接状态检查方法、装置、设备和存储介质 |
WO2024245069A1 (zh) * | 2023-06-01 | 2024-12-05 | 阿里云计算有限公司 | 云存储处理方法、设备、存储介质和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104636076B (zh) | 2017-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104636076B (zh) | 一种用于云存储的分布式块设备驱动方法和系统 | |
US8830228B2 (en) | Techniques for enabling remote management of servers configured with graphics processors | |
US10656877B2 (en) | Virtual storage controller | |
JP6004608B2 (ja) | ホストusbアダプタを仮想化するための方法、装置、およびコンピュータ・プログラム(ホストusbアダプタの仮想化) | |
US8990800B2 (en) | System and method for increased system availability to network storage in virtualized environments | |
US7437738B2 (en) | Method, system, and program for interfacing with a network adaptor supporting a plurality of devices | |
US7971203B2 (en) | Method, apparatus and system for dynamically reassigning a physical device from one virtual machine to another | |
TWI421698B (zh) | 用以促進至少一個客體處理系統之輸入/輸出(i/o)處理之電腦程式產品、方法及系統 | |
JP6316694B2 (ja) | クラウドスケールの異種データセンタ管理インフラストラクチャ | |
CN112306650B (zh) | 虚拟机热迁移方法和通信设备 | |
US7761578B2 (en) | Communicating in a virtual environment | |
TW200522583A (en) | IP-based method and apparatus for booting computers remotely in wide-area-network environment | |
US9940148B1 (en) | In-place hypervisor updates | |
US10936529B2 (en) | System and method of configuring field programmable logic arrays | |
JP5669851B2 (ja) | 論理的にパーティション化されたシステムにおいてパーティション間の効率的なコミュニケーションを行うための装置、方法、及びコンピュータ・プログラム | |
US10346065B2 (en) | Method for performing hot-swap of a storage device in a virtualization environment | |
US9104452B2 (en) | Hybrid remote sessions | |
US10782992B2 (en) | Hypervisor conversion | |
US20070040834A1 (en) | Method and apparatus for supporting universal serial bus devices in a virtualized environment | |
CN102622245B (zh) | 一种sun4v架构下的虚拟机自动启动控制方法 | |
US20070300051A1 (en) | Out of band asset management | |
WO2022068753A1 (zh) | 服务器系统、容器设置方法及装置 | |
Zhang et al. | NVMe-over-RPMsg: A Virtual Storage Device Model Applied to Heterogeneous Multi-Core SoCs | |
JP2013045163A (ja) | コンピュータシステム、情報処理システム、仮想メディア方法、および、プログラム | |
US20230205671A1 (en) | Multipath diagnostics for kernel crash analysis via smart network interface controller |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220127 Address after: 100007 room 205-32, floor 2, building 2, No. 1 and No. 3, qinglonghutong a, Dongcheng District, Beijing Patentee after: Tianyiyun Technology Co.,Ltd. Address before: No.31, Financial Street, Xicheng District, Beijing, 100033 Patentee before: CHINA TELECOM Corp.,Ltd. |