CN111831234B - 用于虚拟机的方法和装置 - Google Patents
用于虚拟机的方法和装置 Download PDFInfo
- Publication number
- CN111831234B CN111831234B CN202010735906.3A CN202010735906A CN111831234B CN 111831234 B CN111831234 B CN 111831234B CN 202010735906 A CN202010735906 A CN 202010735906A CN 111831234 B CN111831234 B CN 111831234B
- Authority
- CN
- China
- Prior art keywords
- virtual
- request
- request queue
- requests
- scheduling
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 83
- 238000003860 storage Methods 0.000 claims description 34
- 238000004590 computer program Methods 0.000 claims description 24
- 230000004044 response Effects 0.000 claims description 16
- 238000001514 detection method Methods 0.000 claims description 7
- 238000012544 monitoring process Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 description 27
- 238000010586 diagram Methods 0.000 description 14
- 238000012545 processing Methods 0.000 description 12
- 238000013459 approach Methods 0.000 description 9
- 238000009826 distribution Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开的实施例涉及用于虚拟机的方法和装置。一种在虚拟机中实施的方法包括:接收对虚拟机的虚拟盘进行I/O操作的I/O请求;检测虚拟盘与用于虚拟机的虚拟机监管系统的虚拟存储设备之间的关联关系;以及基于关联关系来调度I/O请求。通过本公开的实施例,可以高效地在虚拟环境中实现应用感知的I/O QoS,并且可以将虚拟版本的IT解决方案移动到不同的虚拟平台。根据本公开的实施例的方法和装置具有良好的灵活性和兼容性。
Description
本申请是申请日为2016年6月21日、申请号为201610452126.1、发明名称为“用于虚拟机的方法和装置”的发明专利申请的分案申请。
技术领域
本公开一般性地涉及虚拟机系统,并且更特别地,涉及一种用于虚拟机的方法和装置。
背景技术
现今,随着虚拟化技术变得越来越流行,物理平台上的许多信息技术(information technology,IT)解决方案正在被移动到虚拟环境中。但是,这些新的虚拟版本解决方案仍然面临许多挑战。在这些挑战之中,与输入/输出I/O(input/output)有关的服务质量(Quality of Service,QoS)被考虑为是一个关键的问题。
通常,虚拟环境中包括I/O堆栈。客机操作系统(guest operation system)中的虚拟盘是从虚拟机监管系统(hypervisor)中的数据存储(Datastore)中分配的。数据存储指示了来自虚拟环境存储池的虚拟存储设备,它可以是虚拟机文件系统(virtual machinefile system,VMFS)文件或者网络文件系统(network file system,NFS)文件。在本文的上下中,使用术语“数据存储”可互换地表示虚拟机监管系统中的虚拟存储设备。
对于I/O QoS而言,I/O堆栈中的不同层关注于不同的方面。例如,虚拟机监管系统I/O堆栈在虚拟机层级上调度I/O,这意味着可以为具有较高优先级的虚拟机保留较大的I/O带宽。后端存储设备在虚拟机监管系统层级上调度I/O,其决定在不同虚拟机监管系统之间共享的I/O带宽。此外,在虚拟机内部,还需要在不同的进程之间管理I/O QoS,这样的I/O调度可以称之为应用感知的I/O调度,即根据I/O的用途和/或来源等因素进行调度。目前在虚拟环境中,尚不存在针对应用感知I/O QoS的行之有效的解决方案。
发明内容
本公开的实施例提供了一种用于虚拟机的方法和装置。
根据本公开的第一方面,提供了一种在虚拟机中实施的方法。该方法包括:接收对虚拟机的虚拟盘进行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请求队列的特性,以及与第二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操作性能和每个虚拟盘的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操作。
在一些实施例中,至少一个存储器和计算机程序代码可以进一步被配置为,与处理器一起,促使装置基于以下至少一项进行排序来对第二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操作优先级和每个虚拟盘的I/O操作优先级的设置;以及向用户接口发送每种类型的I/O操作性能和每个虚拟盘的I/O操作,以便用户调整设置。
在一些实施例中,检测可以由检测单元执行,并且调度可以由调度单元执行,至少一个存储器和计算机程序代码可以进一步被配置为,与处理器一起,促使装置至少:响应于检测单元检测到关联关系,将附接至空I/O调度器的虚拟盘附接至调度单元。
根据本公开的第三方面,提供了一种计算机程序产品。该计算机程序产品被有形地存储在非易失性计算机可读介质上并且包括机器可执行指令,机器可执行指令在被执行时使机器执行根据第一方面的方法的步骤。
附图说明
通过参考附图阅读下文的详细描述,本公开的实施例的上述以及其他目的、特征和优点将变得容易理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施例,其中:
图1示意性地示出了本公开的实施例可以被实施在其中的虚拟环境的示图。
图2示意性地示出了不同的虚拟盘共享相同虚拟存储设备的场景的示图。
图3示意性地示出了根据本公开的实施例的在虚拟机中实施的方法的流程图。
图4示意性地示出了根据本公开的实施例的在虚拟环境中的应用感知的I/O调度的系统框图。
图5示意性地示出了根据本公开的实施例的传入I/O以及I/O响应的处理过程的流程图。
图6示意性地示出了根据本公开的实施例的在I/O调度器内部的调度过程的流程图。
图7示意性地示出了根据本公开的实施例的在虚拟机中实施的装置的框图。
图8示意性地示出了一种可以被用来实施本公开的实施例的设备的框图。
贯穿所有附图,相同或者相似的参考标号被用来表示相同或者相似的元件。
具体实施方式
下面将参考附图中所示出的若干示例性实施例来描述本公开的原理和精神。应当理解,描述这些具体的实施例仅是为了使本领域的技术人员能够更好地理解并实现本公开,而并非以任何方式限制本公开的范围。
图1示意性地示出了本公开的实施例可以被实施在其中的虚拟环境100的示图。如图1中所示出的,虚拟环境100可以包括客机操作系统OS 110、虚拟机监管系统(Hypervisor)120、以及存储设备130。
进一步地,客机OS 110可以包括应用层111、文件系统层112、块存储层113、I/O调度器114、以及小型计算机系统接口SCSI(Small Computer System Interface)驱动器115。另外,虚拟机监管系统120可以包括虚拟存储设备121以及虚拟机监管系统的I/O堆栈122。虚拟存储设备121可以包括虚拟机文件系统VMFS 123和网络文件系统NFS 124。此外,存储设备130可以例如是独立冗余磁盘阵列(Redundant Arrays of Independent Disks,RAID)。这些具体单元或组件的功能和一般运行方式为本领域所知,此处对此不再赘述。
客机OS 110的I/O堆栈主要关注于对I/O请求进行调度。在应用感知的I/O调度中,也就是根据I/O的用途和/或来源等因素进行调度的过程中,可能存在两种示例的调度场景。在一种调度场景中,可能具有一些用于管理性应用或者文件系统的关键元数据,这些元数据I/O操作可以阻挡其他过程或者对整个系统性能具有重大影响,所以需要向这些类型的I/O提供高优先级。
在另一种调度场景中,与操作系统相关的I/O对于系统性能和用户体验而言通常是重要的。与普通的业务I/O相比,与OS相关的I/O需要较高的优先级,以便提供较大的I/O带宽。因此,许多已有的IT解决方案使用了系统盘,在系统盘上仅部署OS数据从而将OS数据与普通的业务数据分离开。
当前,在物理平台上,已经存在一些针对应用感知I/O QoS的解决方案。例如,可以针对一个物理存储盘采用一个I/O调度器。该I/O调度器向每种类型的I/O提供所配置的权重,较大的权重指示了在QoS中的较高优先级。但是在虚拟环境中,这种解决方案难以取得良好的效果。这是因为它不能识别不同的虚拟盘是否来自相同的虚拟存储设备。
图2示意性地示出了不同的虚拟盘共享相同虚拟存储设备的场景200的示图。如图2中所示出的,元数据210可能需要进行与虚拟盘A 215的I/O操作,而用户数据220可能需要进行与虚拟盘B 225的I/O操作。在图2的示例场景中,虚拟盘A 215与虚拟盘B 225共享相同的虚拟存储设备230。
假设用户希望以高优先级来调度元数据210,上述传统的解决方案在存储盘A 215内可以工作良好。但是,当元数据210与来自共享相同虚拟存储设备230的存储盘B 225的用户数据220相混合时,针对元数据210的高优先级将会变得没有意义。
因此,如果没有与虚拟机监管系统120和底层存储有关的信息,则虚拟环境中的I/O QoS几乎不能实现。当这一问题发生时,可能会引起虚拟系统的性能恶化并且甚至可能导致系统崩溃的问题。
因为通常不可能假定每个用户都将虚拟盘部署在不同的虚拟存储设备上,在现实的生产环境中这一问题是难以避免的。事实上,即使是将不同的虚拟盘部署在不同的虚拟存储设备上,有经验的用户仍然需要防止虚拟存储设备来自相同的后端存储设备。总的来说,上述问题是普遍性的并且经常导致不期望的结果。
针对这种问题已经存在一些已有的方法,但是这些方法都具有各自的缺点。一种方法是使用空(NOOP,即No Operation的缩写)I/O调度器用于客机OS。这意味着在客机OS中没有针对I/O调度的操作,因为让虚拟机监管系统的I/O调度器来完成这一任务可能是更好的。但是虚拟机监管系统具有很少的与客机OS中的过程有关的信息,所以它不能针对应用感知的I/O QoS进行工作。另一种方法是推荐用户手动地将不同的虚拟盘部署在不同的虚拟存储设备上。但是这种方法更多地需要来自用户的经验和大量的额外工作,并且缺乏对于解决方案而言的灵活性和智能。
此外,在某些虚拟机平台上针对这一问题配置了相关的参数。如果没有这样的参数,则所有的虚拟盘都共享单个的I/O请求队列。但是,通过这个参数,每个虚拟盘具有它自己的请求队列并且可以如所预期地被调度。这种方法在一些情况下工作良好,但是它也具有自身的局限。首先,这种方法仅能够被VMFS所支持而不能被NFS存储支持。其次,该方法仅在某些虚拟机平台上被支持,而在其他的虚拟机平台上不被支持。第三,该方法没有利用来自应用的I/O类型信息,不能进行基于I/O类型的I/O调度。
返回参考图1,针对上述各种传统方法的缺点或者不足,在本公开的实施例中,提出了一种在虚拟机中的实施的应用感知I/O调度方法和装置来解决这些问题。本公开的实施例例如可以被实施在客机OS 110中。
特别地,虚拟机中的哪些虚拟盘共享相同虚拟机监管系统120中的虚拟存储设备121的相关信息可以被检测并且被报告给客机I/O110中的I/O调度器114。然后,客机I/O110的I/O调度器114可以在虚拟存储设备121或后端存储设备130的视角来调度不同的虚拟盘的I/O。通过这样的方式,解决了上述各种传统方法中的问题。
此外,两种类型的I/O调度策略可以被支持,一种是基于I/O类型的调度策略,另一种是基于虚拟盘队列的调度策略。这两种调度策略对于生产环境而言是有用的。通过本公开的实施例,可以在虚拟环境中实现应用感知的I/O QoS。更为重要的是,它可以帮助将虚拟版本的IT解决方案移动到不同的虚拟平台,其显示出了良好的灵活性和兼容性。下文首先结合图3和图4来描述根据本公开的实施例的在虚拟机中实施的方法。
图3示意性地示出了根据本公开的实施例的在虚拟机中实施的方法300的流程图。在一些实施例中,方法300可以由图1中所描绘的客机OS 110中的某些单元或组件来执行,这些单元或组件具体地被描绘在图4中。图4示意性地示出了根据本公开的实施例的在虚拟环境中的应用感知的I/O调度的系统400的框图。在一些实施例中,系统400描绘了图3中的方法300可以被实施在其中的系统,具体地描绘了实施方法300的各个步骤的单元或组件。应当注意的是,图4所描绘的仅是一种示例,无意以任何方式限制本公开的实施例。为了更好地描述本公开的操作原理,下面将结合图4来描述图3中的方法300。
如图4中所示出的,系统400可以包括客机OS 110和虚拟机监管系统120。客机OS110可以包括检测器410、I/O堆栈415、以及设置单元420。如上文所提到的,虚拟机监管系统120可以包括虚拟存储设备121,虚拟存储设备121可以包括VMFS 123和NFS 124。I/O堆栈415可以包括块存储层113、I/O调度器114和SCSI驱动器115。设置单元420可以包括构建器421、策略选择器422、权重配置单元423、统计收集器424、以及节流阈值单元425。块存储层113可以具体包括贴标签单元430、提交I/O单元435、以及每个虚拟盘的队列形成单元440。I/O调度器114可以具体包括包装器445、每个虚拟存储设备的队列形成单元450、节流单元455、基于I/O类型的策略调度单元460、基于虚拟盘队列调度单元465、以及I/O分发器470。下面结合图3的方法步骤来具体地描述系统400中的各个单元或组件执行的操作以及交互过程。
图3中所示的方法300开始于步骤310,在此接收对虚拟机的虚拟盘进行I/O操作的I/O请求。例如,在图4中,块存储层113可以从较高的应用层111和/或文件系统112接收I/O请求,这些I/O请求可以是对运行客机OS 110的虚拟机的虚拟盘(未示出)进行I/O操作的I/O请求。
在一些实施例中,可以将I/O请求组织为与相应的虚拟盘相关联的I/O请求队列。讨论方便起见,可将其称为“第一I/O请求队列”。例如,块存储层113中的每个虚拟盘的队列形成单元440可以根据传入的I/O请求所针对的虚拟盘来将I/O请求组织到相应的虚拟盘的I/O请求队列中,诸如虚拟盘A的I/O请求队列、虚拟盘B的I/O请求队列、虚拟盘C的I/O请求队列,等等。
在这样的实施例中,可以基于第一I/O请求队列对I/O请求进行合并。本领域的技术人员可以理解,I/O请求通常对应于虚拟机的虚拟盘,因此在接收这些I/O请求的过程中将它们组织为与相应的虚拟盘相关联的第一I/O请求队列是方便的,并且有利于进行I/O合并以改进虚拟环境中的I/O性能。
在一些实施例中,I/O合并可以在第一I/O请求队列中被完成,具体可以通过将相邻的I/O扇区(sector)进行合并而使得I/O请求的大小更大,所以I/O合并对于改进虚拟环境中的I/O性能是非常有用的。但是,I/O合并仅针对第一I/O请求队列才有意义,而对于稍后描述的每个虚拟存储设备121的第二I/O请求队列没有意义。当然,应当理解,对I/O请求的合并不是必须的。在备选实施例中,可以直接对接收到的各I/O请求进行处理而不进行合并。
附加地或者备选地,在步骤310中,块存储层113还可以通过标签单元430来为每个传入的I/O请求添加标签,该标签可以指示I/O请求所对应的I/O操作的类型,以便于后续的单元或组件可以对I/O请求进行稍后将详细描述的基于I/O类型的调度。在一些实施例中,具体的I/O类型可以匹配于上层的实施方式。具体地,块存储层113可以与文件系统112一起工作以识别每个I/O请求所对应的I/O操作的类型,然后标签单元430可以向I/O请求添加类型标签。在此之后,I/O提交单元435可以将带有类型标签的I/O请求发送给每个虚拟盘的队列形成单元440以便获得每个虚拟盘的I/O请求队列,即第一I/O请求队列。
返回参考图3,在步骤315中,检测虚拟盘与用于虚拟机的虚拟机监管系统的虚拟存储设备之间的关联关系。例如,在图4中,通过检测器410来检测运行客机OS 110的虚拟机的虚拟盘与虚拟存储设备121之间的关联关系。
在一些实施例中,客机OS 110中的检测器410可以作为用户空间的守护进程(daemon)运行。检测器410可以通过调用由虚拟机监管系统120提供的应用程序接口(Application Program Interface,API)来收集与虚拟存储设备121有关的信息。在其他的实施例中,还可以在虚拟机监管系统120上开发target来收集更多所期望的信息,从而检测器410可以通过与这个target进行通信来获得这些信息。
在检测到虚拟盘与虚拟存储设备121之间的关联关系之后,检测器410可以将该关联关系提供480给I/O调度器114,从而I/O调度器114可以基于该关联关系进行I/O调度。在一些实施例中,检测器410可以检测虚拟盘中共享相同虚拟存储设备的虚拟盘并提供480给I/O调度器114。通过获知虚拟盘与虚拟存储设备之间的关联关系,I/O调度器114可以在相同的虚拟存储设备121中实施根据本公开的实施例的应用感知I/O调度,即根据I/O的用途和/或来源等因素来进行I/O调度。
附加地或者备选地,除了检测虚拟盘与虚拟存储设备121之间的关联关系,检测器410还可以检测虚拟盘与后端存储设备130之间的附加关联关系,并且提供480给I/O调度器114。因此,I/O调度器114可以基于上述关联关系和该附加关联关系来调度I/O请求。通过这种方式,在调度I/O请求的过程中,不仅可以保证在相同的虚拟存储设备121中进行调度,还可以保证在相同的后端存储设备130中进行调度。由此,可以进一步提高虚拟机系统中的I/O性能。
仍然参考图3,在步骤320中,基于关联关系来调度I/O请求。例如,在图4中,I/O调度器114在接收到检测器410所提供480的客机OS 110的虚拟机的虚拟盘与虚拟存储设备121之间的关联关系之后,可以知晓哪些I/O请求与相同的虚拟存储设备121相关联,从而可以在相同的虚拟存储设备121之内对这些I/O请求进行调度。
在一些实施例中,I/O调度器114可以通过包装器(wrapper)445和每个虚拟存储设备121的队列形成单元450基于关联关系将I/O请求组织为与相应的虚拟存储设备121相关联的I/O请求队列,称为“第二I/O请求队列”。而后,可以对第二I/O请求队列中的I/O请求排序。
在这些实施例中,包装器445可以维持I/O请求的虚拟盘信息和虚拟存储设备信息两者,并且利用检测器410所提供480的关联关系从I/O请求所针对的虚拟盘导出I/O请求所针对的虚拟存储设备121。每个虚拟存储设备的队列形成单元450可以基于包装器445所导出的虚拟存储设备121将来自相同虚拟存储设备121的I/O请求聚集到单个I/O请求队列中,即每个虚拟存储设备121的I/O请求队列。
如上文所讨论的,因为不同的虚拟盘可能对应于相同的虚拟存储设备,而实际上在相同的虚拟存储设备内进行I/O调度可能效果会更好。因此,通过将I/O请求组织为与相应的虚拟存储设备相关联的第二I/O请求队列,然后在每个第二I/O请求队列中对I/O请求进行调度(或者排序)可以保证I/O调度的性能。当然,应当理解,将I/O请求组织到第二I/O请求队列中不是必须的。在备选实施例中,可以直接基于I/O请求相关联的虚拟存储设备对接收到的I/O请求进行调度而不进行组织。
附加地或者备选地,在一些实施例中,I/O调度器114可以通过节流单元455对第二I/O请求队列进行节流。这样的节流策略可以被用来避免底层设备的过载。但是对于根据本公开的实施例的I/O调度器114,节流单元455可以起到另一重要的作用。当它以有限的进行中I/O数目对第二I/O请求队列进行节流时,可以预期I/O的调度权重在一批I/O请求中有意义。这避免了许多批次的I/O请求在虚拟机监管系统120中混合。在这种场合,虚拟机监管系统120的I/O调度器可能严重地扰乱客机OS 110的I/O调度策略。
在这些实施例中,用户可以通过设置单元420中的节流阈值单元425来设置节流阈值。设置单元420可以将该节流阈值提供490给I/O调度器114。响应于第二I/O请求队列中的I/O请求数目达到节流阈值,节流单元455可以对第二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调度器114可以通过基于I/O类型的策略调度单元460来对第二I/O请求队列中的I/O请求进行排序。此处,基于I/O类型的策略意味着I/O调度是基于I/O类型的。如上文所描述的,每个I/O请求可以具有由块存储层113的标签单元基于它的类型所添加的标签,并且每个I/O类型可以具有用户所配置的权重。在一些实施例中,该权重可以由用户通过稍后描述的权重配置单元423来进行设置。例如,在文件系统112中,可能存在不同种类的元数据并且它们中的一些可能是关键的,从而需要以高优先级被存储到存储盘中,所以可以向这些种类的I/O指配相对较大的权重。
备选地或者附加地,I/O调度器114可以通过基于虚拟盘队列调度单元465来基于与第二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类型的策略调度单元460和基于虚拟盘队列调度单元465在一个调度轮次中可以调度预定数目的I/O请求,超出该预定数目的I/O请求可以在下一轮次中进行调度。在一些情况中,为了避免等待过长的时间以达到该预定数目,还可以设置一个轮次的到达时间窗口,如果第二I/O请求队列中的I/O请求在该时间窗口中到达,则可以在这一轮次的调度中进行调度,否则可以在下一轮次中被调度。
进一步地,第二I/O请求队列中的I/O操作的调度历史统计体现了之前批次的I/O调度情况,这种情况也可以被使用在调度过程中。例如,如果某个种类的I/O在先前的批次中已经被调度了较大的数目,那么在接下来的轮次中可以调度较少数目的该类型的I/O。类似地,与虚拟盘有关的调度历史统计等虚拟盘的特性可以被使用在I/O请求的调度过程中。
例如,基于I/O类型的策略调度单元460可以将一种类型I/O的权重和这种类型I/O的调度(分发)历史纳入考虑,并且基于它们作出I/O调度决定。例如,对于每种类型的I/O,可以使用分发数目与权重的比值作为它的调度因子并且总是分发具有最小调度因子的I/O类型。这意味着较高的优先级或者最近较小的分发I/O数目提供了更大的机会进行这一轮的调度过程。
类似地,基于虚拟盘队列调度单元465可以基于每个虚拟盘的权重和调度(分发)历史来调度I/O请求。例如,相比于相同虚拟存储设备121中的其他虚拟盘,如果一个虚拟盘被指配高优先级,则它具有更多的机会来调度I/O以帮助关键数据的高I/O性能。在一些实施方式中,它也可以采用分发数目与权重的比值作为它的调度因子。
在一些实施例中,客机OS 110的设置单元420还可以包括策略选择器422,以便用户选择是使用基于I/O类型的调度策略,还是基于虚拟盘队列的调度策略。设置单元420可以将用户的选择提供490给I/O调度器114,从而I/O调度器114可以相应地使用基于I/O类型的策略调度单元460或者基于虚拟盘队列调度单元465。
在一些实施例中,客机OS 110的设置单元420还可以包括权重配置单元423,以便用户设置用于两种调度策略的权重。用户可以在运行中的系统中改变这些权重,因为用户可能希望通过针对特定类型I/O或作为系统盘的某个虚拟盘来尝试不同的权重来对系统I/O性能进行分析和调节。对于基于I/O类型的策略,用户可以提供用于对应I/O类型的所期望的权重。详细的I/O类型可以匹配于上层的实施方式。例如,可以向用户列出文件系统中的每种类型的元数据以及普通的业务数据类型。对于基于虚拟盘队列的策略,用户可以指示哪个虚拟盘是所期望的系统盘并且还要提供用于其I/O的权重。
在一些实施例中,客机OS 110的设置单元420还可以包括统计收集器424。在一些情况下,用户可能希望在运行的系统中对系统性能进行分析和调节,所以可能需要向用户提供对应的统计。对于基于I/O类型的策略,可以提供每种类型的I/O以及它们最近的性能,例如吞吐量和时延。对于基于虚拟盘队列的策略,可以提供相同虚拟盘和其他虚拟盘上的I/O性能。用户还可以配置进行统计收集的时间窗口,以指示所涉及的统计应当多久被更新。
在一些实施例中,客机OS 110的设置单元420还可以包括构建器421,用于在条件允许的情况下将运行客机OS 110的虚拟机的虚拟盘附接(attach)到I/O调度器114。如上文所提到的,不同于物理存储盘,虚拟盘的I/O调度器114不能在系统启动时间期间在虚拟盘被探测到时被附接。这是因为检测器410在系统正常启动之后才开始运行,所以仅在启动之后它才能知道哪些虚拟盘共享相同的虚拟存储设备121。因此,在本公开的实施例中,替代“一步创建”的方式,可以使用“两步切换”的方法。虚拟盘可以首先附接到空I/O调度器并且然后通过检测器410的通知切换到I/O调度器114。相应地,构建器421可以响应于检测单元410检测到关联关系,将附接至空I/O调度器的虚拟盘附接至I/O调度器114。
在I/O调度器114通过基于I/O类型的策略调度单元460或者基于虚拟盘队列调度单元465完成对第二I/O请求队列的排序之后,I/O调度器114可以通过I/O分发器470将经排序的第二I/O请求队列转换为与相应的虚拟盘相关联的I/O请求队列,称为“第三I/O请求队列”。在一些实施例中,I/O分发器470可以获取成批的I/O并且将它们重映射到每个虚拟盘的队列。第三I/O请求队列继而可被发送给虚拟机监管系统,以便虚拟机监管系统依次执行第三I/O请求队列中的I/O请求所对应的I/O操作。本领域的技术人员可以理解,将调度后的I/O请求重新组织为与虚拟盘相关联的第三I/O请求队列,有利于针对各个虚拟盘的后续的I/O操作执行。当然,对第二I/O请求队列进行重映射不是必须的。在备选实施例中,可以直接将第二I/O请求队列发送给虚拟机监管系统而不进行重映射。
在一些实施例中,I/O调度器114的I/O分发器470可以通过I/O堆栈415中的SCSI驱动器115来完成与虚拟机监管系统120中的底层虚拟存储设备121的数据传输和响应处理。这稍后将结合图5来进一步描述。
图5示意性地示出了根据本公开的实施例的传入I/O以及I/O响应的处理过程500的流程图。在一些实施例中,处理过程500中的传入I/O的处理过程可以对应于上文结合图4所描述的包装器445中进行的处理过程,而处理过程500中的I/O响应的过程可以对应于上文结合图4所描述的I/O分发器中进行的处理过程,因此处理过程500属于图3中的方法300的一部分。应当注意的是,图5所描绘的仅是一种示例,无意以任何方式限制本公开的实施例。
如图5中所示出的,处理过程500中的步骤510、515和520描述了传入I/O的处理过程。传入I/O的处理过程例如开始于I/O调度器从正在被上层应用所使用的每个虚拟盘的第一I/O请求队列中接收I/O请求。
在步骤510中,可以获取I/O请求的虚拟盘信息和虚拟存储设备信息。在步骤515中,取决于针对该I/O请求的QoS策略是基于I/O类型的还是基于虚拟盘队列的,可以获取基于对应策略的I/O权重。在步骤520中,该I/O请求可以以它的权重被发送给对应的每个虚拟存储设备的第二I/O请求队列。
进一步如图5中所示出的,处理过程500中的步骤530和535描述了I/O响应的处理过程。I/O响应的处理过程例如可以开始于当I/O请求被完成时,对应的I/O完成过程被调用,这可能涉及到I/O堆栈中的每个层。对于I/O调度器114层,它可以接收每个虚拟盘的第二I/O请求队列的I/O响应。
在步骤530中,可以获取I/O响应的虚拟盘信息和虚拟存储设备信息。在步骤535中,可以更新每个虚拟存储设备的队列的I/O分发历史。例如,如果使用基于I/O类型的QoS策略,则可以得到针对这一I/O请求的针对虚拟存储设备的第二I/O请求队列,然后获得这种类型I/O的分发历史。例如,分发历史可以是这种类型I/O已经被分发和返回的数目,因此可以通过增加这个数目来更新该历史。如上文中的调度因子的定义可知,经更新的历史将改变这种类型I/O的调度因子,从而可以在下一轮I/O调度过程中应用最新的调度因子。
图6示意性地示出了根据本公开的实施例的在I/O调度器内部的调度过程600的流程图。在一些实施例中,调度过程600可以对应于上文结合图1和图4所描述的I/O调度器114中进行的调度过程,因此调度过程600属于图3中的方法300的一部分。应当注意的是,图6所描绘的仅是一种示例,无意以任何方式限制本公开的实施例。
如图6中所示出的,调度过程600可以开始于接收到来自于每个虚拟存储设备121的I/O请求队列。例如,I/O调度器114的上层块存储层113或者内核线程可以启动来自每个虚拟存储设备121的第二I/O请求队列的I/O请求分发。
在步骤610中,可以判断是否需要对该第二I/O请求队列进行节流。例如,如果进行中I/O的计数已经超出了节流阈值,则调度过程600可以返回。节流阈值可以由用户通过用户接口来进行设置。如果不需要进行节流,则调度过程600可以跳转到步骤615。
在步骤615中,可以检查用于每个虚拟存储设备的第二I/O请求队列的QoS策略。例如,该策略可以由用户进行设置。如果是要使用基于I/O类型的策略,则调度过程600可以跳转到步骤620。如果要使用基于虚拟盘队列的策略,则调度过程600可以跳转到步骤640。
在步骤620中,可以获取每种I/O类型的调度因子。例如,该调度因子可以是每种I/O类型的历史分发数目除以每种I/O类型的权重,该权重可以由用户进行设置。在步骤615中,可以选择具有最小调度因子的I/O类型。在步骤630中,可以从所选择的类型中按批地取回I/O请求并且可以更新这一轮调度的I/O请求数目。
类似地,在步骤640中,可以获取每个虚拟盘的调度因子。例如,该调度因子可以是每个虚拟盘的历史分发数目除以每个虚拟盘的权重,该权重可以由用户进行设置。在步骤645中,可以选择具有最小调度因子的虚拟盘。在步骤650中,可以从所选择的虚拟盘的第一I/O请求队列中按批地取回I/O请求并且可以更新这一轮调度的I/O数目。
在步骤660中,可以检查这一轮的I/O请求数目是否达到了上限数目。设置一轮调度的上限数目是为了避免过多的进行中I/O。这一数目可以由用户进行设置。如果达到了该上线数目,则调度过程600可以跳转到步骤670。否则,调度过程600可以跳转到步骤665。
在步骤665中,可以检查这一轮调度是否已经达到了时间窗口阈值。针对一轮调度设置时间窗口阈值是为了在不能达到I/O请求数目阈值的情况下避免在一轮调度上花费过多的时间。该时间窗口阈值可以由用户进行设备。如果没有达到时间窗口阈值,则调度过程600可以返回步骤615,从而有机会选择其他类型或其他虚拟盘的I/O请求队列中的I/O请求。否则,调度过程600可以跳转到步骤670。
在步骤670中,一轮的I/O请求的调度已经完成,因此可以由例如图4中所描绘的I/O分发器470将该批I/O请求重映射到每个虚拟盘的第三I/O请求队列,以便于对这些I/O请求传给下一层以进行进一步的处理。
图7示意性地示出了根据本公开的实施例的在虚拟机中实施的装置700的框图。本领域的技术人员可以理解,图7中仅示出了装置700中的与本公开紧密相关的单元或组件,在一些实施方式中,装置700还可以包括使其能够正常运转的其他功能单元或组件。此外,图7中所示出的各个单元或组件之间可以存在必要的连接关系,但是出于简洁的考虑,图7中并没有描绘出这些连接关系。此外,图7中使用虚线框来表示可选的单元或组件。在一些实施例中,装置700可以被配置为实施上文结合图3所描述的在虚拟机中实施的方法300。
如图7中所示出的,装置700包括接收单元710、检测单元720和调度单元730。接收单元710被配置为接收对虚拟机的虚拟盘进行I/O操作的I/O请求。检测单元720被配置为检测虚拟盘与用于虚拟机的虚拟机监管系统的虚拟存储设备之间的关联关系。调度单元730被配置为基于关联关系来调度I/O请求。
在一些实施例中,接收单元710可以进一步被配置为:将I/O请求组织为与相应的虚拟盘相关联的第一I/O请求队列;以及基于第一I/O请求队列对I/O请求进行合并。
在一些实施例中,检测单元720可以进一步被配置为:检测虚拟盘中共享相同虚拟存储设备的虚拟盘。
在一些实施例中,调度单元730可以进一步被配置为:基于关联关系将I/O请求组织为与相应的虚拟存储设备相关联的第二I/O请求队列;以及对第二I/O请求队列中的I/O请求排序。
在一些实施例中,调度单元730可以进一步被配置为:将经排序的第二I/O请求队列转换为与相应的虚拟盘相关联的第三I/O请求队列;以及将第三I/O请求队列发送给虚拟机监管系统,以便虚拟机监管系统依次执行第三I/O请求队列中的I/O请求所对应的I/O操作。
在一些实施例中,调度单元730可以基于以下至少一项进行排序:第二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操作的优先级。在一些实施例中,虚拟盘的特性可以包括以下至少一项:虚拟盘的优先级,以及虚拟盘的调度历史统计。
在一些实施例中,装置700可以进一步包括节流单元740。节流单元740可以被配置为对第二I/O请求队列进行节流。在一些实施例中,装置700可以进一步包括用户接口单元750。可以从用户接口单元750接收用于节流的节流阈值。此外,响应于第二I/O请求队列中的I/O请求数目达到节流阈值,节流单元740可以对第二I/O请求队列进行节流。
在一些实施例中,调度单元730可以进一步被配置为:检测虚拟盘与后端存储设备之间的附加关联关系;以及基于关联关系和附加关联关系来调度I/O请求。
在一些实施例中,可以从用户接口单元750接收每种类型的I/O操作优先级和每个虚拟盘的I/O操作优先级的设置;以及可以向用户接口单元750发送每种类型的I/O操作性能和每个虚拟盘的I/O操作,以便用户调整设置。
在一些实施例中,响应于检测单元720检测到关联关系,可以将附接至空I/O调度器的虚拟盘附接至调度单元730。
相比于已有的各种传统方法,根据本公开的实施例的在虚拟机中实施的方法和系统至少可以取得如下的技术优势。首先,它更具有一般性。作为客机OS侧的方法,它能够被使用在不同的虚拟机监管系统平台上和不同的后端存储设备上。其次,它提供了更加灵活和更高的用户体验,因为智能的检测器可以知晓底层的虚拟机监管系统和虚拟存储设备的信息,所以本公开的实施例的方法和装置不需要来自用户的丰富经验和许多努力。
再次,它更加高效,因为知晓应用的要求,所以它能够在虚拟机层级中实现I/OQoS目标。它可以支持两种方式的I/O调度:基于I/O类型的调度和基于虚拟盘队列的调度。最后,它与传统的IT解决方案更加兼容,显示出了需要较少的努力来将物理IT解决方案移动到虚拟版本。无需改变与上层应用的接口,它对于整个软件堆栈就像透明任务那样工作并且显示出更好的与传统IT解决方案的兼容性。
图8示意性地示出了一种可以被用来实施本公开内容的实施例的设备800的框图。如图8中所示出的,设备800包括中央处理单元(CPU)801,其可以根据存储在只读存储设备(ROM)802中的计算机程序指令或者从存储单元808加载到随机访问存储设备(RAM)803中的计算机程序指令,来执行各种适当的动作和处理。在RAM 803中,还可存储设备800操作所需的各种程序和数据。CPU 801、ROM802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法300,可由处理单元801来执行。例如,在一些实施例中,方法300可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序被加载到RAM803并由CPU 801执行时,可以执行上文描述的方法300的一个或多个步骤。
在文本中,为了实现虚拟环境中的I/O QoS目标,提出了一种在客机OS中的优化的应用感知I/O调度器。特别地,检测器可以被用来收集与哪些虚拟盘共享相同虚拟存储设备有关的信息,并且然后报告给客机OS的I/O调度器。因此,I/O调度器可以在虚拟存储设备或后端存储设备的范围内调度不同虚拟盘的I/O。在本文的实施例中可以支持两种类型的I/O调度策略,它们两者对于现实的生产环境是非常有用的。通过本公开的实施例,可以高效地在虚拟环境中实现应用感知的I/O QoS。更为重要的是,它可以帮助将虚拟版本的IT解决方案移动到不同的虚拟平台,显示出了良好的灵活性和兼容性。
在对本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。
应当注意,本公开的实施例可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。
此外,尽管在附图中以特定顺序描述了本公开的方法的操作,但是这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤组合为一个步骤执行,和/或将一个步骤分解为多个步骤执行。还应当注意,根据本公开的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
虽然已经参考若干具体实施例描述了本公开,但是应当理解,本公开不限于所公开的具体实施例。本公开旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等效布置。
Claims (20)
1.一种在虚拟机中实施的方法,包括:
从应用层或文件系统接收对所述虚拟机的虚拟盘进行输入/输出I/O操作的I/O请求;
至少部分地通过检测所述虚拟盘中的哪些虚拟盘共享虚拟存储设备中的一个虚拟存储设备,来检测所述虚拟盘与所述虚拟存储设备之间的关联关系,所述虚拟存储设备是用于所述虚拟机的虚拟机监管系统的虚拟存储设备;以及
基于所述关联关系来调度所述I/O请求。
2.根据权利要求1所述的方法,其中接收对所述虚拟机的虚拟盘进行I/O操作的I/O请求包括:
将所述I/O请求组织为与所述虚拟盘中的相应虚拟盘相关联的第一I/O请求队列;以及
基于所述第一I/O请求队列对所述I/O请求进行合并。
3.根据权利要求1所述的方法,其中基于所述关联关系来调度所述I/O请求包括:
基于所述关联关系将所述I/O请求组织为与所述虚拟存储设备中的相应虚拟存储设备相关联的第二I/O请求队列;以及
对所述第二I/O请求队列中的I/O请求排序。
4.根据权利要求3所述的方法,进一步包括:
将经排序的所述第二I/O请求队列转换为与所述虚拟盘中的相应虚拟盘相关联的第三I/O请求队列;以及
将所述第三I/O请求队列发送给所述虚拟机监管系统,以便所述虚拟机监管系统依次执行所述第三I/O请求队列中的I/O请求所对应的I/O操作。
5.根据权利要求3所述的方法,其中对所述第二I/O请求队列中的I/O请求排序包括基于以下至少一项进行排序:
所述第二I/O请求队列的特性,以及
与所述第二I/O请求队列中的所述I/O请求相关联的所述虚拟盘的特性。
6.根据权利要求5所述的方法,其中所述第二I/O请求队列的所述特性包括以下至少一项:
所述第二I/O请求队列中将被处理的I/O请求的预定数目,
所述第二I/O请求队列中的所述I/O请求的到达时间,
所述第二I/O请求队列中的所述I/O操作的类型,
所述第二I/O请求队列中的所述I/O操作的调度历史统计,以及
所述第二I/O请求队列中的所述I/O操作的优先级。
7.根据权利要求5所述的方法,其中所述虚拟盘的所述特性包括以下至少一项:
所述虚拟盘的优先级,以及
所述虚拟盘的调度历史统计。
8.根据权利要求3所述的方法,进一步包括:
对所述第二I/O请求队列进行节流。
9.根据权利要求8所述的方法,其中对所述第二I/O请求队列进行节流包括:
从用户接口接收用于所述节流的节流阈值;以及
响应于所述第二I/O请求队列中的I/O请求数目达到所述节流阈值,对所述第二I/O请求队列进行节流。
10.根据权利要求1所述的方法,其中调度所述I/O请求进一步包括:
检测所述虚拟盘与后端存储设备之间的附加关联关系;以及
基于所述关联关系和所述附加关联关系来调度所述I/O请求。
11.根据权利要求1所述的方法,进一步包括:
从用户接口接收设置,所述设置有关于每种类型的I/O操作的优先级和每个虚拟盘的I/O操作的优先级;以及
向所述用户接口通知每种类型的I/O操作的性能和每个虚拟盘的所述I/O操作,以便用户调整所述设置。
12.根据权利要求1所述的方法,其中所述检测由检测单元执行并且所述调度由调度单元执行,所述方法进一步包括:
响应于所述检测单元检测到所述关联关系,将附接至空I/O调度器的虚拟盘附接至所述调度单元。
13.一种在虚拟机中实施的装置,包括:
至少一个处理器;以及
至少一个存储器,包括计算机程序代码,
其中所述至少一个存储器和所述计算机程序代码被配置为,与所述处理器一起,使所述装置至少:
从应用层或文件系统接收对所述虚拟机的虚拟盘进行输入/输出I/O操作的I/O请求;
至少部分地通过检测所述虚拟盘中的哪些虚拟盘共享虚拟存储设备中的一个虚拟存储设备,来检测所述虚拟盘与所述虚拟存储设备之间的关联关系,所述虚拟存储设备是用于所述虚拟机的虚拟机监管系统的虚拟存储设备;以及
基于所述关联关系来调度所述I/O请求。
14.根据权利要求13所述的装置,其中所述至少一个存储器和所述计算机程序代码还被配置为,与所述处理器一起,使所述装置至少通过以下来接收对所述虚拟机的虚拟盘进行I/O操作的I/O请求:
将所述I/O请求组织为与所述虚拟盘中的相应虚拟盘相关联的第一I/O请求队列;以及
基于所述第一I/O请求队列对所述I/O请求进行合并。
15.根据权利要求13所述的装置,其中所述至少一个存储器和所述计算机程序代码还被配置为,与所述处理器一起,使所述装置至少通过以下而基于所述关联关系来调度所述I/O请求:
基于所述关联关系将所述I/O请求组织为与所述虚拟存储设备中的相应虚拟存储设备相关联的第二I/O请求队列;以及
对所述第二I/O请求队列中的I/O请求排序。
16.根据权利要求15所述的装置,其中所述至少一个存储器和所述计算机程序代码还被配置为,与所述处理器一起,使所述装置至少:
将经排序的所述第二I/O请求队列转换为与所述虚拟盘中的相应虚拟盘相关联的第三I/O请求队列;以及
将所述第三I/O请求队列发送给所述虚拟机监管系统,以便所述虚拟机监管系统依次执行所述第三I/O请求队列中的I/O请求所对应的I/O操作。
17.根据权利要求15所述的装置,其中所述至少一个存储器和所述计算机程序代码还被配置为,与所述处理器一起,使所述装置基于以下至少一项对所述第二I/O请求队列排序:
所述第二I/O请求队列的特性,以及
与所述第二I/O请求队列中的所述I/O请求相关联的所述虚拟盘的特性。
18.根据权利要求17所述的装置,其中所述第二I/O请求的所述特性包括以下至少一项:
所述第二I/O请求队列中将被处理的I/O请求的预定数目,
所述第二I/O请求队列中的所述I/O请求的到达时间,
所述第二I/O请求队列中的所述I/O操作的类型,
所述第二I/O请求队列中的所述I/O操作的调度历史统计,以及
所述第二I/O请求队列中的所述I/O操作的优先级。
19.根据权利要求18所述的装置,其中所述虚拟盘的所述特性包括以下至少一项:
所述虚拟盘的优先级,以及
所述虚拟盘的调度历史统计。
20.根据权利要求15所述的装置,其中所述至少一个存储器和所述计算机程序代码还被配置为,与所述处理器一起,使所述装置至少:
对所述第二I/O请求队列进行节流。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010735906.3A CN111831234B (zh) | 2016-06-21 | 2016-06-21 | 用于虚拟机的方法和装置 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610452126.1A CN107526529B (zh) | 2016-06-21 | 2016-06-21 | 用于虚拟机的方法和装置 |
CN202010735906.3A CN111831234B (zh) | 2016-06-21 | 2016-06-21 | 用于虚拟机的方法和装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610452126.1A Division CN107526529B (zh) | 2016-06-21 | 2016-06-21 | 用于虚拟机的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111831234A CN111831234A (zh) | 2020-10-27 |
CN111831234B true CN111831234B (zh) | 2024-04-23 |
Family
ID=60735090
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010735906.3A Active CN111831234B (zh) | 2016-06-21 | 2016-06-21 | 用于虚拟机的方法和装置 |
CN201610452126.1A Active CN107526529B (zh) | 2016-06-21 | 2016-06-21 | 用于虚拟机的方法和装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610452126.1A Active CN107526529B (zh) | 2016-06-21 | 2016-06-21 | 用于虚拟机的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (2) | US10372477B2 (zh) |
CN (2) | CN111831234B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108572862B (zh) * | 2017-03-08 | 2021-12-03 | 华为技术有限公司 | 一种流程调度方法以及流程调度设备 |
CN110737391B (zh) | 2018-07-20 | 2023-08-22 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法、设备和计算机程序产品 |
CN113377277B (zh) | 2020-03-09 | 2024-08-16 | 伊姆西Ip控股有限责任公司 | 管理存储器的方法、设备和计算机程序产品 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102594660A (zh) * | 2012-01-19 | 2012-07-18 | 华为技术有限公司 | 一种虚拟接口交换方法、装置及系统 |
CN103984536A (zh) * | 2014-02-14 | 2014-08-13 | 中国科学院计算技术研究所 | 一种云计算平台中的 i/o 请求计数系统及其方法 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8627413B2 (en) * | 2009-11-23 | 2014-01-07 | Symantec Corporation | System and method for authorization and management of connections and attachment of resources |
KR101658035B1 (ko) * | 2010-03-12 | 2016-10-04 | 삼성전자주식회사 | 가상 머신 모니터 및 가상 머신 모니터의 스케줄링 방법 |
US8719817B2 (en) * | 2010-03-25 | 2014-05-06 | Vmware, Inc. | Virtualization intermediary/virtual machine guest operating system collaborative SCSI path management |
US9189419B2 (en) * | 2011-04-14 | 2015-11-17 | Vmware, Inc. | Detecting and suppressing redundant input-output operations |
US9703581B2 (en) * | 2011-05-20 | 2017-07-11 | Citrix Systems, Inc. | Managing unallocated server farms in a desktop virtualization system |
US9652265B1 (en) * | 2011-08-10 | 2017-05-16 | Nutanix, Inc. | Architecture for managing I/O and storage for a virtualization environment with multiple hypervisor types |
US8601473B1 (en) * | 2011-08-10 | 2013-12-03 | Nutanix, Inc. | Architecture for managing I/O and storage for a virtualization environment |
US10073656B2 (en) * | 2012-01-27 | 2018-09-11 | Sandisk Technologies Llc | Systems and methods for storage virtualization |
US8935695B1 (en) * | 2012-07-12 | 2015-01-13 | Symantec Corporation | Systems and methods for managing multipathing configurations for virtual machines |
US9454487B2 (en) * | 2012-08-27 | 2016-09-27 | Vmware, Inc. | Transparent host-side caching of virtual disks located on shared storage |
US10346095B2 (en) * | 2012-08-31 | 2019-07-09 | Sandisk Technologies, Llc | Systems, methods, and interfaces for adaptive cache persistence |
US9336035B2 (en) * | 2012-10-23 | 2016-05-10 | Vmware, Inc. | Method and system for VM-granular I/O caching |
US9052937B2 (en) * | 2013-02-27 | 2015-06-09 | Vmware, Inc. | Managing storage commands according to input-output priorities and dependencies |
US9411623B1 (en) * | 2013-03-22 | 2016-08-09 | Vmware, Inc. | Storage performance by heuristically coalescing IO requests |
US9262192B2 (en) * | 2013-12-16 | 2016-02-16 | Vmware, Inc. | Virtual machine data store queue allocation |
US9665309B2 (en) * | 2014-06-27 | 2017-05-30 | International Business Machines Corporation | Extending existing storage devices in virtualized environments |
US9710465B2 (en) * | 2014-09-22 | 2017-07-18 | Commvault Systems, Inc. | Efficiently restoring execution of a backed up virtual machine based on coordination with virtual-machine-file-relocation operations |
US9983936B2 (en) * | 2014-11-20 | 2018-05-29 | Commvault Systems, Inc. | Virtual machine change block tracking |
TWI574158B (zh) * | 2014-12-01 | 2017-03-11 | 旺宏電子股份有限公司 | 具應用程式資訊感知的資料處理方法以及系統 |
WO2016197069A1 (en) * | 2015-06-05 | 2016-12-08 | Nutanix, Inc. | Architecture for managing i/o and storage for a virtualization environment using executable containers and virtual machines |
US9766920B2 (en) * | 2015-08-28 | 2017-09-19 | Vmware, Inc. | Dynamic content disk |
CN107209681B (zh) * | 2015-10-21 | 2020-07-07 | 华为技术有限公司 | 一种存储设备访问方法、装置和系统 |
US9817586B2 (en) * | 2016-02-23 | 2017-11-14 | Samsung Electronics Co., Ltd. | Method of application aware IO completion mode changer for key value device |
-
2016
- 2016-06-21 CN CN202010735906.3A patent/CN111831234B/zh active Active
- 2016-06-21 CN CN201610452126.1A patent/CN107526529B/zh active Active
-
2017
- 2017-06-21 US US15/628,776 patent/US10372477B2/en active Active
-
2019
- 2019-05-09 US US16/407,572 patent/US10884781B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102594660A (zh) * | 2012-01-19 | 2012-07-18 | 华为技术有限公司 | 一种虚拟接口交换方法、装置及系统 |
CN103984536A (zh) * | 2014-02-14 | 2014-08-13 | 中国科学院计算技术研究所 | 一种云计算平台中的 i/o 请求计数系统及其方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107526529A (zh) | 2017-12-29 |
US20190266005A1 (en) | 2019-08-29 |
US10372477B2 (en) | 2019-08-06 |
CN107526529B (zh) | 2020-08-07 |
CN111831234A (zh) | 2020-10-27 |
US10884781B2 (en) | 2021-01-05 |
US20180018194A1 (en) | 2018-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110704186B (zh) | 基于混合分布架构的计算资源分配方法、装置和存储介质 | |
US10922269B2 (en) | Proactive optimizations at multi-tier file systems | |
CN106371894B (zh) | 一种配置方法、装置和数据处理服务器 | |
US10452572B2 (en) | Automatic system service resource management for virtualizing low-latency workloads that are input/output intensive | |
US9755990B2 (en) | Automated reconfiguration of shared network resources | |
US6587938B1 (en) | Method, system and program products for managing central processing unit resources of a computing environment | |
US8281315B2 (en) | Method, system, and storage medium for managing computer processing functions | |
US7007276B1 (en) | Method, system and program products for managing groups of partitions of a computing environment | |
US8321558B1 (en) | Dynamically monitoring and modifying distributed execution of programs | |
US8782657B2 (en) | Dynamic creation and destruction of IO resources based on actual load and resource availability | |
US20200174844A1 (en) | System and method for resource partitioning in distributed computing | |
US9891956B2 (en) | Efficient critical thread scheduling for non-privileged thread requests | |
US11755369B2 (en) | Techniques for container scheduling in a virtual environment | |
WO2019084793A1 (en) | A method, apparatus and system for real-time virtual network function orchestration | |
CN111831234B (zh) | 用于虚拟机的方法和装置 | |
CN111443985A (zh) | 实例化虚拟网络功能的方法及设备 | |
CN111542809A (zh) | 管理虚拟网络功能 | |
US7568052B1 (en) | Method, system and program products for managing I/O configurations of a computing environment | |
US9940073B1 (en) | Method and apparatus for automated selection of a storage group for storage tiering | |
US11494083B2 (en) | Performing resynchronization jobs in a distributed storage system based on a parallelism policy | |
CN117332881B (zh) | 分布式训练方法及电子设备 | |
US11474868B1 (en) | Sharded polling system | |
US10430233B1 (en) | Scheduling computational tasks among multiple classes of storage resources based on job classification | |
US12058047B2 (en) | Edge node workload acquisition for distribution of edge workloads | |
US20240019978A1 (en) | Methods and systems for monitoring and visually representing attributes of objects executing in a data center |
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 |