CN107209681B - 一种存储设备访问方法、装置和系统 - Google Patents

一种存储设备访问方法、装置和系统 Download PDF

Info

Publication number
CN107209681B
CN107209681B CN201580002150.9A CN201580002150A CN107209681B CN 107209681 B CN107209681 B CN 107209681B CN 201580002150 A CN201580002150 A CN 201580002150A CN 107209681 B CN107209681 B CN 107209681B
Authority
CN
China
Prior art keywords
virtual
storage device
access
virtual machine
adapter
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.)
Active
Application number
CN201580002150.9A
Other languages
English (en)
Other versions
CN107209681A (zh
Inventor
李浪波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202010517281.3A priority Critical patent/CN111831588A/zh
Publication of CN107209681A publication Critical patent/CN107209681A/zh
Application granted granted Critical
Publication of CN107209681B publication Critical patent/CN107209681B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Abstract

本发明实施例提供了一种存储设备访问方法、装置和系统,用于虚拟机对存储设备的访问操作。该方法包括:I/O适配器获取到来自虚拟机的访问请求,访问请求中携带待访问的存储区域的虚拟地址信息,根据该访问请求生成访问指令,访问指令中携带该虚拟地址信息和该虚拟机的虚拟通道的标识,虚拟通道与虚拟机一一对应,用于连接对应的虚拟机与存储设备目标器,存储设备目标器用于管理对存储设备的访问操作,并将访问指令发送给存储设备目标器。从而实现了虚拟机对存储设备的直接访问,简化了存储设备的访问方法,缩减了I/O访问流程,减少了软件层对内存资源和计算资源的消耗。

Description

一种存储设备访问方法、装置和系统
技术领域
本发明实施例涉及计算机领域,尤其涉及一种存储设备访问方法、装置和系统。
背景技术
虚拟化技术起源于对分时系统的需求,主要的目标是在一台主机上运行多个操作系统,以便充分利用大型机上昂贵的计算资源。随着x86处理器的性能提升以及应用的普及,虚拟化技术的发展也开始进入x86架构领域。特别是20世纪90年代末期,虚级化软件厂商为x86平台上的虚拟化技术应用开辟了道路,提供了以虚拟机监控器(Virtual MachineMonitor,简称VMM)为中心,对个人计算机(Personal Computer,PC)服务器平台虚拟化的软件解决方案。虚拟机(Virtual Machine,简称VM)负责在一个硬件平台上虚拟多个独立的、指令集架构(instruction set architectur,简称ISA)和实际硬件相同的虚拟硬件系统,其中每个虚拟硬件系统均可运行不同的操作系统,即用户操作系统(Guest OS)。用户操作系统将通过虚拟机监控器VMM来访问实际的物理资源。
现有技术中,虚拟机对外设的访问要经过多个软件层的转换操作,对存储设备的访问操作存在机制冗余。所以,需要开发新的技术,来解决这一问题。
发明内容
有鉴于此,本发明实施例提供了一种存储设备访问方法、装置和系统,以简化虚拟机对存储设备的访问操作。
第一方面,本发明实施例提供了一种存储设备访问方法,通过在计算机系统上配置I/O适配器,从而管理运行在该计算机系统上的虚拟机对存储设备的访问操作,I/O适配器获取到来自虚拟机的携带其待访问的存储区域的虚拟地址信息的访问请求后,根据访问请求生成访问指令,并将访问指令发送给存储设备目标器。其中,访问指令中携带该虚拟地址信息和该虚拟机的虚拟通道的标识,虚拟通道用于连接虚拟机与存储设备目标器,虚拟机与虚拟通道一一对应,存储设备目标器用于管理对存储设备的访问操作。
虚拟机与虚拟通道一一对应,虚拟通道是指在数据传输过程中,使用存储传输协议,建立在实体物理介质之上的,表示虚拟机与存储设备之间的唯一连接关系的数据传输通道,虚拟通道和虚拟通道的标识是为了表征虚拟机与存储设备(存储设备目标器)的唯一连接关系,每一个虚拟机都通过唯一的虚拟通道的标识进行标识的虚拟通道与存储设备(存储设备目标器)连接。在具体实现时,虚拟通道可以有多种实现形式,例如,可以通过分时复用物理连接通道来实现。
通过I/O适配器维护虚拟机与存储设备之间的虚拟通道,在访问指令中加入虚拟机对应的虚拟通道的标识,从而实现虚拟机对存储设备的访问,简化了访问流程。
应了解,在本申请中,虚拟通道与虚拟机一一对应,一个主体与虚拟通道一一对应,则也与虚拟机一一对应,在本申请的一些描述中,“与虚拟机对应”和“与虚拟通道对应”可以相互替换,“与虚拟机关联”和“与虚拟通道关联”也可以相互替换。
结合第一方面,在第一方面第一种可能的实现方式中,I/O适配器根据访问请求生成访问指令之前,通过查询预设的第一对应关系,确定与该虚拟机对应的虚拟通道的标识,其中,第一对应关系包括每台虚拟机的标识与每个虚拟通道的标识的对应关系,第一对应关系可以提前配置,或通过I/O适配器与存储设备目标器通过协商确定。其中,对应关系的实现形式多种多样,例如,可以使用数据表的形式进行表示,也可以采用给每一个虚拟机配置一个寄存器,寄存器里保存对应的虚拟通道的标识来进行表示,本申请并不对此进行限定。
结合第一方面或第一方面以上任一种可能的实现方式,在第一方面第二种可能的实现方式中,I/O适配器配置有至少一个缓存队列,每个缓存队列与每个虚拟通道一一对应;I/O适配器获取来自虚拟机的访问请求之后,如果当前不是空闲状态,或负载较大,进一步可以将访问请求放入该虚拟机的虚拟通道对应的第一缓存队列;并在根据访问请求生成访问指令之前,从该虚拟机的虚拟通道对应的第一缓存队列中取出访问请求。
通过给每一个虚拟通道增加缓存队列,可以使I/O适配器工作更加灵活,且在负载较大的情况下不会丢失访问请求,使用类似于先进先出(First In First Out,FIFO)结构的一个缓存队列来缓存所有虚拟机的访问请求也是可选的一种实现方式,但是FIFO结构无法区分虚拟机的优先级等信息,通过给每一个虚拟通道配置一个缓存队列,对于可以合并的访问请求还可以合并处理。
结合第一方面或第一方面以上任一种可能的实现方式,在第一方面第三种可能的实现方式中,若I/O适配器获取到来自至少两个虚拟机的至少两个访问请求,I/O适配器根据访问请求生成访问指令,包括:I/O适配器根据至少两个访问请求对应的至少两个虚拟机的优先级,按照优先级顺序先生成优先级高的虚拟机对应的访问指令,再生成优先级低的虚拟机对应的访问指令。
通过给不同的虚拟机设置优先级关系,可以优先处理重要或用于服务等级高虚拟机的访问操作,从而使虚拟机对存储设备的访问操作更加灵活。
结合第一方面或第一方面以上任一种可能的实现方式,在第一方面第四种可能的实现方式中,若I/O适配器获取到来自至少两个虚拟机的至少两个访问请求,I/O适配器根据访问请求生成访问指令,包括:I/O适配器根据获取到至少两个访问请求的时间先后顺序,先生成先接收到的访问请求对应的访问指令,再生成后接收到的访问请求对应的访问指令。
根据接收到访问请求的顺序处理,可以简化系统架构,仅仅需要采用FIFO的缓存结构,不需要分别缓存不同虚拟机的访问请求。
结合第一方面或第一方面以上任一种可能的实现方式,在第一方面第五种可能的实现方式中,I/O适配器将访问指令发送给存储设备目标器之后,进一步获取来自存储设备目标器的反馈消息,反馈消息包含该访问指令的执行结果和该虚拟机的虚拟通道的标识,并根据该虚拟通道的标识确定该虚拟机,将访问指令的执行结果发送给该虚拟机。
结合第一方面或第一方面以上任一种可能的实现方式,在第一方面第六种可能的实现方式中,I/O适配器获取来自虚拟机的访问请求,包括:I/O适配器接收来自虚拟机的第一门铃通知,并从与虚拟机共用的I/O共享环中获取访问请求,访问请求由虚拟机放入该I/O共享环,第一门铃通知用于指示该I/O共享环有访问请求到达;I/O适配器将访问指令的执行结果发送给该虚拟机,包括:I/O适配器将访问请求的执行结果放入与该虚拟机共用的I/O共享环,并向该虚拟机发送第二门铃通知,第二门铃通知用于指示该I/O共享环有执行结果到达。
结合第一方面或第一方面以上任一种可能的实现方式,在第一方面第七种可能的实现方式中,虚拟机运行在与存储设备独立的计算设备上,访问指令为主机总线适配器驱动层可处理的小型计算机系统接口SCSI指令;I/O适配器将访问指令发送给存储设备目标器,包括:I/O适配器通过主机总线适配器驱动层将访问指令发送给存储设备目标器。
如果虚拟机运行在存储设备上,即一体机的应用场景下,I/O适配器和存储设备目标器可以不通过HBA驱动层进行访问指令等消息的传递。
第二方面,本发明实施例提供了一种计算机可读介质,包括计算机执行指令,当计算机的处理器执行该计算机执行指令时,该计算机执行第一方面或第一方面任一种可能的实现方式中的方法。
第三方面,本发明实施例提供了一种存储设备访问装置,包括:处理器、存储器、总线和通信接口;该存储器用于存储执行指令,该处理器与该存储器通过该总线连接,当存储设备访问装置运行时,该处理器执行该存储器存储的该执行指令,以使该装置执行第一方面或第一方面任一种可能的实现方式中的方法。
第四方面,本发明实施例提供了一种存储设备访问方法,用于管理虚拟机对存储设备的访问操作,包括:存储设备目标器获取访问指令,访问指令中携带虚拟地址信息和该虚拟机的虚拟通道的标识,虚拟通道用于连接虚拟机与存储设备目标器,虚拟机与虚拟通道一一对应,虚拟地址信息用于表示待访问的存储区域在虚拟机中的虚拟地址;存储设备目标器根据访问指令中携带的虚拟地址信息和该虚拟机的虚拟通道的标识,确定待访问的存储区域在存储设备中的物理地址;存储设备目标器根据访问指令和待访问的存储区域在存储设备中的物理地址,对待访问的存储区域进行操作。
通过虚拟通道的配置,可以使存储设备目标器能够识别出不同的虚拟机,因为虚拟通道表征了虚拟机与存储设备的唯一连接关系,所以即使运行在不同物理机上的虚拟机标识有重复,存储设备也可以分辨出不同物理机上的虚拟机,从而根据虚拟地址信息和该虚拟机的虚拟通道的标识唯一的确定虚拟机待访问的存储区域的物理地址。
结合第四方面,在第四方面第一种可能的实现方式中,存储设备目标器根据访问指令中携带的虚拟地址信息和该虚拟机的虚拟通道的标识,确定待访问的存储区域在存储设备中的物理地址,包括:存储设备目标器根据访问指令中携带的虚拟地址信息和该虚拟机的虚拟通道的标识,查询预设的第二对应关系,确定待访问的存储区域在存储设备中的物理地址,其中,第二对应关系包括每个虚拟通道的标识与为每个虚拟通道分配的存储区域的物理地址的对应关系。
此处的第二对应关系的实现形式多种多样,可以使用数据表的形式进行表示,也可以采用给每一个虚拟机配置一个寄存器,寄存器里保存对应的虚拟通道的标识来进行表示,本申请并不对此进行限定。
结合第四方面或第四方面以上任一种可能的实现方式,在第四方面第二种可能的实现方式中,存储设备目标器配置有至少一个缓存队列,每个缓存队列与每个虚拟通道一一对应;存储设备目标器获取访问指令之后,进一步包括:存储设备目标器将访问指令放入该虚拟机的虚拟通道对应的第二缓存队列;存储设备目标器确定待访问的存储区域在存储设备中的物理地址之前,进一步包括:存储设备目标器从该虚拟机的虚拟通道对应的第二缓存队列中取出访问指令。
通过给每一个虚拟通道配置对应的缓存队列,可以使存储设备目标器的工作方式更加灵活,能够针对性的应对某一些虚拟机访问量突发的状况,且可以根据需要,优先的处理某一些虚拟机的访问请求,对于可以合并的访问请求还可以合并处理。
可选的,存储设备目标器的缓存队列也可以采用FIFO结构。
结合第四方面或第四方面以上任一种可能的实现方式,在第四方面第三种可能的实现方式中,若存储设备目标器获取到来自至少两个虚拟机的至少两个访问指令,存储设备目标器确定待访问的存储区域在存储设备中的物理地址,包括:存储设备目标器根据该至少两个访问指令对应的至少两个虚拟机的优先级,按照优先级顺序先确定优先级高的虚拟机的待访问的存储区域在存储设备中的物理地址,再确定优先级低的虚拟机的待访问的存储区域在存储设备中的物理地址。
通过给不同的虚拟通道(虚拟机)设置优先级关系,可以使存储设备目标器优先的处理重要或用户服务等级高的虚拟机的访问请求,增加了存储设备目标器管理对存储设备访问的灵活性。优先级先后顺序可以动态的进行调整。
结合第四方面或第四方面以上任一种可能的实现方式,若存储设备目标器获取到来自至少两个虚拟机的至少两个访问指令,存储设备目标器确定待访问的存储区域在存储设备中的物理地址,包括:存储设备目标器根据获取到该至少两个访问指令的时间先后顺序,先确定先接收到的访问指令对应的待访问的存储区域在存储设备中的物理地址,再确定后接收到的访问指令对应的待访问的存储区域在存储设备中的物理地址。
采用接收到访问指令的时间先后顺序对访问指令进行处理,可以简化存储设备的系统架构,仅仅采用FIFO的缓存结构即可以满足需求。
结合第四方面或第四方面以上任一种可能的实现方式,在第四方面第五种可能的实现方式中,存储设备目标器根据访问指令和待访问的存储区域在存储设备中的物理地址,对待访问的存储区域进行操作之后,进一步包括:存储设备目标器返回反馈消息,所述反馈消息包含访问指令的执行结果和该虚拟机的虚拟通道的标识。
第五方面,本发明实施例提供了一种计算机可读介质,包括计算机执行指令,当计算机的处理器执行该计算机执行指令时,该计算机执行第四方面或第四方面任一种可能的实现方式中的方法。
第六方面,本发明实施例提供了一种存储设备访问装置,包括:处理器、存储器、总线和通信接口;该存储器用于存储执行指令,该处理器与该存储器通过该总线连接,当存储设备访问装置运行时,该处理器执行该存储器存储的该执行指令,以使该装置执行第四方面或第四方面任一种可能的实现方式中的方法。
第七方面,本发明实施例提供了一种存储设备访问装置,用于管理运行在计算机系统上的虚拟机对存储设备的访问操作,包括:获取单元,用于获取获取来自虚拟机的访问请求,访问请求中携带待访问的存储区域的虚拟地址信息;生成单元,用于根据访问请求生成访问指令,访问指令中携带虚拟地址信息和该虚拟机的虚拟通道的标识,该虚拟通道用于连接该虚拟机与存储设备目标器,虚拟机与虚拟通道一一对应,存储设备目标器用于管理对存储设备的访问操作;发送单元,用于将访问指令发送给存储设备目标器。
结合第七方面,在第七方面第一种可能的实现方式中,生成单元根据访问请求生成访问指令之前,还用于:根据该虚拟机的标识查询预设的第一对应关系,确定虚拟通道的标识,其中,第一对应关系包括每台虚拟机的标识与每个虚拟通道的标识的对应关系。
结合第七方面或第七方面以上任一种可能的实现方式,在第七方面第二种可能的实现方式中,该装置配置有至少一个缓存队列,每个缓存队列与每个虚拟通道一一对应;获取单元获取来自该虚拟机的访问请求之后,还用于:将访问请求放入该虚拟机的虚拟通道对应的第一缓存队列;生成单元根据访问请求生成访问指令之前,还用于:从该虚拟机的虚拟通道对应的第一缓存队列中取出访问请求。
结合第七方面或第七方面以上任一种可能的实现方式,在第七方面第三种可能的实现方式中,若获取单元获取到来自至少两个虚拟机的至少两个访问请求,生成单元用于根据访问请求生成访问指令,包括:生成单元用于根据该至少两个访问请求对应的至少两个虚拟机的优先级,按照优先级顺序先生成优先级高的虚拟机对应的访问指令,再生成优先级低的虚拟机对应的访问指令。
结合第七方面或第七方面以上任一种可能的实现方式,若获取单元获取到来自至少两个虚拟机的至少两个访问请求,生成单元用于根据访问请求生成访问指令,包括:生成单元用于根据获取到该至少两个访问请求的时间先后顺序,先生成先接收到的访问请求对应的访问指令,再生成后接收到的访问请求对应的访问指令。
结合第七方面或第七方面以上任一种可能的实现方式,在第七方面第五种可能的实现方式中,发送单元将访问指令发送给存储设备目标器之后,获取单元还用于:获取来自存储设备目标器的反馈消息,反馈消息包含访问指令的执行结果和该虚拟机的虚拟通道的标识;发送单元还用于:根据该虚拟通道的标识确定该虚拟机,并将访问指令的执行结果发送给该虚拟机。
结合第七方面或第七方面以上任一种可能的实现方式,在第七方面第六种可能的实现方式中,获取单元用于获取来自虚拟机的访问请求,包括:获取单元用于接收来自该虚拟机的第一门铃通知,并从与该虚拟机共用的I/O共享环中获取访问请求,访问请求由该虚拟机放入该I/O共享环,第一门铃通知用于指示该I/O共享环有访问请求到达;发送单元用于将访问指令的执行结果发送给该虚拟机,包括:发送单元用于将访问请求的执行结果放入与该虚拟机共用的I/O共享环,并向该虚拟机发送第二门铃通知,第二门铃通知用于指示该I/O共享环有执行结果到达。
结合第七方面或第七方面以上任一种可能的实现方式,在第七方面第七种可能的实现方式中,访问指令为主机总线适配器驱动层可处理的小型计算机系统接口SCSI指令;发送单元用于将访问指令发送给存储设备目标器,包括:发送单元用于通过主机总线适配器驱动层将访问指令发送给存储设备目标器。
应理解,第七方面为第一方面的方法对应的装置实现方式,第一方面或第一方面任一种可能的实现方式中的特征描述适用于第七方面或第七方面任一种可能的实现方式,在此不再赘述。
第八方面,本发明实施例提供了一种存储设备访问装置,其特征在于,用于管理虚拟机对存储设备的访问操作,包括:获取单元,用于获取访问指令,访问指令中携带虚拟地址信息和该虚拟机的虚拟通道的标识,该虚拟通道用于连接虚拟机与该装置,虚拟机与虚拟通道一一对应,虚拟地址信息用于表示待访问的存储区域在虚拟机中的虚拟地址;确定单元,用于根据访问指令中携带的虚拟地址信息和该虚拟机的虚拟通道的标识,确定待访问的存储区域在存储设备中的物理地址;处理单元,用于根据访问指令和待访问的存储区域在存储设备中的物理地址,对待访问的存储区域进行操作。
结合第八方面,在第八方面第一种可能的实现方式中,确定单元用于根据访问指令中携带的虚拟地址信息和该虚拟机的虚拟通道的标识,确定待访问的存储区域在存储设备中的物理地址,包括:确定单元用于根据访问指令中携带的虚拟地址信息和该虚拟机的虚拟通道的标识,查询预设的第二对应关系,确定待访问的存储区域在存储设备中的物理地址,其中,第二对应关系包括每个虚拟通道的标识与为每个虚拟通道分配的存储区域的物理地址的对应关系。
结合第八方面或第八方面以上任一种可能的实现方式,在第八方面第二种可能的实现方式中,该装置配置有至少一个缓存队列,每个缓存队列与每个虚拟通道一一对应;获取单元获取访问指令之后之后,还用于:将访问指令放入该虚拟机的虚拟通道对应的第二缓存队列;确定单元确定待访问的存储区域在存储设备中的物理地址之前,还用于:从该虚拟机的虚拟通道对应的第二缓存队列中取出访问指令。
结合第八方面或第八方面以上任一种可能的实现方式,在第八方面第三种可能的实现方式中,若获取单元获取到来自至少两个虚拟机的至少两个访问指令,确定单元用于确定待访问的存储区域在存储设备中的物理地址,包括:确定单元用于根据该至少两个访问指令对应的至少两个虚拟机的优先级,按照优先级顺序先确定优先级高的虚拟机的待访问的存储区域在存储设备中的物理地址,再确定优先级低的虚拟机的待访问的存储区域在存储设备中的物理地址。
结合第八方面或第八方面以上任一种可能的实现方式,在第八方面第四种可能的实现方式中,若获取单元获取到来自至少两个虚拟机的至少两个访问指令,确定单元用于确定待访问的存储区域在存储设备中的物理地址,包括:确定单元用于根据获取单元获取到该至少两个访问指令的时间先后顺序,先确定先接收到的访问指令对应的待访问的存储区域在存储设备中的物理地址,再确定后接收到的访问指令对应的待访问的存储区域在存储设备中的物理地址。
结合第八方面或第八方面以上任一种可能的实现方式,在第八方面第五种可能的实现方式中,处理单元根据访问指令和待访问的存储区域在存储设备中的物理地址,对待访问的存储区域进行操作之后,还用于:返回反馈消息,反馈消息包含访问指令的执行结果和该虚拟机的虚拟通道的标识。
应理解,第八方面为第四方面的方法对应的装置实现方式,第四方面或第四方面任一种可能的实现方式中的特征描述适用于第八方面或第八方面任一种可能的实现方式,在此不再赘述。
第九方面,本发明实施例提供了一种存储设备访问系统,包括I/O适配器和存储设备目标器,I/O适配器用于获取来自虚拟机的访问请求,访问请求中携带待访问的存储区域的虚拟地址信息,根据访问请求生成访问指令,并将访问指令发送给存储设备目标器,访问指令中携带虚拟地址信息和该虚拟机的虚拟通道的标识,该虚拟通道用于连接该虚拟机与存储设备目标器,虚拟机与虚拟通道一一对应;存储设备目标器用于获取访问指令,根据访问指令中携带的虚拟地址信息和该虚拟通道的标识,确定该待访问的存储区域在存储设备中的物理地址,并根据访问指令和该待访问的存储区域在存储设备中的物理地址,对待访问的存储区域进行操作。
结合第九方面,I/O适配器根据访问请求生成访问指令之前,还用于:根据该虚拟机的标识查询预设的第一对应关系,确定该虚拟通道的标识,其中,该第一对应关系包括每台虚拟机的标识与每个虚拟通道的标识的对应关系。
结合第九方面或第九方面以上任一种可能的实现方式,在第九方面第二种可能的实现方式中,I/O适配器配置有至少一个缓存队列,每个缓存队列与每个虚拟通道一一对应;I/O适配器获取来自该虚拟机的访问请求之后,还用于:将访问请求放入该虚拟机的虚拟通道对应的第一缓存队列;I/O适配器根据访问请求生成访问指令之前,还用于:从该虚拟机的虚拟通道对应的第一缓存队列中取出访问请求。
结合第九方面或第九方面以上任一种可能的实现方式,在第九方面第三种可能的实现方式中,若I/O适配器获取到来自至少两个虚拟机的至少两个访问请求,I/O适配器用于根据访问请求生成访问指令,包括:I/O适配器用于根据该至少两个访问请求对应的至少两个虚拟机的优先级,按照优先级顺序先生成优先级高的虚拟机对应的访问指令,再生成优先级低的虚拟机对应的访问指令。
结合第九方面或第九方面以上任一种可能的实现方式,在第九方面第四种可能的实现方式中,若I/O适配器获取到来自至少两个虚拟机的至少两个访问请求,I/O适配器用于根据访问请求生成访问指令,包括:I/O适配器用于根据获取到该至少两个访问请求的时间先后顺序,先生成先接收到的访问请求对应的访问指令,再生成后接收到的访问请求对应的访问指令。
结合第九方面或第九方面以上任一种可能的实现方式,在第九方面第五种可能的实现方式中,I/O适配器将访问指令发送给存储设备目标器之后,还用于:获取来自存储设备目标器的反馈消息,反馈消息包含访问指令的执行结果和该虚拟机的虚拟通道的标识,并根据该虚拟通道的标识确定该虚拟机,将访问指令的执行结果发送给该虚拟机。
结合第九方面或第九方面以上任一种可能的实现方式,在第九方面第六种可能的实现方式中,I/O适配器用于获取来自虚拟机的访问请求,包括:I/O适配器用于接收来自该虚拟机的第一门铃通知,并从与该虚拟机共用的I/O共享环中获取访问请求,访问请求由该虚拟机放入该I/O共享环,该第一门铃通知用于指示该I/O共享环有访问请求到达;I/O适配器用于将访问指令的执行结果发送给该虚拟机,包括:I/O适配器用于将访问请求的执行结果放入与该虚拟机共用的I/O共享环,并向该虚拟机发送第二门铃通知,该第二门铃通知用于指示该I/O共享环有执行结果到达。
结合第九方面或第九方面以上任一种可能的实现方式,在第九方面第七种可能的实现方式中,访问指令为主机总线适配器驱动层可处理的小型计算机系统接口SCSI指令;I/O适配器用于将访问指令发送给存储设备目标器,包括:I/O适配器用于通过该主机总线适配器驱动层将访问指令发送给存储设备目标器。
结合第九方面或第九方面以上任一种可能的实现方式,在第九方面第八种可能的实现方式中,存储设备目标器用于根据访问指令中携带的虚拟地址信息和该虚拟通道的标识,确定该待访问的存储区域在存储设备中的物理地址,包括:存储设备目标器用于根据访问指令中携带的虚拟地址信息和该虚拟通道的标识,查询预设的第二对应关系,确定该待访问的存储区域在存储设备中的物理地址,其中,该第二对应关系包括每个虚拟通道的标识与为该每个虚拟通道分配的存储区域的物理地址的对应关系。
结合第九方面或第九方面以上任一种可能的实现方式,在第九方面第九种可能的实现方式中,存储设备目标器配置有至少一个缓存队列,每个缓存队列与每个虚拟通道一一对应;存储设备目标器获取访问指令之后,还用于:将访问指令放入该虚拟机的虚拟通道对应的第二缓存队列;存储设备目标器确定该待访问的存储区域在存储设备中的物理地址之前,还用于:从该虚拟机的虚拟通道对应的第二缓存队列中取出访问指令。
结合第九方面或第九方面以上任一种可能的实现方式,在第九方面第十种可能的实现方式中,若存储设备目标器获取到来自至少两个虚拟机的至少两个访问指令,存储设备目标器用于确定该待访问的存储区域在存储设备中的物理地址,包括:存储设备目标器用于根据该至少两个访问指令对应的至少两个虚拟机的优先级,按照优先级顺序先确定优先级高的虚拟机的待访问的存储区域在存储设备中的物理地址,再确定优先级低的虚拟机的待访问的存储区域在存储设备中的物理地址。
结合第九方面或第九方面以上任一种可能的实现方式,在第九方面第十一种可能的实现方式中,若存储设备目标器获取到来自至少两个虚拟机的至少两个访问指令,存储设备目标器用于确定该待访问的存储区域在存储设备中的物理地址,包括:存储设备目标器用于根据获取到该至少两个访问指令的时间先后顺序,先确定先接收到的访问指令对应的待访问的存储区域在存储设备中的物理地址,再确定后接收到的访问指令对应的待访问的存储区域在存储设备中的物理地址。
结合第九方面或第九方面以上任一种可能的实现方式,在第九方面第十二种可能的实现方式中,存储设备目标器根据访问指令和该待访问的存储区域在存储设备中的物理地址,对待访问的存储区域进行操作之后,还用于:返回反馈消息,所述反馈消息包含访问指令的执行结果和该虚拟机的虚拟通道的标识。
应理解,第九方面为第一方面和第四方面的方法对应的系统实现方式,第一方面或第一方面任一种可能的实现方式,或第四方面或第四方面任一种可能的实现方式中的特征描述适用于第九方面或第九方面任一种可能的实现方式,在此不再赘述。
根据本申请公开的技术方案,通过在虚拟机与存储设备之间配置I/O适配器,并通过在I/O适配器与存储设备之间配置与虚拟机一一对应的虚拟通道,并在访问指令中携带对应的虚拟通道的标识,使存储设备目标器能够根据虚拟地址信息和虚拟机的虚拟通道的标识唯一的确定待访问区域的物理地址,从而实现了虚拟机对存储设备的直接访问,简化了存储设备的访问方法,缩减了I/O访问流程,减少了软件层对内存资源和计算资源的消耗。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一种虚拟化系统的结构示意图;
图2为依据本发明一实施例的存储设备访问系统的结构示意图;
图3为一种存储设备访问架构示意图;
图4为依据本发明一实施例的存储设备访问架构示意图;
图5为依据本发明一实施例的存储设备访问方法的信令图;
图6为依据本发明一实施例的存储设备访问方法的示范性流程图;
图7为依据本发明一实施例的存储设备访问方法的示范性流程图;
图8为依据本发明一实施例的存储设备访问装置的逻辑结构示意图;
图9为依据本发明一实施例的存储设备访问装置的逻辑结构示意图;
图10为依据本发明一实施例的存储设备访问装置硬件结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为一种虚拟化系统100的结构示意图,如图1所示,系统100包括:物理硬件106、虚拟机监视器104(Virtual Machine Monitor,VMM)以及运行在物理硬件上的N个虚拟机102,其中,N为大于0的正整数。
虚拟机监视器(Virtual Machine Monitor)是介于虚拟机操作系统和物理硬件之间的一个软件描述层。它负责在各个虚拟机之间进行处理器调度和内存分配等。VMM不仅抽象出虚拟机的硬件,同时还控制着各个虚拟机的执行。
VMM还可以用于管理虚拟机的创建、销毁、暂停、恢复及迁移,以及虚拟机之间的CPU调度、内存分配及设备访问等。
VMM向虚拟机提供了一个抽象层,其中包含了管理和虚拟硬件的应用程序接口(Application Programming Interface,API)。VMM向虚拟机提供了虚拟中央处理器(Virtual Central Processing Unit,简称VCPU)、虚拟存储器管理单元(MemoryManagement Unit,简称MMU)等基本的虚拟硬件,并向虚拟机提供了相应的硬件接口(安全硬件接口),以保证设备访问得以安全进行。
安全硬件接口提供直接内存访问(Direct Memory Access,简称DMA)、输入输出(Input&Output,简称I/O)、驱动程序、虚拟的外围组件互联(Peripheral ComponentInterconnect,简称PCI)地址配置、虚拟硬件中断等硬件虚拟工作。
系统100可以支持半虚拟化和全虚拟化,运行在VMM上的半虚拟化(Paravirtualized,简称PV)虚拟机上运行着被修改过内核的操作系统,或者上层操作系统安装了半虚拟化的驱动程序的系统。运行在VMM上的全虚拟化虚拟机上运行着没有修改内核且没有安装半虚拟化驱动程序的操作系统。
图2为依据本发明一实施例的存储设备访问系统200(a)和200(b)的结构示意图,如图2所示,本发明实施例的存储设备访问系统包含两种结构。
如图2(a)所示,系统200(a)包含存储设备202,以及M个计算设备204,其中每一个计算设备204上运行有图1所示的虚拟化系统100,M为大于0的正整数。
如图所示,每一个计算设备204上均运行有至少一个虚拟机,存储设备202被M个计算设备204上的虚拟机共用,计算设备204与存储设备202相互分离,计算设备204与存储设备202之间可以通过光纤或串行电缆或其他连接方式来相互连接。本发明实施例并不限定存储设备202与计算设备204之间的连接方式。
图2(a)描述了普通存储区域网络(Storage Area Networking,SAN)中计算设备204和存储设备202的应用场景,在此场景中,每个计算设备204上运行的虚拟机产生数据后,经过计算设备204的特定处理后,把有效数据存放到存储设备202的存储阵列中。
存储设备202由存储阵列组成,存储设备202的种类多种多样,包括,但不限于,RAM、ROM、EEPROM、闪存、其他的存储器技术,CD-ROM、数字通用盘、其他的光存储,磁卡带、磁带、磁盘存储、其他的磁存储设备,以及任何其他可以用来存储所需信息并可由计算设备204访问的介质。本发明实施例并不对存储设备202的实现方式进行限定。
计算设备204在其基本的配置中,通常包括至少一个处理器和存储器。存储器可以是易失性的,诸如随机访问内存(Random Access Memory,RAM),非易失性的,诸如只读存储器(Read Only Memory,ROM)、闪存,或这两者的某种组合。
这个基本的配置可以具有外加的特征和功能。例如,它可以包括外设的存储(可移动的和不可移动的),其包括但不限于,磁盘和磁带以及光盘和光带。计算机存储介质包括易失性和非易失性的,可移动的和不可移动的,在任何方法或技术中实现的用来存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的介质。
计算设备204还可以包含允许其与其他设备通信的通信信道。通信信道的介质包括但不限于:光介质、诸如有线网络和直线连接等的有线介质、诸如声音、RF、红外线和其他无线介质等的无线介质。
应了解,本发明实施例仅仅是示例性说明,计算设备204还可以包含其他功能模块,在此不再赘述。
如图2(b)所示,在本发明实施例的另外一种实现方式中,存储设备访问系统200(b)包含存储设备202和M个存储控制器206,存储控制器206上运行有图1所示的虚拟化系统100,M为大于0的正整数。
如图所示,每一个存储控制器206上均运行有至少一个虚拟机,存储设备202被M个存储控制器206上的虚拟机共用,存储控制器206与存储设备202共同组成存储一体机。在本发明实施例的一种实现方式中,存储控制器206可以对存储设备202进行热插拔。
图2(b)描述了SAN中省去计算设备后的存储设备202的应用场景,在此场景中,虚拟机直接运行在存储设备202的存储器控制器206上,虚拟机产生的数据经过存储控制器206的特定处理后,把有效数据存放到存储设备202的存储阵列中。
存储控制器206在其基本的配置中,通常包括至少一个处理器和存储器。存储器可以是易失性的,诸如随机访问内存(Random Access Memory,RAM),非易失性的,诸如只读存储器(Read Only Memory,ROM)、闪存,或这两者的某种组合。
存储控制器206还可以包含允许其与其他设备通信的通信信道。通信信道的介质包括但不限于:光介质、诸如有线网络和直线连接等的有线介质、诸如声音、RF、红外线和其他无线介质等的无线介质。
应了解,图1中的物理硬件106可以是具体计算机,也可以是存储设备202的存储控制器,或二者任意组合,且图2中系统的实现形式多种多样,可以是计算设备204与存储设备202相互分离,通过任意方式相互连接,也可以是存储控制器206与存储设备202集成在一个存储一体机中。本发明实施例并不对物理硬件106和系统200的具体实现方式进行限定。为了描述方便,在以下描述中,对计算设备204、存储控制器206或二者的任意组合,统称为物理机。
图3为一种存储设备访问架构示意图,如图3所示,以基于内核的虚拟机(Kernel-based Virtual Machine,KVM)为例进行说明,整个存储设备访问流程要经过虚拟机102、虚拟机主机目标器(Vhost target)302、块设备层(Block level)304、小型计算机系统接口中层(Small Computer System Interface level,SCSI level)306和存储设备202。
在图2的200(a)场景下,还需要经过计算设备204和存储设备202的主机总线适配器驱动(Host Bus Adaptor driver,HBA driver)。HBA driver是物理机器上的操作系统SCSI协议传输层(也称HBA驱动层),连接物理机内部总线和存储设备,作为SCSI协议的载体层,完成SCSI协议与具体协议报文之间的打包和解析,配合SCSI中层的完成错误处理,负责传输SCSI中层下发的SCSI命令。
存储设备202的存储阵列可以被划分为多个逻辑单元号(Logical Unit Number,LUN)设备,每一个LUN设备拥有一个LUN。存储设备202的LUN设备被分配给多个虚拟机使用,其中,多个虚拟机可以是运行在同一个物理上,也可以是运行在不同的物理机上,本发明实施例对此并不进行限定。
在整个系统运行的之前,首先有一个物理机和存储设备202的LUN设备配置过程,使得存储设备202的LUN设备在物理机的块设备层呈现出实体盘符。其次需要用户通过配置工具把块设备上的实体盘符分别配置给该物理机上运行的多个虚拟机,以使得在虚拟机内部呈现出虚拟盘符。为了描述方便,在本发明实施例中,虚拟机内部的盘符叫做虚拟盘符,物理机块设备层呈现的盘符叫做实体盘符。
虚拟机102内部的应用层有对存储设备202的访问需求时,虚拟机102会生成相应块读写请求(BLOCK Input and Output Request,BIO),然后你将BIO发给该虚拟机的块设备(虚拟机内的),虚拟机的块设备根据BIO生成请求Request,然后基于Requst进行合并、排序、缓存、调度,然后经过调度算法将Request发给虚拟机的SCSI中层(虚拟机内的),虚拟机的SCSI中层会生成SCSI命令发送给虚拟磁盘驱动virtio-scsi,virtio-scsi根据SCSI命令生成virtio_scsi_cmd请求,virtio_scsi_cmd请求包含SCSI命令描述符(CommandDistription Block,CBD)、数据空间描述信息和数据传输方向信息,以及其他IO属性等数据,virtio_scsi_cmd携带了块设备层(Block level)304给虚拟机102提供的虚拟盘符信息。
虚拟机的虚拟磁盘驱动virtio-scsi把virtio_scsi_cmd请求发到虚拟机的I/O共享环vring中,通过门铃机制通知Vhost target 302有新的I/O请求到达。
Vhost target 302获知门铃信号后从vring中取出virtio_scsi_cmd,并解析和处理该请求,如果不是读写命令,则直接在vhost target 302中模拟处理;如果是读写命令,则生成对应的BIO,并发给指定的块设备层304。
块设备层304根据BIO生成请求Request,然后基于Requst进行合并、排序、缓存、调度,然后经过调度算法将Request发给虚拟机的SCSI中层306。
SCSI中层306进行虚拟盘符到实体盘符的映射,并把Request重新打包成SCSI指令,发送给存储设备202。其中,SCSI指令中携带实体盘符信息。
在图2所示的200(a)的场景下,SCSI中层通过计算设备204和存储设备202的HBA驱动将SCSI指令发往存储设备202。由存储设备202实现实体盘符到存储阵列的LUN设备的映射。
图3实施例实现了虚拟机102对存储设备202的访问,但是整个访问流程要经过虚拟机102内部,vhost target302、块设备层304、SCSI中层306多层转换才能实现虚拟机102对存储设备202的访问操作。且访问请求经过了两次块设备的缓存、合并、排序、调度、SCSI命令转换,一次在虚拟机内,一次在物理机内。
图4为依据本发明一实施例的存储设备访问架构400示意图,如图4所示,架构400包括:虚拟机102、I/O适配器402和存储设备202。
其中存储设备202可以被运行在多个物理机上的多个虚拟机102使用,在整个系统运行之前,首先有一个物理机上运行的虚拟机102和存储设备202的LUN设备的配置过程,使得存储设备202的LUN设备在物理机上运行的虚拟机102中呈现出虚拟LUN设备。存储设备202的LUN设备可以分配给多个虚拟机使用,多个虚拟机可以运行在一个物理机上,也可以运行在多个物理上,本发明实施例对此并不进行限定。
为了描述方便,在本发明实施例中,虚拟机内部的LUN设备叫做虚拟LUN,使用虚拟LUN对虚拟LUN设备进行标识,存储设备202的存储阵列的LUN设备叫做物理LUN设备,使用物理LUN对物理LUN进行标识。
具体实现过程中,可以由I/O适配器402将物理LUN设备配置为虚拟机102内部的虚拟LUN设备,也可以由VMM完成物理LUN设备到虚拟机102的虚拟LUN设备的配置;可以在创建虚拟机102的时候完成物理LUN设备到虚拟机LUN设备的配置,也可以在后续的资源动态调整时,进行物理LUN设备到虚拟LUN设备的配置。本发明实施例并不对配置主体和配置时间进行限定。
在本发明实施例的一种可能的实现方式中,不同虚拟机内部的编址方式相同,不同虚拟机内部的虚拟lun设备编址是可以重复的。物理lun设备到虚拟lun设备的配置,可以仅仅是物理lun设备编号到虚拟lun设备编号的转化,物理lun设备的属性信息可以透传给虚拟机,例如,是否支持自动精简配置,是否支持集群持续预留,是否支持卸载数据传输,是否支持路径切换等属性信息。其中,物理lun设备到虚拟lun设备的配置过程可以通过I/O适配器或VMM与存储设备目标器的协商来完成,本发明实施例并不对此进行限定。
架构400下的存储设备访问流程信令图如图5所示,访问流程包括:
502:虚拟机102生成对存储设备202的访问请求。
当虚拟机102接收到上层应用需求,要访问存储设备202中的存储阵列时,首先由虚拟机102生成访问请求,该访问请求中携带待访问的存储区域的虚拟地址信息。
在本发明实施例的一种实现方式中,访问请求中可以携带虚拟机102要访问的虚拟LUN设备的虚拟LUN和待访问的存储区域在该虚拟LUN设备的起始地址和地址长度。
以KVM虚拟化进行举例说明,在本发明实施例的一种实现方式中,虚拟机102内部的应用层有对存储设备202的访问需求时,虚拟机102会生成相应块读写请求BIO,并将BIO发给该虚拟机102的块设备(虚拟机内的),虚拟机102的块设备根据BIO生成请求Request,然后基于Requst进行合并、排序、缓存、调度,然后经过调度算法将Request发给虚拟机102的SCSI中层(虚拟机内的),虚拟机102的SCSI中层根据Request生成SCSI命令,并将SCSI命令发送给虚拟磁盘驱动virtio-scsi,virtio-scsi根据SCSI命令生成访问请求virtio_scsi_cmd。其中,访问请求virtio_scsi_cmd中携带用于标识虚拟LUN设备的虚拟LUN和待访问的存储区域在虚拟LUN设备中的起始地址和地址长度。
504:虚拟机102将访问请求发送给I/O适配器402。
虚拟机102将访问请求放入与I/O适配器402共用的I/O共享环,并向I/O适配器发送第一门铃通知,所述第一门铃通知用于指示所述I/O共享环有访问请求到达,I/O适配器402接收来自所述虚拟机的第一门铃通知后,从与所述虚拟机共用的I/O共享环中获取所述访问请求。
以KVM虚拟化进行举例说明,在具体实现过程中,虚拟机102的虚拟磁盘驱动virtio-scsi把访问请求virtio_scsi_cmd放入虚拟机102与I/O适配器的I/O共享环vring中,通过门铃机制通知I/O适配器402有新的访问请求到达。I/O适配器402接收到门铃通知后,会去对应的I/O共享环中取出虚拟机102放入的访问请求virtio_scsi_cmd。
506:I/O适配器402根据访问请求,生成访问指令。
I/O适配器402根据访问请求virtio_scsi_cmd生成访问指令,访问指令中携带待访问的存储区域的虚拟地址信息和虚拟机102对应的虚拟通道的标识。
在本发明实施例的一种实现方式中,访问指令中可以携带虚拟机102要访问的虚拟LUN设备的虚拟LUN、与虚拟机102对应的虚拟通道的标识,以及待访问的存储区域在该虚拟LUN设备的起始地址和地址长度。
其中,虚拟通道用于连接虚拟机102与存储设备202,虚拟机102与虚拟通道一一对应,更具体的,虚拟通道用于连接虚拟机102与存储设备202的存储设备目标器,存储设备目标器用于管理对存储设备202的访问操作,因为存储设备202可以被多个虚拟机共用,甚至被多个物理机上运行的多个虚拟机共用,为了存储设备目标器能够识别出对存储设备202进行访问操作的虚拟机是哪一个虚拟机,需建立虚拟机与虚拟通道的对应关系,虚拟机与存储阵列目标器之间的虚拟通道是唯一的,即虚拟机与虚拟通道一一对应,虚拟通道的标识能够唯一的标识虚拟机。
应理解,虚拟通道和虚拟通道的标识是为了表征虚拟机102与存储设备202的唯一连接关系,虚拟通道是指在数据传输过程中,使用存储传输协议,建立在实体物理介质之上的,表示虚拟机与存储设备之间的唯一连接关系的数据传输通道,每一个虚拟机都通过唯一的虚拟通道的标识进行标识的虚拟通道与存储设备连接。在具体实现时,虚拟通道可以有多种实现形式,例如,可以通过分时复用物理连接通道来实现。
因为运行在不同的物理机上的虚拟机的虚拟机标识是可以重复的,所以虚拟机标识不能唯一的表征虚拟机,而虚拟通道与虚拟机一一对应,虚拟通道的标识的本质目的是唯一的表征与该虚拟通道连接的虚拟机。虚拟机标识的具体实现形式多种多样,本发明实施例对此并不进行限定,可以使用任一种能够唯一表征虚拟机身份的标识来实现这一目的,在虚拟机与存储设备之间传递唯一表征虚拟机身份的虚拟通道的标识的通道即为连接虚拟机与存储设备的唯一虚拟通道。
虚拟通道可以由I/O适配器402与存储设备202通过协商决定,也可以提前配置。例如,在创建虚拟机时,由虚拟机监控器(Virtual Machine Manager,VMM)或创建虚拟机的特权域进行虚拟通道的配置。本发明实施例并不限定虚拟通道以及虚拟通道的标识的配置方式。虚拟通道可以拥有各种属性,例如,承载能力、对应的存储阵列的地址空间、故障处理方法等。
在I/O适配器402内部维护有虚拟通道与虚拟机的一一对应关系,例如,可以使用数据表的形式,记录虚拟机与虚拟通道的一一对应关系。具体实现过程中,可以使用虚拟机标识指示虚拟机,使用虚拟通道的标识指示虚拟通道。
I/O适配器402根据访问请求生成访问指令之前,通过查询预设的对应关系,确定该虚拟机对应的虚拟通道的标识,其中,对应关系包括虚拟通道的标识与虚拟机的一一对应关系。
通过虚拟通道的配置,可以使存储设备目标器能够识别出不同的虚拟机,因为虚拟通道表征了虚拟机与存储设备的唯一连接关系,所以即使运行在不同物理机上的虚拟机标识有重复,存储设备也可以分辨出不同物理机上的虚拟机,从而根据虚拟地址信息和虚拟机的虚拟通道的标识唯一的确定虚拟机待访问的存储区域的物理地址。
虚拟通道与虚拟机的一一对应关系可以动态的进行调整,当新建一个虚拟机时,可以在对应关系中新加入该新建虚拟机与其对应的虚拟通道的对应关系,当删除一个虚拟机时,同样在对应关系中删除相应的虚拟机与虚拟通道的对应关系。
在本发明实施例的一种实现方式中,I/O适配器将virtio_scsi_cmd指令转换为标准访问指令scsi_cmnd,并使用scsi_cmnd记录LUN地址字段的高两位字节记录虚拟机102对应的虚拟通道的标识。
因为LUN地址格式一般不超过6个字节,而SCSI模型里面定义的LUN地址字段实际上有8个字节,LUN地址字段的高位一般有两个字节是备用字段,所以可以使用LUN地址字段的两个备用的高位字节来携带虚拟通道的标识,以区分不同的虚拟通道。
应理解,访问指令还可以用其他字段或扩展字段来携带虚拟通道的标识,本发明实施例并不对此进行限定,例如,如果虚拟通道数目小于256,只使用LUN地址字段的一个高位字节就可以实现对虚拟通道的标识的记录。
从访问请求到访问指令的部分转换伪代码如下所示,使用LUN地址字段的高两位字节记录虚拟通道的标识Virtual_Channel_no,具体实现为Virtual_Channel_no左移48位(即6个字节),然后与LUN进行“位或”操作,因为LUN地址字段的高两位字节缺省为0,二者进行“位或”操作后,LUN地址字段的高两位字节记录的即为虚拟通道的标识Virtual_Channel_no,使用两位字节可以区分65536个不同的虚拟通道。
访问请求伪代码:
struct virtio_scsi_cmd{
lun[8];
cdb[32];
sdb;
tag;
….
}
访问指令伪代码:
struct scsi_cmnd{
Cmnd=cdb[32];
sdb=sdb;
lun=lun[8]|Virtual_Channel_no<<48;
tag=tag;
….
}
应了解,以上伪代码仅仅是为了示例性说明,在具体实现的时候,实际代码可以与上述伪代码不同,本发明实施例并不对此进行限定。
在本发明实施例的一种实现方式中,所述I/O适配器402配置有至少一个缓存队列,每一个缓存队列关联一个虚拟通道,每个缓存队列与每个虚拟通道一一对应;所述I/O适配器402获取来自所述虚拟机的所述访问请求之后,进一步将所述访问请求放入所述虚拟机的虚拟通道对应的第一缓存队列;所述I/O适配器402根据所述访问请求生成所述访问指令之前,从所述虚拟机的虚拟通道对应的第一缓存队列中取出所述访问请求。
若所述I/O适配器402获取到来自至少两个虚拟机的至少两个访问请求,所述I/O适配器402可以根据所述至少两个访问请求对应的至少两个虚拟机的优先级,按照优先级顺序先生成优先级高的虚拟机对应的访问指令,再生成优先级低的虚拟机对应的访问指令。
若所述I/O适配器402获取到来自至少两个虚拟机的至少两个访问请求,所述I/O适配器402还可以根据获取到所述至少两个访问请求的时间先后顺序,先生成先接收到的访问请求对应的访问指令,再生成后接收到的访问请求对应的访问指令。
应了解,以上I/O适配器402按照虚拟机优先级或按照获取时间的先后顺序,分别处理接收到的多个访问请求的方式,仅仅是举例说明,本发明实施例并不对I/O适配器402处理接收到的访问请求的处理顺序进行限定。
508:I/O适配器将访问指令发送给存储设备202。
具体实现过程中,在图2所示的200(a)的场景下,所述访问指令为主机总线适配器驱动层可处理的小型计算机系统接口SCSI指令,I/O适配器402通过计算设备204和存储设备202的HBA驱动将访问指令发往存储设备202。
具体的,I/O适配器402将访问指令发送给存储阵列目标器,该存储阵列目标器用于管理对存储设备202的访问操作。
存储阵列目标器获取到来自I/O适配器402的访问指令后,根据所述访问指令中携带的虚拟地址信息和所述虚拟通道的标识,确定所述待访问的存储区域在所述存储设备中的物理地址。具体的,存储设备目标器根据虚拟机102待访问的存储区域的虚拟地址和虚拟机102的虚拟通道的标识,查询预设的第二对应关系,确定所述待访问的存储区域在所述存储设备中的物理地址,其中,所述第二对应关系包括每个虚拟通道的标识与为所述每个虚拟通道分配的存储区域的物理地址的对应关系。
表1示例性的示出了虚拟机的虚拟地址到存储阵列的物理地址的映射关系。如表1所示,每一个虚拟通道内部的虚拟地址都是唯一的,不同虚拟通道内部的地址可以重复,存储设备目标器根据虚拟地址和虚拟通道的标识能够唯一的确定待访问的存储区域的物理地址。
因为在确定待访问的存储区域的物理地址的时候是依据虚拟通道的标识和虚拟地址共同确定,即使不同物理机上运行的虚拟机的虚拟机标识相同,因为虚拟机对应的虚拟通道是唯一的,存储设备目标器任然能够根据虚拟通道的标识和虚拟地址,唯一的确定物理地址。
如表1所示,即使虚拟通道的标识为0和1的虚拟通道的虚拟地址相互重叠,因为二者的虚拟通道的标识不同,存储设备目标器可以将虚“拟通道标识0+虚拟地址VA1”映射为物理地址PA1;将“虚拟通道的标识1+虚拟地址VA1”映射为物理地址PA4。
表1地址映射表
Figure GWB0000002363050000261
在具体实现过程中,虚拟地址为虚拟LUN和待访问存储区与虚拟LUN设备的指示信息,物理地址为物理LUN和待访问的存储区域在物理LUN设备的指示信息,存储设备目标器可以将虚拟机102内部的虚拟LUN映射为实际的物理LUN。
在本发明实施例的一种可能的实现方式中,所述存储设备目标器配置有至少一个缓存队列,每个缓存队列与每个虚拟通道一一对应;所述存储设备目标器获取所述访问指令之后,进一步将所述访问指令放入所述虚拟机的虚拟通道对应的第二缓存队列;所述存储设备目标器确定所述待访问的存储区域在所述存储设备中的物理地址之前,从所述虚拟机的虚拟通道对应的第二缓存队列中取出所述访问指令。
若所述存储设备目标器获取到来自至少两个虚拟机的至少两个访问指令,所述存储设备目标器可以根据所述至少两个访问指令对应的至少两个虚拟机的优先级,按照优先级顺序先确定优先级高的虚拟机的待访问的存储区域在所述存储设备中的物理地址,再确定优先级低的虚拟机的待访问的存储区域在所述存储设备中的物理地址。
若所述存储设备目标器获取到来自至少两个虚拟机的至少两个访问指令,所述存储设备目标器还可以根据获取到所述至少两个访问指令的时间先后顺序,先确定先接收到的访问指令对应的待访问的存储区域在所述存储设备中的物理地址,再确定后接收到的访问指令对应的待访问的存储区域在所述存储设备中的物理地址。
应了解,以上存储设备目标器按照优先级或按照获取时间的先后顺序,分别处理接收到的多个访问指令的方式,仅仅是举例说明,本发明实施例并不对存储设备目标器处理接收到的访问指令的处理顺序进行限定。
510:存储设备目标器根据虚拟机待访问的存储区域的物理地址和访问指令,对待访问的存储区域进行访问操作
在具体实现过程中,如果所述访问指令为数据写指令,所述存储设备目标器向物理地址指示的存储区域中写入待写入的数据;如果所述访问指令为数据读指令,所述存储设备目标器从物理地址指示的存储区域中读取待读取的数据。
512:存储设备目标器将访问指令的执行结果返回给I/O适配器402。
在本发明实施例的一种实现方式中,存储设备目标器向I/O适配器402发送反馈消息,所述反馈消息包含访问指令的执行结果和该虚拟机的虚拟通道的标识。I/O适配器根据该虚拟通道的标识确定该虚拟机。可选的,I/O根据预设的第一对应关系,根据虚拟通道的标识查找与虚拟通道高的标识对应的虚拟机。
514:I/O适配器402将访问指令的执行结果返回给虚拟机102。
在本发明实施例的一种实现方式中,I/O适配器402将访问请求的执行结果放入与虚拟机102共用的I/O共享环,并向虚拟机102发送第二门铃通知,该第二门铃通知用于指示所述I/O共享环有执行结果到达。
根据本发明实施例公开的技术方案,通过在虚拟机与存储设备之间配置I/O适配器,并通过在I/O适配器与存储设备之间配置与虚拟机一一对应的虚拟通道,在访问指令中携带对应的虚拟通道的标识,使存储设备目标器能够根据虚拟地址信息和虚拟机的虚拟通道的标识唯一的确定待访问区域的物理地址,从而实现了虚拟机对存储设备的直接访问,简化了存储设备的访问方法,缩减了I/O访问流程,减少了软件层对内存资源和计算资源的消耗。
图6为依据本发明一实施例的存储设备访问方法600的示范性流程图,计算机系统上运行着至少一个虚拟机,计算机系统上配置有I/O适配器,该I/O适配器用于管理运行在计算机系统上的虚拟机对存储设备的访问操作,方法600包括:
S602:I/O适配器获取来自虚拟机的访问请求,所述访问请求中携带待访问的存储区域的虚拟地址信息。
在本发明实施例的一种可能的实现方式中,当虚拟机接收到上层应用需求,要访问存储设备中的存储阵列时,首先由虚拟机生成访问请求,该访问请求中携带待访问的存储区域的虚拟地址信息。
以KVM虚拟化系统进行举例说明,虚拟机内部的应用层有对存储设备的访问需求时,虚拟机会生成相应块读写请求BIO,并将BIO发给该虚拟机的块设备(虚拟机内的),虚拟机的块设备根据BIO生成请求Request,然后基于Requst进行合并、排序、缓存、调度,然后经过调度算法将Request发给虚拟机的SCSI中层(虚拟机内的),虚拟机的SCSI中层根据Request生成SCSI命令,并将SCSI命令发送给虚拟磁盘驱动virtio-scsi,virtio-scsi根据SCSI命令生成访问请求virtio_scsi_cmd。
在本发明实施例的一种实现方式中,所述I/O适配器获取来自虚拟机的访问请求,包括:所述I/O适配器接收来自所述虚拟机的第一门铃通知,并从与所述虚拟机共用的I/O共享环中获取所述访问请求,所述访问请求由所述虚拟机放入所述I/O共享环,所述第一门铃通知用于指示所述I/O共享环有访问请求到达。
以KVM虚拟化系统进行举例说明,虚拟机的虚拟磁盘驱动virtio-scsi把访问请求virtio_scsi_cmd放入虚拟机与I/O适配器的I/O共享环vring中,并通过门铃机制通知I/O适配器有新的访问请求到达。I/O适配器接收到门铃通知后,会去对应的I/O共享环中取出虚拟机放入的访问请求virtio_scsi_cmd。
S604:I/O适配器根据所述访问请求生成访问指令,所述访问指令中携带所述虚拟地址信息和该虚拟机的虚拟通道的标识,所述虚拟通道用于连接所述虚拟机与存储设备目标器,虚拟机与虚拟通道一一对应,所述存储设备目标器用于管理对所述存储设备的访问操作。
其中,虚拟通道用于连接虚拟机与存储设备,具体的,虚拟通道用于连接虚拟机与存储设备的存储设备目标器,因为存储设备可以被多个虚拟机共用,甚至被多个物理机上运行的多个虚拟机共用,运行在不同物理机上的虚拟机标识可以重复,为了存储设备目标器能够识别出对存储设备进行访问操作的虚拟机是哪一个虚拟机,需建立虚拟机与虚拟通道的对应关系,虚拟机与存储阵列目标器之间的虚拟通道是唯一的,即虚拟机与虚拟通道一一对应,虚拟通道的标识能够唯一的标识虚拟机。
所述I/O适配器根据所述访问请求生成访问指令之前,进一步包括:所述I/O适配器根据所述虚拟机的标识查询预设的第一对应关系,确定所述虚拟通道的标识,其中,所述第一对应关系包括每台虚拟机的标识与每个虚拟通道的标识的对应关系。
虚拟通道可以由I/O适配器与存储设备通过协商决定,也可以提前配置。例如,在创建虚拟机时,由虚拟机监控器(Virtual Machine Manager,VMM)或创建虚拟机的特权域去进行虚拟通道的配置。本发明实施例并不限定虚拟通道以及虚拟通道的标识的配置方式。
以KVM虚拟化系统进行举例说明,I/O适配器根据访问请求virtio_scsi_cmd生成访问指令,访问指令中携带待访问的存储区域的虚拟地址信息和虚拟机对应的虚拟通道的标识。
具体实现过程中,因为LUN地址格式一般不超过6个字节,而SCSI模型里面定义的LUN地址字段实际上有8个字节,LUN地址字段的高位一般有两个字节是备用字段,所以可以使用LUN地址字段的两个备用的高位字节来携带虚拟通道的标识,以区分不同的虚拟通道。应理解,访问指令还可以用其他字段或扩展字段来携带虚拟通道的标识,本发明实施例并不对此进行限定,例如,如果虚拟通道数目小于256,只使用LUN地址字段的一个高位字节就可以实现对虚拟通道的标识的记录。
在本发明实施例的一种实现方式中,I/O适配器将virtio_scsi_cmd指令转换为标准访问指令scsi_cmnd,并使用scsi_cmnd记录LUN地址字段的高两位字节记录虚拟机对应的虚拟通道的标识。
在本发明实施例的一种实现方式中,所述I/O适配器配置有至少一个缓存队列,每个缓存队列与每个虚拟通道一一对应;所述I/O适配器获取来自所述虚拟机的所述访问请求之后,进一步包括:所述I/O适配器将所述访问请求放入所述虚拟机的虚拟通道对应的第一缓存队列;所述I/O适配器根据所述访问请求生成所述访问指令之前,进一步包括:所述I/O适配器从所述虚拟机的虚拟通道对应的第一缓存队列中取出所述访问请求。
可选的,若所述I/O适配器获取到来自至少两个虚拟机的至少两个访问请求,所述I/O适配器根据所述访问请求生成访问指令,包括:所述I/O适配器根据所述至少两个访问请求对应的至少两个虚拟机的优先级,按照优先级顺序先生成优先级高的虚拟机对应的访问指令,再生成优先级低的虚拟机对应的访问指令。
可选的,若所述I/O适配器获取到来自至少两个虚拟机的至少两个访问请求,所述I/O适配器根据所述访问请求生成访问指令,包括:所述I/O适配器根据获取到所述至少两个访问请求的时间先后顺序,先生成先接收到的访问请求对应的访问指令,再生成后接收到的访问请求对应的访问指令。
应了解,以上I/O适配器按照虚拟机优先级或按照获取时间的先后顺序,分别处理接收到的多个访问请求的方式,仅仅是举例说明,本发明实施例并不对I/O适配器处理接收到的访问请求的处理顺序进行限定。
S606:I/O适配器将所述访问指令发送给所述存储设备目标器。
所述I/O适配器将所述访问指令发送给所述存储设备目标器之后,进一步包括:所述I/O适配器获取来自所述存储设备目标器的反馈消息,所述反馈消息包含所述访问指令的执行结果和所述虚拟机的虚拟通道的标识;所述I/O适配器根据所述虚拟通道的标识确定所述虚拟机,并将所述访问指令的执行结果发送给所述虚拟机。
具体的,所述I/O适配器将所述访问指令的执行结果发送给所述虚拟机,包括:所述I/O适配器将所述访问请求的执行结果放入与所述虚拟机共用的I/O共享环,并向所述虚拟机发送第二门铃通知,所述第二门铃通知用于指示所述I/O共享环有执行结果到达。
具体实现过程中,在图2所示的200(a)的场景下,所述访问指令为主机总线适配器驱动层可处理的小型计算机系统接口SCSI指令;所述I/O适配器将所述访问指令发送给所述存储设备目标器,包括:所述I/O适配器通过所述主机总线适配器驱动层将所述访问指令发送给所述存储设备目标器。
应了解,图6实施例为图5实施例的I/O适配器侧的方法,图5实施例部分的特征描述适用于图6实施例,在此不再赘述。
根据本发明实施例公开的技术方案,通过在虚拟机与存储设备之间配置I/O适配器,并通过在I/O适配器与存储设备之间配置与虚拟机一一对应的虚拟通道,从而实现了虚拟机对存储设备的直接访问,简化了存储设备的访问方法,缩减了I/O访问流程,减少了软件层对内存资源和计算资源的消耗。
图7为依据本发明一实施例的存储设备访问方法700的示范性流程图,存储设备可以被多个虚拟机机共用,该多个虚拟机可以是运行在同一个物理机上的虚拟机,也可以是运行在不同物理机上的虚拟机,不同物理机上的虚拟机标识可以相同,存储器目标器用于管理对存储设备的访问操作,方法700包括:
S702:存储设备目标器获取访问指令,所述访问指令中携带虚拟地址信息和虚拟机的虚拟通道的标识,所述虚拟通道用于连接虚拟机与所述存储设备目标器,虚拟机与虚拟通道一一对应,所述虚拟地址信息用于表示待访问的存储区域在所述虚拟机中的虚拟地址。
其中,虚拟通道用于连接虚拟机与存储设备,具体的,虚拟通道用于连接虚拟机与存储设备的存储设备目标器,因为存储设备可以被多个虚拟机共用,甚至被多个物理机上运行的多个虚拟机共用,运行在不同物理机上的虚拟机标识可以重复,为了存储设备目标器能够识别出对存储设备进行访问操作的虚拟机是哪一个虚拟机,需建立虚拟机与虚拟通道的对应关系,虚拟机与存储阵列目标器之间的虚拟通道是唯一的,即虚拟机与虚拟通道一一对应,虚拟通道的标识能够唯一的标识虚拟机。
虚拟通道可以由物理机侧虚拟机控制器或虚拟机或其他模块与存储设备通过协商决定,也可以提前配置。例如,在创建虚拟机时,由虚拟机监控器(Virtual MachineManager,VMM)或创建虚拟机的特权域去进行虚拟通道的配置。本发明实施例并不限定虚拟通道以及虚拟通道的标识的配置方式。
具体实现过程中,因为LUN地址格式一般不超过6个字节,而SCSI模型里面定义的LUN地址字段实际上有8个字节,LUN地址字段的高位一般有两个字节是备用字段,所以可以使用LUN地址字段的两个备用的高位字节来携带虚拟通道的标识,以区分不同的虚拟通道。应理解,访问指令还可以用其他字段或扩展字段来携带虚拟通道的标识,本发明实施例并不对此进行限定,例如,如果虚拟通道数目小于256,只使用LUN地址字段的一个高位字节就可以实现对虚拟通道的标识的记录。
S704:所述存储设备目标器根据所述访问指令中携带的虚拟地址信息和所述虚拟通道的标识,确定所述待访问的存储区域在所述存储设备中的物理地址。
在本发明实施例的一种可能的实现方式中,所述存储设备目标器根据所述访问指令中携带的虚拟地址信息和所述虚拟通道的标识,确定所述待访问的存储区域在所述存储设备中的物理地址,包括:所述存储设备目标器根据所述访问指令中携带的虚拟地址信息和所述虚拟通道的标识,查询预设的第二对应关系,确定所述待访问的存储区域在所述存储设备中的物理地址,其中,所述第二对应关系包括每个虚拟通道的标识与为所述每个虚拟通道分配的存储区域的物理地址的对应关系。
其中,每一个虚拟通道内部的虚拟地址都是唯一的,不同虚拟通道内部的地址可以重复,存储设备目标器根据虚拟地址和虚拟通道的标识能够唯一的确定待访问的存储区域的物理地址。因为在确定待访问的存储区域的物理地址的时候是依据虚拟通道的标识和虚拟地址共同确定,即使不同物理机上运行的虚拟机的虚拟机标识相同,因为虚拟机对应的虚拟通道是唯一的,存储设备目标器任然能够根据虚拟通道的标识和虚拟地址,唯一的确定物理地址。
在具体实现过程中,存储设备目标器可以将虚拟机内部的虚拟LUN映射为实际的物理LUN。
在本发明实施例的一种可能的实现方式中,所述存储设备目标器配置有至少一个缓存队列,每个缓存队列与每个虚拟通道一一对应;所述存储设备目标器获取所述访问指令之后,进一步包括:所述存储设备目标器将所述访问指令放入所述虚拟机的虚拟通道对应的第二缓存队列;所述存储设备目标器确定所述待访问的存储区域在所述存储设备中的物理地址之前,进一步包括:所述存储设备目标器从所述虚拟机的虚拟通道对应的第二缓存队列中取出所述访问指令。
可选的,若所述存储设备目标器获取到来自至少两个虚拟机的至少两个访问指令,所述存储设备目标器确定所述待访问的存储区域在所述存储设备中的物理地址,包括:所述存储设备目标器根据所述至少两个访问指令对应的至少两个虚拟机的优先级,按照优先级顺序先确定优先级高的虚拟机的待访问的存储区域在所述存储设备中的物理地址,再确定优先级低的虚拟机的待访问的存储区域在所述存储设备中的物理地址。
可选的,若所述存储设备目标器获取到来自至少两个虚拟机的至少两个访问指令,所述存储设备目标器确定所述待访问的存储区域在所述存储设备中的物理地址,包括:所述存储设备目标器根据获取到所述至少两个访问指令的时间先后顺序,先确定先接收到的访问指令对应的待访问的存储区域在所述存储设备中的物理地址,再确定后接收到的访问指令对应的待访问的存储区域在所述存储设备中的物理地址。
应了解,以上存储设备目标器按照优先级或按照获取时间的先后顺序,分别处理接收到的多个访问指令的方式,仅仅是举例说明,本发明实施例并不对存储设备目标器处理接收到的访问指令的处理顺序进行限定。
S706:所述存储设备目标器根据所述访问指令和所述待访问的存储区域在所述存储设备中的物理地址,对所述待访问的存储区域进行操作。
在具体实现过程中,如果所述访问指令为数据写指令,所述存储设备目标器向物理地址指示的存储区域中写入待写入的数据;如果所述访问指令为数据读指令,所述存储设备目标器从物理地址指示的存储区域中读取待读取的数据。
可选的,所述存储设备目标器根据所述访问指令和所述待访问的存储区域在所述存储设备中的物理地址,对所述待访问的存储区域进行操作之后,进一步包括:所述存储设备目标器返回反馈消息,所述反馈消息包含所述访问指令的执行结果和所述虚拟机的虚拟通道的标识。
应了解,图7实施例为图5实施例的存储设备目标器侧的方法,图5实施例部分的特征描述适用于图7实施例,在此不再赘述。
根据本发明实施例公开的技术方案,通过建立虚拟机与存储设备之间的虚拟通道,并在访问指令中携带对应的虚拟通道的标识,使存储设备目标器能够根据虚拟地址信息和虚拟机的虚拟通道的标识唯一的确定待访问区域的物理地址,从而实现了虚拟机对存储设备的直接访问,简化了存储设备的访问方法,缩减了I/O访问流程,减少了软件层对内存资源和计算资源的消耗。
图8为依据本发明一实施例的存储设备访问装置800的逻辑结构示意图,装置800用于管理运行在计算机系统上的虚拟机对存储设备的访问操作,如图8所示,装置800包含获取单元802、生成单元804和发送单元806,其中,
获取单元802,用于获取获取来自虚拟机的访问请求,所述访问请求中携带待访问的存储区域的虚拟地址信息;
生成单元804,用于根据所述访问请求生成访问指令,所述访问指令中携带所述虚拟地址信息和该虚拟机的虚拟通道的标识,所述虚拟通道用于连接所述虚拟机与存储设备目标器,虚拟机与虚拟通道一一对应,所述存储设备目标器用于管理对所述存储设备的访问操作
发送单元806,用于将所述访问指令发送给所述存储设备目标器。
具体的,所述生成单元804根据所述访问请求生成访问指令之前,还用于:根据所述虚拟机的标识查询预设的第一对应关系,确定所述虚拟通道的标识,其中,所述第一对应关系包括每台虚拟机的标识与每个虚拟通道的标识的对应关系。
可选的,所述装置800配置有至少一个缓存队列,每个缓存队列与每个虚拟通道一一对应;所述获取单元802获取来自所述虚拟机的所述访问请求之后,还用于:将所述访问请求放入所述虚拟机的虚拟通道对应的第一缓存队列;生成单元804根据所述访问请求生成所述访问指令之前,还用于:从所述虚拟机的虚拟通道对应的第一缓存队列中取出所述访问请求。
可选的,若所述获取单元802获取到来自至少两个虚拟机的至少两个访问请求,所述生成单元804用于根据所述访问请求生成访问指令,包括:所述生成单元804用于根据所述至少两个访问请求对应的至少两个虚拟机的优先级,按照优先级顺序先生成优先级高的虚拟机对应的访问指令,再生成优先级低的虚拟机对应的访问指令。
可选的,若所述获取单元802获取到来自至少两个虚拟机的至少两个访问请求,所述生成单元804用于根据所述访问请求生成访问指令,包括:所述生成单元804用于根据获取到所述至少两个访问请求的时间先后顺序,先生成先接收到的访问请求对应的访问指令,再生成后接收到的访问请求对应的访问指令。
在本发明实施例的一种可能的实现方式中,所述发送单元806将所述访问指令发送给所述存储设备目标器之后,所述获取单元802还用于:获取来自所述存储设备目标器的反馈消息,所述反馈消息包含所述访问指令的执行结果和所述虚拟机的虚拟通道的标识;所述发送单元806还用于:根据所述虚拟通道的标识确定所述虚拟机,并将所述访问指令的执行结果发送给所述虚拟机。
在本发明实施例的一种可能的实现方式中,所述获取单元802用于获取来自虚拟机的访问请求,包括:所述获取单元802用于接收来自所述虚拟机的第一门铃通知,并从与所述虚拟机共用的I/O共享环中获取所述访问请求,所述访问请求由所述虚拟机放入所述I/O共享环,所述第一门铃通知用于指示所述I/O共享环有访问请求到达;所述发送单元806用于将所述访问指令的执行结果发送给所述虚拟机,包括:所述发送单元806用于将所述访问请求的执行结果放入与所述虚拟机共用的I/O共享环,并向所述虚拟机发送第二门铃通知,所述第二门铃通知用于指示所述I/O共享环有执行结果到达。
具体实现过程中,在图2所示的200(a)的场景下,所述访问指令为主机总线适配器驱动层可处理的小型计算机系统接口SCSI指令;所述发送单元806用于将所述访问指令发送给所述存储设备目标器,包括:所述发送单元806用于通过所述主机总线适配器驱动层将所述访问指令发送给所述存储设备目标器。
本发明实施例与图6的方法实施例相对应,图5及图6实施例部分的特征描述,适用于本发明实施例,在此不再赘述。
图9为依据本发明一实施例的存储设备访问装置900的逻辑结构示意图,装置900用于管理虚拟机对存储设备的访问操作,如图9所示,装置900包含获取单元902、确定单元904和处理单元906,其中,
获取单元902,用于获取访问指令,所述访问指令中携带虚拟地址信息和虚拟机的虚拟通道的标识,所述虚拟通道用于连接所述虚拟机与所述装置,虚拟机与虚拟通道一一对应,所述虚拟地址信息用于表示待访问的存储区域在所述虚拟机中的虚拟地址;
确定单元904,用于根据所述访问指令中携带的虚拟地址信息和所述虚拟通道的标识,确定所述待访问的存储区域在所述存储设备中的物理地址;
处理单元906,用于根据所述访问指令和所述待访问的存储区域在所述存储设备中的物理地址,对所述待访问的存储区域进行操作。
具体的,所述确定单元904用于根据所述访问指令中携带的虚拟地址信息和所述虚拟通道的标识,确定所述待访问的存储区域在所述存储设备中的物理地址,包括:所述确定单元904用于根据所述访问指令中携带的虚拟地址信息和所述虚拟通道的标识,查询预设的第二对应关系,确定所述待访问的存储区域在所述存储设备中的物理地址,其中,所述第二对应关系包括每个虚拟通道的标识与为所述每个虚拟通道分配的存储区域的物理地址的对应关系。
可选的,所述装置配置有至少一个缓存队列,每个缓存队列与每个虚拟通道一一对应;所述获取单元902获取所述访问指令之后之后,还用于:将所述访问指令放入所述虚拟机的虚拟通道对应的第二缓存队列;所述确定单元904确定所述待访问的存储区域在所述存储设备中的物理地址之前,还用于:从所述虚拟机的虚拟通道对应的第二缓存队列中取出所述访问指令。
可选的,若所述获取单元902获取到来自至少两个虚拟机的至少两个访问指令,所述确定单元904用于确定所述待访问的存储区域在所述存储设备中的物理地址,包括:所述确定单元904用于根据所述至少两个访问指令对应的至少两个虚拟机的优先级,按照优先级顺序先确定优先级高的虚拟机的待访问的存储区域在所述存储设备中的物理地址,再确定优先级低的虚拟机的待访问的存储区域在所述存储设备中的物理地址。
可选的,若所述获取单元902获取到来自至少两个虚拟机的至少两个访问指令,所述确定单元904用于确定所述待访问的存储区域在所述存储设备中的物理地址,包括:所述确定单元904用于根据所述获取单元902获取到所述至少两个访问指令的时间先后顺序,先确定先接收到的访问指令对应的待访问的存储区域在所述存储设备中的物理地址,再确定后接收到的访问指令对应的待访问的存储区域在所述存储设备中的物理地址。
在本发明实施例的一种实现方式中,所述处理单元906根据所述访问指令和所述待访问的存储区域在所述存储设备中的物理地址,对所述待访问的存储区域进行操作之后,还用于:返回反馈消息,所述反馈消息包含所述访问指令的执行结果和所述虚拟机的虚拟通道的标识。
本发明实施例与图7的方法实施例相对应,图5及图7实施例部分的特征描述,适用于本发明实施例,在此不再赘述。
图10是依据本发明一实施例的存储设备访问装置1000的硬件结构示意图。如图10所示,装置1000包括处理器1002、存储器1004、输入/输出接口1006、通信接口1008和总线1010。其中,处理器1002、存储器1004、输入/输出接口1006和通信接口1008通过总线1010实现彼此之间的通信连接。
处理器1002可以采用通用的中央处理器(Central Processing Unit,CPU),微处理器,应用专用集成电路(Application SQecific Integrated Circuit,ASIC),或者一个或多个集成电路,用于执行相关程序,以实现本发明实施例所提供的技术方案。
存储器1004可以是只读存储器(Read Only Memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(Random Access Memory,RAM)。存储器1004可以存储操作系统和其他应用程序。在通过软件或者固件来实现本发明实施例提供的技术方案时,用于实现本发明实施例提供的技术方案的程序代码保存在存储器1004中,并由处理器1002来执行。
输入/输出接口1006用于接收输入的数据和信息,输出操作结果等数据。
通信接口1008使用例如但不限于收发器一类的收发装置,来实现装置1000与其他设备或通信网络之间的通信。
总线1010可包括一通路,在装置1000各个部件(例如处理器1002、存储器1004、输入/输出接口1006和通信接口1008)之间传送信息。
应注意,尽管图10所示的装置1000仅仅示出了处理器1002、存储器1004、输入/输出接口1006、通信接口1008以及总线1010,但是在具体实现过程中,本领域的技术人员应当明白,装置1000还包含实现正常运行所必须的其他器件。同时,根据具体需要,本领域的技术人员应当明白,装置1000还可包含实现其他附加功能的硬件器件。此外,本领域的技术人员应当明白,装置1000也可仅仅包含实现本发明实施例所必须的器件,而不必包含图10中所示的全部器件。
图10所示的硬件结构以及上述描述适用于本发明实施例所提供的各种存储设备访问装置和系统,适用于执行本发明实施例所提供的各种存储设备访问方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:移动硬盘、只读存储器(英文:Read-Only Memory,简称ROM)、随机存取存储器(英文:Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。

Claims (45)

1.一种存储设备访问方法,其特征在于,应用于计算机系统,所述计算机系统上运行有虚拟机,所述计算机系统上还配置有I/O适配器,包括:
所述I/O适配器获取来自至少两个虚拟机的至少两个访问请求,所述访问请求中携带待访问的存储区域的虚拟地址信息;
所述I/O适配器根据所述至少两个访问请求对应的至少两个虚拟机的优先级,按照优先级顺序生成对应的访问指令,所述访问指令中携带所述虚拟地址信息和所述虚拟机的虚拟通道的标识,其中,所述虚拟通道用于连接所述虚拟机与存储设备目标器,所述虚拟机与所述虚拟通道一一对应,所述存储设备目标器用于管理对所述存储设备的访问操作;
所述I/O适配器将所述访问指令发送给所述存储设备目标器。
2.根据权利要求1所述的方法,其特征在于,所述I/O适配器根据所述访问请求生成访问指令之前,进一步包括:所述I/O适配器根据所述虚拟机的标识查询预设的第一对应关系,确定所述虚拟通道的标识,其中,所述第一对应关系包括每台虚拟机的标识与每个虚拟通道的标识的对应关系。
3.根据权利要求1或2所述的方法,其特征在于,所述I/O适配器配置有至少一个缓存队列,每个缓存队列与每个虚拟通道一一对应;
所述I/O适配器获取来自所述虚拟机的所述访问请求之后,进一步包括:所述I/O适配器将所述虚拟机的访问请求放入所述虚拟机的虚拟通道对应的第一缓存队列。
4.根据权利要求1所述的方法,其特征在于,若所述I/O适配器获取到来自至少两个虚拟机的至少两个访问请求,所述I/O适配器根据所述访问请求生成访问指令,包括:按照优先级顺序先生成优先级高的虚拟机对应的访问指令,再生成优先级低的虚拟机对应的访问指令。
5.根据权利要求1所述的方法,其特征在于,若所述I/O适配器获取到来自至少两个虚拟机的至少两个访问请求,所述I/O适配器根据所述访问请求生成访问指令,包括:所述I/O适配器根据获取到所述至少两个访问请求的时间先后顺序,先生成先接收到的访问请求对应的访问指令,再生成后接收到的访问请求对应的访问指令。
6.根据权利要求1所述的方法,其特征在于,所述I/O适配器将所述访问指令发送给所述存储设备目标器之后,进一步包括:所述I/O适配器获取来自所述存储设备目标器的反馈消息,所述反馈消息包含所述访问指令的执行结果和所述虚拟机的虚拟通道的标识;所述I/O适配器根据所述虚拟通道的标识确定所述虚拟机,并将所述访问指令的执行结果发送给所述虚拟机。
7.根据权利要求6所述的方法,其特征在于,所述I/O适配器获取来自虚拟机的访问请求,包括:所述I/O适配器接收来自所述虚拟机的第一门铃通知,并从与所述虚拟机共用的I/O共享环中获取所述访问请求,所述访问请求由所述虚拟机放入所述I/O共享环,所述第一门铃通知用于指示所述I/O共享环有访问请求到达;
所述I/O适配器将所述访问指令的执行结果发送给所述虚拟机,包括:所述I/O适配器将所述访问请求的执行结果放入与所述虚拟机共用的I/O共享环,并向所述虚拟机发送第二门铃通知,所述第二门铃通知用于指示所述I/O共享环有执行结果到达。
8.根据权利要求1所述的方法,其特征在于,所述访问指令为主机总线适配器驱动层可处理的小型计算机系统接口SCSI指令;
所述I/O适配器将所述访问指令发送给所述存储设备目标器,包括:所述I/O适配器通过所述主机总线适配器驱动层将所述访问指令发送给所述存储设备目标器。
9.一种存储设备访问方法,其特征在于,包括:
存储设备目标器获取访问指令,所述访问指令由I/O适配器根据获取来自至少两个虚拟机的至少两个访问请求对应的至少两个虚拟机的优先级,按照优先级顺序对应生成的,所述访问指令中携带虚拟地址信息和虚拟机的虚拟通道的标识,所述虚拟通道用于连接所述虚拟机与所述存储设备目标器,所述虚拟机与所述虚拟通道一一对应,所述虚拟地址信息用于表示待访问的存储区域在所述虚拟机中的虚拟地址;
所述存储设备目标器根据所述访问指令中携带的虚拟地址信息和所述虚拟通道的标识,确定所述待访问的存储区域在所述存储设备中的物理地址;
所述存储设备目标器根据所述访问指令和所述待访问的存储区域在所述存储设备中的物理地址,对所述待访问的存储区域进行操作。
10.根据权利要求9所述的方法,其特征在于,所述存储设备目标器根据所述访问指令中携带的虚拟地址信息和所述虚拟通道的标识,确定所述待访问的存储区域在所述存储设备中的物理地址,包括:所述存储设备目标器根据所述访问指令中携带的虚拟地址信息和所述虚拟通道的标识,查询预设的第二对应关系,确定所述待访问的存储区域在所述存储设备中的物理地址,其中,所述第二对应关系包括每个虚拟通道的标识与为所述每个虚拟通道分配的存储区域的物理地址的对应关系。
11.根据权利要求9或10所述的方法,其特征在于,所述存储设备目标器配置有至少一个缓存队列,每个缓存队列与每个虚拟通道一一对应;
所述存储设备目标器获取所述访问指令之后,进一步包括:所述存储设备目标器将所述访问指令放入所述虚拟机的虚拟通道对应的第二缓存队列。
12.根据权利要求9所述的方法,其特征在于,若所述存储设备目标器获取到来自至少两个虚拟机的至少两个访问指令,所述存储设备目标器确定所述待访问的存储区域在所述存储设备中的物理地址,包括:所述存储设备目标器根据所述至少两个访问指令对应的至少两个虚拟机的优先级,按照优先级顺序先确定优先级高的虚拟机的待访问的存储区域在所述存储设备中的物理地址,再确定优先级低的虚拟机的待访问的存储区域在所述存储设备中的物理地址。
13.根据权利要求9所述的方法,其特征在于,若所述存储设备目标器获取到来自至少两个虚拟机的至少两个访问指令,所述存储设备目标器确定所述待访问的存储区域在所述存储设备中的物理地址,包括:所述存储设备目标器根据获取到所述至少两个访问指令的时间先后顺序,先确定先接收到的访问指令对应的待访问的存储区域在所述存储设备中的物理地址,再确定后接收到的访问指令对应的待访问的存储区域在所述存储设备中的物理地址。
14.根据权利要求9所述的方法,其特征在于,所述存储设备目标器根据所述访问指令和所述待访问的存储区域在所述存储设备中的物理地址,对所述待访问的存储区域进行操作之后,进一步包括:所述存储设备目标器返回反馈消息,所述反馈消息包括所述访问指令的执行结果和所述虚拟机的虚拟通道的标识。
15.一种存储设备访问装置,其特征在于,应用于计算机系统,所述计算机系统上运行有虚拟机,包括:
获取单元,用于获取获取来自至少两个虚拟机的至少两个访问请求,所述访问请求中携带待访问的存储区域的虚拟地址信息;
生成单元,用于根据所述至少两个访问请求对应的至少两个虚拟机的优先级,按照优先级顺序生成对应的访问指令,所述访问指令中携带所述虚拟地址信息和所述虚拟机的虚拟通道的标识,其中,所述虚拟通道用于连接所述虚拟机与存储设备目标器,所述虚拟机与所述虚拟通道一一对应,所述存储设备目标器用于管理对所述存储设备的访问操作;
发送单元,用于将所述访问指令发送给所述存储设备目标器。
16.根据权利要求15所述的装置,其特征在于,所述生成单元根据所述访问请求生成访问指令之前,还用于:根据所述虚拟机的标识查询预设的第一对应关系,确定所述虚拟通道的标识,其中,所述第一对应关系包括每台虚拟机的标识与每个虚拟通道的标识的对应关系。
17.根据权利要求15或16所述的装置,其特征在于,所述装置配置有至少一个缓存队列,每个缓存队列与每个虚拟通道一一对应;
所述获取单元获取来自所述虚拟机的所述访问请求之后,还用于:将所述访问请求放入所述虚拟机的虚拟通道对应的第一缓存队列。
18.根据权利要求15所述的装置,其特征在于,若所述获取单元获取到来自至少两个虚拟机的至少两个访问请求,所述生成单元用于根据所述访问请求生成访问指令,包括:所述生成单元用于按照优先级顺序先生成优先级高的虚拟机对应的访问指令,再生成优先级低的虚拟机对应的访问指令。
19.根据权利要求15所述的装置,其特征在于,若所述获取单元获取到来自至少两个虚拟机的至少两个访问请求,所述生成单元用于根据所述访问请求生成访问指令,包括:所述生成单元用于根据获取到所述至少两个访问请求的时间先后顺序,先生成先接收到的访问请求对应的访问指令,再生成后接收到的访问请求对应的访问指令。
20.根据权利要求15所述的装置,其特征在于,所述发送单元将所述访问指令发送给所述存储设备目标器之后,所述获取单元还用于:获取来自所述存储设备目标器的所述访问指令的反馈消息,所述反馈消息包含所述访问指令的执行结果和所述虚拟机的虚拟通道的标识;
所述发送单元还用于:根据所述虚拟通道的标识确定所述虚拟机,并将所述访问指令的执行结果发送给所述虚拟机。
21.根据权利要求20所述的装置,其特征在于,所述获取单元用于获取来自虚拟机的访问请求,包括:所述获取单元用于接收来自所述虚拟机的第一门铃通知,并从与所述虚拟机共用的I/O共享环中获取所述访问请求,所述访问请求由所述虚拟机放入所述I/O共享环,所述第一门铃通知用于指示所述I/O共享环有访问请求到达;
所述发送单元用于将所述访问指令的执行结果发送给所述虚拟机,包括:所述发送单元用于将所述访问请求的执行结果放入与所述虚拟机共用的I/O共享环,并向所述虚拟机发送第二门铃通知,所述第二门铃通知用于指示所述I/O共享环有执行结果到达。
22.根据权利要求15所述的装置,其特征在于,所述访问指令为主机总线适配器驱动层可处理的小型计算机系统接口SCSI指令;
所述发送单元用于将所述访问指令发送给所述存储设备目标器,包括:所述发送单元用于通过所述主机总线适配器驱动层将所述访问指令发送给所述存储设备目标器。
23.一种存储设备访问装置,其特征在于,用于管理虚拟机对存储设备的访问操作,包括:
获取单元,用于获取访问指令,所述访问指令由I/O适配器根据获取来自至少两个虚拟机的至少两个访问请求对应的至少两个虚拟机的优先级,按照优先级顺序对应生成的,所述访问指令中携带虚拟地址信息和所述虚拟机的虚拟通道的标识,所述虚拟通道用于连接虚拟机与所述装置,所述虚拟机与所述虚拟通道一一对应,所述虚拟地址信息用于表示待访问的存储区域在所述虚拟机中的虚拟地址;
确定单元,用于根据所述访问指令中携带的虚拟地址信息和所述虚拟通道的标识,确定所述待访问的存储区域在所述存储设备中的物理地址;
处理单元,用于根据所述访问指令和所述待访问的存储区域在所述存储设备中的物理地址,对所述待访问的存储区域进行操作。
24.根据权利要求23所述的装置,其特征在于,所述确定单元用于根据所述访问指令中携带的虚拟地址信息和所述虚拟通道的标识,确定所述待访问的存储区域在所述存储设备中的物理地址,包括:所述确定单元用于根据所述访问指令中携带的虚拟地址信息和所述虚拟通道的标识,查询预设的第二对应关系,确定所述待访问的存储区域在所述存储设备中的物理地址,其中,所述第二对应关系包括每个虚拟通道的标识与为所述每个虚拟通道分配的存储区域的物理地址的对应关系。
25.根据权利要求23或24所述的装置,其特征在于,所述装置配置有至少一个缓存队列,每个缓存队列与每个虚拟通道一一对应;
所述获取单元获取所述访问指令之后之后,还用于:将所述访问指令放入所述虚拟机的虚拟通道对应的第二缓存队列之前。
26.根据权利要求23所述的装置,其特征在于,若所述获取单元获取到来自至少两个虚拟机的至少两个访问指令,所述确定单元用于确定所述待访问的存储区域在所述存储设备中的物理地址,包括:所述确定单元用于根据所述至少两个访问指令对应的至少两个虚拟机的优先级,按照优先级顺序先确定优先级高的虚拟机的待访问的存储区域在所述存储设备中的物理地址,再确定优先级低的虚拟机的待访问的存储区域在所述存储设备中的物理地址。
27.根据权利要求23所述的装置,其特征在于,若所述获取单元获取到来自至少两个虚拟机的至少两个访问指令,所述确定单元用于确定所述待访问的存储区域在所述存储设备中的物理地址,包括:所述确定单元用于根据所述获取单元获取到所述至少两个访问指令的时间先后顺序,先确定先接收到的访问指令对应的待访问的存储区域在所述存储设备中的物理地址,再确定后接收到的访问指令对应的待访问的存储区域在所述存储设备中的物理地址。
28.根据权利要求23所述的装置,其特征在于,所述处理单元根据所述访问指令和所述待访问的存储区域在所述存储设备中的物理地址,对所述待访问的存储区域进行操作之后,还用于:返回反馈消息,所述反馈消息包含所述访问指令的执行结果和所述虚拟机的虚拟通道的标识。
29.一种存储设备访问系统,其特征在于,包括I/O适配器和存储设备目标器,
所述I/O适配器用于获取来自至少两个虚拟机的至少两个访问请求,所述访问请求中携带待访问的存储区域的虚拟地址信息,根据所述至少两个访问请求对应的至少两个虚拟机的优先级,按照优先级顺序生成对应的访问指令,并将所述访问指令发送给所述存储设备目标器,所述访问指令中携带所述虚拟地址信息和所述虚拟机的虚拟通道的标识,所述虚拟通道用于连接所述虚拟机与存储设备目标器,所述虚拟机与所述虚拟通道一一对应;
所述存储设备目标器用于获取所述访问指令,根据所述访问指令中携带的虚拟地址信息和所述虚拟通道的标识,确定所述待访问的存储区域在所述存储设备中的物理地址,并根据所述访问指令和所述待访问的存储区域在所述存储设备中的物理地址,对所述待访问的存储区域进行操作。
30.根据权利要求29所述的系统,其特征在于,所述I/O适配器根据所述访问请求生成访问指令之前,还用于:根据所述虚拟机的标识查询预设的第一对应关系,确定所述虚拟通道的标识,其中,所述第一对应关系包括每台虚拟机的标识与每个虚拟通道的标识的对应关系。
31.根据权利要求29或30所述的系统,其特征在于,所述I/O适配器配置有至少一个缓存队列,每个缓存队列与每个虚拟通道一一对应;
所述I/O适配器获取来自所述虚拟机的所述访问请求之后,还用于:将所述访问请求放入所述虚拟机的虚拟通道对应的第一缓存队列。
32.根据权利要求29所述的系统,其特征在于,若所述I/O适配器获取到来自至少两个虚拟机的至少两个访问请求,所述I/O适配器用于根据所述访问请求生成访问指令,包括:所述I/O适配器用于按照优先级顺序先生成优先级高的虚拟机对应的访问指令,再生成优先级低的虚拟机对应的访问指令。
33.根据权利要求29所述的系统,其特征在于,若所述I/O适配器获取到来自至少两个虚拟机的至少两个访问请求,所述I/O适配器用于根据所述访问请求生成访问指令,包括:所述I/O适配器用于根据获取到所述至少两个访问请求的时间先后顺序,先生成先接收到的访问请求对应的访问指令,再生成后接收到的访问请求对应的访问指令。
34.根据权利要求29所述的系统,其特征在于,所述I/O适配器将所述访问指令发送给所述存储设备目标器之后,还用于:获取来自所述存储设备目标器的反馈消息,所述反馈消息包含所述访问指令的执行结果和所述虚拟机的虚拟通道的标识;所述I/O适配器根据所述虚拟通道的标识确定所述虚拟机,并将所述访问指令的执行结果发送给所述虚拟机。
35.根据权利要求34所述的系统,其特征在于,所述I/O适配器用于获取来自虚拟机的访问请求,包括:所述I/O适配器用于接收来自所述虚拟机的第一门铃通知,并从与所述虚拟机共用的I/O共享环中获取所述访问请求,所述访问请求由所述虚拟机放入所述I/O共享环,所述第一门铃通知用于指示所述I/O共享环有访问请求到达;
所述I/O适配器用于将所述访问指令的执行结果发送给所述虚拟机,包括:所述I/O适配器用于将所述访问请求的执行结果放入与所述虚拟机共用的I/O共享环,并向所述虚拟机发送第二门铃通知,所述第二门铃通知用于指示所述I/O共享环有执行结果到达。
36.根据权利要求29所述的系统,其特征在于,所述访问指令为主机总线适配器驱动层可处理的小型计算机系统接口SCSI指令;
所述I/O适配器用于将所述访问指令发送给所述存储设备目标器,包括:所述I/O适配器用于通过所述主机总线适配器驱动层将所述访问指令发送给所述存储设备目标器。
37.根据权利要求29所述的系统,其特征在于,所述存储设备目标器用于根据所述访问指令中携带的虚拟地址信息和所述虚拟通道的标识,确定所述待访问的存储区域在所述存储设备中的物理地址,包括:所述存储设备目标器用于根据所述访问指令中携带的虚拟地址信息和所述虚拟通道的标识,查询预设的第二对应关系,确定所述待访问的存储区域在所述存储设备中的物理地址,其中,所述第二对应关系包括每个虚拟通道的标识与为所述每个虚拟通道分配的存储区域的物理地址的对应关系。
38.根据权利要求29或37所述的系统,其特征在于,所述存储设备目标器配置有至少一个缓存队列,每个缓存队列与每个虚拟通道一一对应;
所述存储设备目标器获取所述访问指令之后,还用于:将所述访问指令放入所述虚拟机的虚拟通道对应的第二缓存队列。
39.根据权利要求29所述的系统,其特征在于,若所述存储设备目标器获取到来自至少两个虚拟机的至少两个访问指令,所述存储设备目标器用于确定所述待访问的存储区域在所述存储设备中的物理地址,包括:所述存储设备目标器用于根据所述至少两个访问指令对应的至少两个虚拟机的优先级,按照优先级顺序先确定优先级高的虚拟机的待访问的存储区域在所述存储设备中的物理地址,再确定优先级低的虚拟机的待访问的存储区域在所述存储设备中的物理地址。
40.根据权利要求29所述的系统,其特征在于,若所述存储设备目标器获取到来自至少两个虚拟机的至少两个访问指令,所述存储设备目标器用于确定所述待访问的存储区域在所述存储设备中的物理地址,包括:所述存储设备目标器用于根据获取到所述至少两个访问指令的时间先后顺序,先确定先接收到的访问指令对应的待访问的存储区域在所述存储设备中的物理地址,再确定后接收到的访问指令对应的待访问的存储区域在所述存储设备中的物理地址。
41.根据权利要求29所述的系统,其特征在于,所述存储设备目标器根据所述访问指令和所述待访问的存储区域在所述存储设备中的物理地址,对所述待访问的存储区域进行操作之后,还用于:返回反馈消息,所述反馈消息包含所述访问指令的执行结果和所述虚拟机的虚拟通道的标识。
42.一种计算机可读介质,其特征在于,包括计算机执行指令,当计算机的处理器执行所述计算机执行指令时,所述计算机执行权利要求1-8任一项所述的方法。
43.一种存储设备访问装置,其特征在于,包括:处理器、存储器、总线和通信接口;
所述存储器用于存储执行指令,所述处理器与所述存储器通过所述总线连接,当所述存储设备访问转置运行时,所述处理器执行所述存储器存储的所述执行指令,以使所述装置执行权利要求1-8任一项所述的方法。
44.一种计算机可读介质,其特征在于,包括计算机执行指令,当计算机的处理器执行所述计算机执行指令时,所述计算机执行权利要求9-14任一项所述的方法。
45.一种存储设备访问装置,其特征在于,包括:处理器、存储器、总线和通信接口;
所述存储器用于存储执行指令,所述处理器与所述存储器通过所述总线连接,当所述存储设备访问装置运行时,所述处理器执行所述存储器存储的所述执行指令,以使所述装置执行权利要求9-14任一项所述的方法。
CN201580002150.9A 2015-10-21 2015-10-21 一种存储设备访问方法、装置和系统 Active CN107209681B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010517281.3A CN111831588A (zh) 2015-10-21 2015-10-21 一种存储设备访问方法、装置和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2015/092457 WO2017066944A1 (zh) 2015-10-21 2015-10-21 一种存储设备访问方法、装置和系统

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202010517281.3A Division CN111831588A (zh) 2015-10-21 2015-10-21 一种存储设备访问方法、装置和系统

Publications (2)

Publication Number Publication Date
CN107209681A CN107209681A (zh) 2017-09-26
CN107209681B true CN107209681B (zh) 2020-07-07

Family

ID=58556590

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202010517281.3A Pending CN111831588A (zh) 2015-10-21 2015-10-21 一种存储设备访问方法、装置和系统
CN201580002150.9A Active CN107209681B (zh) 2015-10-21 2015-10-21 一种存储设备访问方法、装置和系统

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202010517281.3A Pending CN111831588A (zh) 2015-10-21 2015-10-21 一种存储设备访问方法、装置和系统

Country Status (4)

Country Link
US (2) US10713074B2 (zh)
EP (1) EP3206124B1 (zh)
CN (2) CN111831588A (zh)
WO (1) WO2017066944A1 (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10838852B2 (en) 2015-04-17 2020-11-17 Samsung Electronics Co., Ltd. System and method to extend NVME queues to user space
US11036533B2 (en) 2015-04-17 2021-06-15 Samsung Electronics Co., Ltd. Mechanism to dynamically allocate physical storage device resources in virtualized environments
CN107526529B (zh) * 2016-06-21 2020-08-07 伊姆西Ip控股有限责任公司 用于虚拟机的方法和装置
US11693792B2 (en) * 2018-01-04 2023-07-04 Google Llc Infernal storage in cloud disk to support encrypted hard drive and other stateful features
CN108536515B (zh) * 2018-03-02 2021-10-01 武汉噢易云计算股份有限公司 Vdi的虚拟机播放客户机的音乐cd的方法及系统
CN109117247B (zh) * 2018-07-18 2021-12-07 上海交通大学 一种基于异构多核拓扑感知的虚拟资源管理系统及方法
WO2020028782A1 (en) * 2018-08-03 2020-02-06 Nvidia Corporation Secure access of virtual machine memory
CN109240802B (zh) * 2018-09-21 2022-02-18 北京百度网讯科技有限公司 请求处理方法和装置
US11099993B2 (en) * 2018-10-15 2021-08-24 Texas Instruments Incorporated Multi-processor bridge with cache allocate awareness
CN109684029A (zh) * 2018-11-02 2019-04-26 新华三云计算技术有限公司 存储内容访问方法、装置、电子设备及计算机存储介质
CN109857519B (zh) * 2019-01-15 2021-05-07 新华三云计算技术有限公司 虚拟磁盘的处理方法及相关装置
US11379246B2 (en) * 2019-07-24 2022-07-05 EMC IP Holding Company LLC Automatic configuration of multiple virtual storage processors
CN110633055B (zh) * 2019-09-18 2023-05-16 东软集团股份有限公司 一种访问rpmb分区的方法、装置及相关设备
CN111290829B (zh) * 2020-01-15 2023-05-02 海光信息技术股份有限公司 访问控制模组、虚拟机监视器及访问控制方法
CN111737176B (zh) * 2020-05-11 2022-07-15 瑞芯微电子股份有限公司 一种基于pcie数据的同步装置及驱动方法
CN112199309B (zh) * 2020-10-10 2022-03-15 北京泽石科技有限公司 基于dma引擎的数据读取方法、装置和数据传输系统
CN112527698B (zh) * 2020-12-04 2024-03-22 联想(北京)有限公司 一种处理方法、装置及设备
CN112732269A (zh) * 2021-01-15 2021-04-30 北京博雅慧视智能技术研究院有限公司 一种应用于avs2硬件编码器的物理地址的访问方法及装置
CN113365105B (zh) * 2021-06-30 2022-12-06 北京奇艺世纪科技有限公司 一种内容生产控制方法、装置、设备及存储介质
CN113765908B (zh) * 2021-09-01 2023-07-07 南京炫佳网络科技有限公司 一种数据获取方法、装置、设备及存储介质
CN114185650B (zh) * 2021-12-14 2023-07-25 平安壹账通云科技(深圳)有限公司 Linux系统下识别SCSI设备的方法、系统、设备及存储介质
CN114637609B (zh) * 2022-05-20 2022-08-12 沐曦集成电路(上海)有限公司 基于冲突检测的gpu的数据获取系统
CN115185880B (zh) * 2022-09-09 2022-12-09 南京芯驰半导体科技有限公司 一种数据存储方法及装置
CN116028164B (zh) * 2023-03-29 2023-06-20 阿里云计算有限公司 设备虚拟化方法以及装置
CN117331702A (zh) * 2023-10-31 2024-01-02 中科驭数(北京)科技有限公司 请求分配方法、装置、电子设备及存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5890220A (en) * 1991-02-05 1999-03-30 Hitachi, Ltd. Address conversion apparatus accessible to both I/O devices and processor and having a reduced number of index buffers
US5996026A (en) * 1995-09-05 1999-11-30 Hitachi, Ltd. Method and apparatus for connecting i/o channels between sub-channels and devices through virtual machines controlled by a hypervisor using ID and configuration information
US20050080982A1 (en) * 2003-08-20 2005-04-14 Vasilevsky Alexander D. Virtual host bus adapter and method
US7689800B2 (en) * 2005-05-12 2010-03-30 Microsoft Corporation Partition bus
US8095675B2 (en) * 2006-07-20 2012-01-10 Oracle America, Inc. Priority and bandwidth specification at mount time of NAS device volume
US8966476B2 (en) * 2008-05-28 2015-02-24 Hewlett-Packard Development Company, L.P. Providing object-level input/output requests between virtual machines to access a storage subsystem
US9389895B2 (en) * 2009-12-17 2016-07-12 Microsoft Technology Licensing, Llc Virtual storage target offload techniques
US8612633B2 (en) * 2010-03-31 2013-12-17 Microsoft Corporation Virtual machine fast emulation assist
CN102426557A (zh) * 2011-10-27 2012-04-25 中国科学院计算技术研究所 虚拟化环境中 pci 设备的分离访问方法及其系统
KR101850318B1 (ko) * 2011-12-09 2018-04-20 삼성전자주식회사 가상 메모리 관리 장치 및 방법
CN102662869B (zh) * 2012-04-01 2015-08-26 龙芯中科技术有限公司 虚拟机中的内存访问方法和装置及查找器
CN103793330B (zh) * 2012-10-31 2017-03-01 国际商业机器公司 在虚拟机环境中进行数据交换的方法和装置
US9052835B1 (en) * 2013-12-20 2015-06-09 HGST Netherlands B.V. Abort function for storage devices by using a poison bit flag wherein a command for indicating which command should be aborted
KR101699377B1 (ko) * 2014-07-02 2017-01-26 삼성전자주식회사 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법
US10838852B2 (en) * 2015-04-17 2020-11-17 Samsung Electronics Co., Ltd. System and method to extend NVME queues to user space

Also Published As

Publication number Publication date
US20200278880A1 (en) 2020-09-03
EP3206124A4 (en) 2018-01-10
EP3206124B1 (en) 2020-01-08
US10713074B2 (en) 2020-07-14
EP3206124A1 (en) 2017-08-16
US20170329625A1 (en) 2017-11-16
WO2017066944A1 (zh) 2017-04-27
CN107209681A (zh) 2017-09-26
CN111831588A (zh) 2020-10-27

Similar Documents

Publication Publication Date Title
CN107209681B (zh) 一种存储设备访问方法、装置和系统
US9448728B2 (en) Consistent unmapping of application data in presence of concurrent, unquiesced writers and readers
JP5608243B2 (ja) 仮想化環境においてi/o処理を行う方法および装置
US11256445B2 (en) Virtual disk file format conversion method and apparatus
US7739684B2 (en) Virtual direct memory access crossover
WO2017024783A1 (zh) 一种虚拟化方法、装置和系统
US8645594B2 (en) Driver-assisted base address register mapping
US20140164666A1 (en) Server and method for sharing peripheral component interconnect express interface
US20210224210A1 (en) Information processing method, physical machine, and pcie device
JP2011512591A (ja) 入出力処理システムにおいて間接データ・アドレッシングを提供するための装置、方法、およびコンピュータ・プログラム
US11194735B2 (en) Technologies for flexible virtual function queue assignment
JP6040101B2 (ja) ストレージ装置の制御方法、ストレージ装置及び情報処理装置
JP2008500619A (ja) 論理パーティションにおけるメモリへのアクセス
KR101716715B1 (ko) 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치
US20120198443A1 (en) Storage reclamation systems and methods
WO2016119322A1 (zh) 确定读写路径的方法和装置
CN113168464A (zh) 虚拟化计算环境中的安全存储器访问
CN113312140A (zh) 虚拟可信平台模块
CN114417373A (zh) 一种NVMe-oF用户态客户端的数据访问方法和装置
WO2020177567A1 (zh) 一种迁移数据的方法、装置及系统
KR20220061983A (ko) 입출력 메모리 관리 유닛으로부터 게스트 운영 시스템으로의 인터럽트 제공
KR20220001016A (ko) 게스트 운영체제에 입출력 메모리 관리 유닛 레지스터 복사본을 제공하는 방법
US20070226451A1 (en) Method and apparatus for full volume mass storage device virtualization
KR102532099B1 (ko) 가상 머신을 지원하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법
JPWO2018173300A1 (ja) I/o制御方法およびi/o制御システム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant