CN113110916B - 一种虚拟机数据读写方法、装置、设备及介质 - Google Patents
一种虚拟机数据读写方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN113110916B CN113110916B CN202110437206.0A CN202110437206A CN113110916B CN 113110916 B CN113110916 B CN 113110916B CN 202110437206 A CN202110437206 A CN 202110437206A CN 113110916 B CN113110916 B CN 113110916B
- Authority
- CN
- China
- Prior art keywords
- request
- storage end
- data
- address
- virtual machine
- 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 245
- 230000008569 process Effects 0.000 claims abstract description 193
- 238000004891 communication Methods 0.000 claims description 30
- 238000012545 processing Methods 0.000 claims description 28
- 238000013507 mapping Methods 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 12
- 238000012544 monitoring process Methods 0.000 claims description 9
- 230000004931 aggregating effect Effects 0.000 claims description 4
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 230000007717 exclusion Effects 0.000 description 10
- 230000002776 aggregation Effects 0.000 description 5
- 238000004220 aggregation Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000000903 blocking effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001960 triggered effect Effects 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
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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/45595—Network integration; Enabling network access in virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种虚拟机数据读写方法、装置、设备、介质,该方法包括:在虚拟机产生IO请求时,将IO请求写入到共享内存中的IO请求队列中,IO请求队列为循环队列;通过轮询进程从IO请求队列中获取IO请求,并根据IO请求确定对应的IO数据的实际存储端地址,轮询进程为预设的用户态进程;当IO请求为写请求时,通过轮询进程将对应的IO数据、实际存储端地址传输到对应的网卡,网卡将IO数据和实际存储端地址发送到对应的物理存储端;当IO请求为读请求时,通过轮询进程将实际存储端地址传输到对应的网卡,网卡将实际存储端地址发送到对应的物理存储端,并接收其返回的对应的IO数据。这样能够极大地提高虚拟机的数据读写性能。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种虚拟机数据读写方法、装置、设备、介质。
背景技术
在当前的虚拟机基于Virtio的IO(Input/Output,输入/输出)路径中,单次IO需要经历用户态虚拟机进程跳转至内核态KVM(Kernel-based Virtual Machine)进程,再由内核态KVM进程跳转至用户态QEMU(Quick Emulator)进程,最终用户态QEMU进程再次跳转至内核态IO设备驱动完成IO下发,当完成IO时,还需沿该路径反向多次用户态内核态跳转最终通知到虚拟机。
在上述过程中,主要存在以下几个主要问题:其一,用户态与内核态的切换有较大的性能开销,限制了虚拟机IO性能上限。其二,IO下发时,将通过中断的方式通知QEMU进程,而中断时会触发上下文切换,不仅消耗大量CPU时间,同时会引起TLB更新等造成较大的性能损耗。其三,虚拟机下发IO后,IO源数据将在不同的模块中进行拷贝,占用内存带宽的同时降低了IO下发效率。其四,虚拟机与KVM经过virtqueue进行数据交互时,为了保证数据操作的原子性,采用了较多的互斥锁操作,使得多个进程运行过程中由于互斥锁而阻塞,性能受到影响。
因此,如何上述全部或部分问题是本领域技术人员要解决的问题。
发明内容
有鉴于此,本申请的目的在于提供一种虚拟机数据读写方法、装置、设备、介质,能够极大地提高虚拟机的数据读写性能。其具体方案如下:
第一方面,本申请公开了一种虚拟机数据读写方法,包括:
在虚拟机产生IO请求时,将所述IO请求写入到共享内存中的IO请求队列中,其中,所述共享内存为所述虚拟机对应的内存,所述IO请求队列为循环队列;
通过轮询进程从所述IO请求队列中获取所述IO请求,并根据所述IO请求确定对应的IO数据的实际存储端地址,其中,所述轮询进程为预设的用户态进程,用于采用轮询方式对所述IO请求队列进行监测;
当所述IO请求为写请求时,通过所述轮询进程将所述写请求对应的IO数据、所述实际存储端地址传输到所述虚拟机对应的网卡,其中,所述网卡用于将所述IO数据和所述实际存储端地址发送到所述实际存储端地址对应的物理存储端;
当所述IO请求为读请求时,通过所述轮询进程将所述实际存储端地址传输到所述虚拟机对应的网卡,其中,所述网卡用于将所述实际存储端地址发送到所述实际存储端地址对应的物理存储端,并接收所述物理存储端返回的所述读请求对应的IO数据。
可选地,当所述IO请求为写请求时,所述方法还包括:
通过所述轮询进程将目标链接标识传输到所述虚拟机对应的网卡,其中,所述目标链接标识表示所述网卡与所述实际存储端地址对应的物理存储端之间通信的目标链接,所述网卡用于通过所述目标链接将所述IO数据和所述实际存储端地址发送到所述实际存储端地址对应的物理存储端。
可选地,所述通过所述轮询进程将目标链接标识传输到所述虚拟机对应的网卡之前,还包括:
通过所述轮询进程确定所述网卡与所述实际存储端地址对应的物理存储端之间通信的目标链接,其中,所述网卡与所述存储端之间建立有多条链接;
将所述目标链接的标识作为所述目标链接标识。
可选地,所述通过所述轮询进程确定所述网卡与所述实际存储端地址对应的物理存储端之间通信的目标链接,包括:
通过所述轮询进程确定所述实际存储端地址对应的物理存储端;
通过所述轮询进程获取所述网卡到所述物理存储端的各条链接的时延,并将时延最低的链接作为所述网卡与所述实际存储端地址对应的物理存储端之间通信的目标链接。
可选地,所述通过所述轮询进程确定所述网卡与所述实际存储端地址对应的物理存储端之间通信的目标链接,包括:
当所述IO请求为多个时,通过所述轮询进程对各个所述IO请求对应的IO数据的实际存储端地址进行分类;
通过所述轮询进程分别确定所述网卡与各类所述实际存储端地址对应的物理存储端之间通信的目标链接。
可选地,当所述IO请求为读请求时,所述方法还包括:
通过所述轮询进程将目标链接标识传输到所述虚拟机对应的网卡,其中,所述目标链接标识表示所述网卡与所述实际存储端地址对应的物理存储端之间通信的目标链接,所述网卡用于通过所述目标链接将所述实际存储端地址发送到所述实际存储端地址对应的物理存储端,并接收所述物理存储端返回的所述读请求对应的IO数据。
可选地,所述当所述IO请求为写请求时,通过所述轮询进程将所述写请求对应的IO数据、所述实际存储端地址传输到所述虚拟机对应的网卡,包括:
当所述IO请求为写请求时,所述IO数据为待写入数据,通过所述轮询进程根据所述IO请求中的共享内存地址从所述共享内存中读取所述待写入数据,并将所述待写入数据及所述实际存储端地址传输到所述虚拟机对应的网卡,其中,所述共享内存地址为所述待写入数据在所述共享内存中的地址。
可选地,所述将所述IO请求写入到共享内存中的IO请求队列中之前,还包括:
利用大页内存作为所述共享内存,并在所述共享内存中设置循环队列作为所述IO请求队列;
在所述虚拟机启动前,根据所述虚拟机的IO压力创建所述轮询进程;
在所述虚拟机启动时,通过所述轮询进程获取所述共享内存的地址空间信息,得到所述IO请求队列的信息。
可选地,所述根据所述IO请求确定对应的IO数据的实际存储端地址,包括:
根据所述IO请求中的虚拟磁盘地址和地址映射关系确定对应的IO数据的实际存储端地址,其中,所述虚拟磁盘地址为所述IO数据对应的所述虚拟机的虚拟磁盘上的地址,所述地址映射关系为所述虚拟磁盘上的地址与物理存储端上的实际存储端地址之间的映射关系。
可选地,所述将所述IO请求写入到共享内存中的IO请求队列中之前,还包括:
将不同物理存储端的存储切片聚合映射形成所述虚拟磁盘。
可选地,所述通过轮询进程从所述IO请求队列中获取所述IO请求,并根据所述IO请求确定对应的IO数据的实际存储端地址,包括:
当所述IO请求的数量为多个时,通过所述轮询进程采用批处理方式从所述IO请求队列中获取所述IO请求;
分别根据各个所述IO请求确定对应的IO数据的实际存储端地址。
可选地,所述通过所述轮询进程将所述实际存储端地址传输到所述虚拟机对应的网卡之后,还包括:
通过所述轮询进程获取所述网卡接收到的所述IO数据,并根据所述IO请求中的共享内存地址将所述IO数据写入到所述共享内存中,其中,所述IO数据为待读取数据,所述共享内存地址为所述共享内存中用于存储所述待读取数据的地址。
第二方面,本申请公开了一种虚拟机数据读写装置,包括:
IO请求写模块,用于在虚拟机产生IO请求时,将所述IO请求写入到共享内存中的IO请求队列中,其中,所述共享内存为所述虚拟机的内存,所述IO请求队列为循环队列;
地址转换模块,用于通过轮询进程从所述IO请求队列中获取所述IO请求,并根据所述IO请求确定对应的IO数据的实际存储端地址,其中,所述轮询进程为预设的用户态进程,用于采用轮询方式对所述IO请求队列进行监测;
第一IO模块,用于在所述IO请求为写请求时,通过所述轮询进程将所述写请求对应的IO数据、所述实际存储端地址传输到所述虚拟机对应的网卡,其中,所述网卡用于将所述IO数据和所述实际存储端地址发送到所述实际存储端地址对应的物理存储端;
第二IO模块,用于在所述IO请求为读请求时,通过所述轮询进程将所述实际存储端地址传输到所述虚拟机对应的网卡,其中,所述网卡用于将所述实际存储端地址发送到所述实际存储端地址对应的物理存储端,并接收所述物理存储端返回的所述读请求对应的IO数据。
第三方面,本申请公开了一种电子设备,包括:
存储器和处理器;
其中,所述存储器,用于存储计算机程序;
所述处理器,用于执行所述计算机程序,以实现前述公开的虚拟机数据读写方法。
第四方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的虚拟机数据读写方法。
可见,本申请在虚拟机产生IO请求时,将所述IO请求写入到共享内存中的IO请求队列中,其中,所述共享内存为所述虚拟机对应的内存,所述IO请求队列为循环队列。然后通过轮询进程从所述IO请求队列中获取所述IO请求,并根据所述IO请求确定对应的IO数据的实际存储端地址,其中,所述轮询进程为预设的用户态进程,用于采用轮询方式对所述IO请求队列进行监测。当所述IO请求为写请求时,通过所述轮询进程将所述写请求对应的IO数据、所述实际存储端地址传输到所述虚拟机对应的网卡,其中,所述网卡用于将所述IO数据和所述实际存储端地址发送到所述实际存储端地址对应的物理存储端。当所述IO请求为读请求时,通过所述轮询进程将所述实际存储端地址传输到所述虚拟机对应的网卡,其中,所述网卡用于将所述实际存储端地址发送到所述实际存储端地址对应的物理存储端,并接收所述物理存储端返回的所述读请求对应的IO数据。由此可见,本申请中是在虚拟机生成IO请求时,先将所述IO请求写入到所述虚拟机的共享内存中的IO请求队列中,而所述IO请求队列为循环队列,避免了现有技术中互斥锁的使用,避免了多个进程运行过程中由于互斥锁而阻塞,提高了数据处理性能。通过用户态的轮询进程从所述IO请求队列中获取所述IO请求,并根据所述IO请求确定对应的IO数据的实际存储端地址,以及将相应的数据发送到虚拟机对应的网卡,网卡便可以将相应的数据发送到物理存储端,进行数据读写操作。这样通过轮询方式处理IO请求队列中的IO请求,避免了现有IO处理中的中断机制带来的计算机性能消耗,且所述轮询进程位于用户态,消除了原IO路径中的用户态和内核态之间的多次切换,极大地提高了数据读写处理性能。且由于共享内存为虚拟机对应的内存,使得IO请求为写请求时,对应的IO数据本身就在共享内存中,轮询进程可以直接将共享内存中的IO数据传输到对应的网卡,避免了现有技术中IO数据在不同模块中进行拷贝,导致的内存带宽占用,提高了IO下发效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种虚拟机数据读写方法流程图;
图2为本申请公开的一种具体的虚拟机数据读写方法流程图;
图3为本申请公开的一种具体的虚拟机数据读写方法流程图;
图4为本申请公开的一种虚拟机数据读写装置结构示意图;
图5为本申请公开的一种电子设备结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例公开了一种虚拟机数据读写方法,参见图1所示,该方法包括:
步骤S11:在虚拟机产生IO请求时,将所述IO请求写入到共享内存中的IO请求队列中,其中,所述共享内存为所述虚拟机对应的内存,所述IO请求队列为循环队列。
在具体的实施过程中,在虚拟机产生IO请求时,先将所述IO请求写入到共享内存中的IO请求队列中,所述共享内存为所述虚拟机对应的内存,且所述IO请求队列采用循环队列进行设置。如果所述IO请求为写请求,则所述写请求对应的IO数据为待写入数据,所述待写入数据本身便也在所述共享内存中。
也即,需要先将所述虚拟机的内存作为共享内存,在所述共享内存中设置循环队列作为IO请求队列,通过队列首尾位置标志位的方式控制当前队列中有效IO请求部分,所述虚拟机可直接向所述IO请求队列的尾部写入IO请求,同时轮询进程可不断从所述IO请求队列的头部获取IO请求,所述IO请求队列采用循环队列,避免了现有技术中互斥锁的使用,避免了多个进程运行过程中由于互斥锁而阻塞,提高了数据处理性能。
具体的,在将所述IO请求写入到共享内存中的IO请求队列中之前,还包括:利用大页内存作为所述共享内存,并在所述共享内存中设置循环队列作为所述IO请求队列。也即,相比于现有技术中的内存页一般为4K,所述共享内存采用大页内存,可以提高虚拟机数据读写性能。在实际实施过程中,所述IO请求队列的数量可以大于或等于1,具体可以根据虚拟机的IO压力确定。
步骤S12:通过轮询进程从所述IO请求队列中获取所述IO请求,并根据所述IO请求确定对应的IO数据的实际存储端地址,其中,所述轮询进程为预设的用户态进程,用于采用轮询方式对所述IO请求队列进行监测。
可以理解的是,在将所述IO请求写入到所述IO请求队列中之后,还可以通过预设的轮询进程从所述IO请求队列中获取所述IO请求,并根据所述IO请求确定对应的IO数据的实际存储端地址,所述轮询进程为预设的用户态进程,用于采用轮询方式对所述IO请求队列进行监测。由于轮询进程采用轮询方式对所述IO请求队列进行监测,以解决随着现代存储介质速度提升后,事件中断的延迟逐渐成IO主要瓶颈的问题,也即,解决了传统的IO(virtio)方案中,虚拟机下发IO请求后是通过事件中断机制去通知虚拟机的QEMU主线程进行处理,导致的IO瓶颈问题,避免了传统的消息通知机制的弊端。
当所述IO请求的数量为多个时,通过所述轮询进程采用批处理方式从所述IO请求队列中获取所述IO请求;分别根据各个所述IO请求确定对应的IO数据的实际存储端地址。
也即,当所述IO请求的数量大于1时,通过所述轮询进程采用批处理方式获取所述IO请求队列中的所述IO请求;根据各个所述IO请求确定对应的IO数据的实际存储端地址。也即,当所述IO请求的数据大于1时,所述轮询进程采用batch方式获取所述IO请求队列中的所述IO请求;根据各个所述IO请求确定对应的IO数据的实际存储端地址。
这样采用batch方式可一次获取多个IO请求进行整合下发,以提升数据处理效率。
在实际应用中,在将所述IO请求写入到共享内存中的IO请求队列中之前,还包括:在所述虚拟机启动前,根据所述虚拟机的IO压力创建所述轮询进程;在所述虚拟机启动时,通过所述轮询进程获取所述共享内存的地址空间信息,得到所述IO请求队列的信息。
也即,在所述虚拟机启动之前,需要先根据所述虚拟机的IO压力创建所述轮询进程,所述虚拟机的IO压力越大,所需要的轮询进程数量越多,所以需要根据所述虚拟机的IO压力确定需要创建的轮询进程数量,然后创建相应数量的轮询进程。然后在所述虚拟机启动时,所述轮询进程可以通过QEMU获取所述共享内存的地址空间信息,以得到所述IO请求队列的信息,也即,得到所述IO请求队列的地址信息。
这样虚拟机可依据IO负载强度启动多个IO请求队列与多个轮询进程,提高了可扩展性,避免了现有技术中的原IO路径单线程性能导致的IO处理瓶颈。
所述轮询进程采用轮询的方式监测所述IO请求队列,当所述IO请求队列中有未处理的IO请求时,便从所述IO请求队列中将未处理的IO请求读出,并根据所述IO请求确定对应的IO数据的实际存储端地址,以便从所述实际存储端地址对应的物理存储端读取数据或向所述实际存储端地址对应的物理存储端写入对应的数据。
其中,根据所述IO请求确定对应的IO数据的实际存储端地址,包括:根据所述IO请求中的虚拟磁盘地址和地址映射关系确定对应的IO数据的实际存储端地址,其中,所述虚拟磁盘地址为所述IO数据对应的所述虚拟机的虚拟磁盘上的地址,所述地址映射关系为所述虚拟磁盘上的地址与物理存储端上的实际存储端地址之间的映射关系。
也即,可以预先构建所述虚拟机对应的虚拟磁盘上的地址与物理存储端上的实际存储端地址之间的地址映射关系,所述轮询进程从所述IO请求队列对应中读取出所述IO请求时,所述IO请求中会包括虚拟磁盘地址,所述轮询进程便可以直接根据所述IO请求中的虚拟磁盘地址与所述地址映射关系确定所述IO请求对应的IO数据的实际存储端地址。
相应地,将所述IO请求写入到共享内存中的IO请求队列中之前,还包括:将不同物理存储端的存储切片聚合映射形成所述虚拟磁盘。也即,利用不同物理存储端上的存储切片聚合映射形成所述虚拟磁盘,从而使得一段连续的虚拟磁盘地址可以对应到不同的物理存储端上,实现存储聚合,从而使得多个IO最大限度的分布在不同的物理存储端上,发挥各个物理存储端的存储吞吐性能,使得所述虚拟机的IO可以获益于物理存储端的扩展,这样的存储聚合提供了底层存储的可扩展性,可在虚拟机不感知的情况下扩展底层存储提升存储性能。
步骤S13:当所述IO请求为写请求时,通过所述轮询进程将所述写请求对应的IO数据、所述实际存储端地址传输到所述虚拟机对应的网卡,其中,所述网卡用于将所述IO数据和所述实际存储端地址发送到所述实际存储端地址对应的物理存储端。
当所述IO请求为写请求时,所述轮询进程需要将所述写请求对应的IO数据以及所述实际存储端地址传输到所述虚拟机对应的网卡,所述网卡在接收到所述IO数据时,便可以将所述IO数据和所述实际存储端地址发送到所述实际存储端地址对应的物理存储端,所述实际存储端地址对应的物理存储端在接收到所述IO数据和所述实际存储端地址之后,便可以将所述IO数据写入到所述实际存储端地址对应的存储中。由于所述实际存储端地址表示将所述IO数据存储到对应的物理存储端中的什么地方,所以需要将所述实际存储端地址一起发送到对应的物理存储端。
具体的,当所述IO请求为写请求时,所述IO数据为待写入数据,通过所述轮询进程根据所述IO请求中的共享内存地址从所述共享内存中读取所述待写入数据,并将所述待写入数据及所述实际存储端地址传输到所述虚拟机对应的网卡,其中,所述共享内存地址为所述待写入数据在所述共享内存中的地址。
也即,所述IO请求中包括共享内存地址,所述共享内存地址下存储着待写入数据,所述轮询进程在确定出所述实际存储端地址之后,根据所述共享内存地址从所述共享内存地址中读取出所述待写入数据,然后将所述待写入数据和所述实际存储端地址一起发送到所述网卡,所述网卡会进行后续的处理工作。
所述待写入数据直接在所述共享内存中,这样中间所述轮询进程进行操作过程中不需要进行IO数据的拷贝,直到确定出所述实际存储端地址之后,再通过将所述实际存储端地址和带吸入数据发送到网卡,避免了现有技术中的IO数据在不同模块中进行拷贝,导致的内存带宽占用,提高了IO下发效率。
所述实际存储端地址对应的物理存储端对所述IO请进行响应之后,还返回对应的数据包,所述数据包表明数据写入完成,所以还需要所述轮询进程将所述数据包存储到所述共享内存中,然后通知所述虚拟机接收所述数据包即可。
步骤S14:当所述IO请求为读请求时,通过所述轮询进程将所述实际存储端地址传输到所述虚拟机对应的网卡,其中,所述网卡用于将所述实际存储端地址发送到所述实际存储端地址对应的物理存储端,并接收所述物理存储端返回的所述读请求对应的IO数据。
当所述IO请求为读请求时,所述IO数据为待读取数据,表示需要从所述实际存储端地址对应的物理存储端中读取待读取数据,所以所述轮询进程需要将所述实际存储端地址传输到所述虚拟机对应的网卡,所述网卡在接收到所述实际存储端地址之后,会将所述实际存储端地址发送到所述实际存储端地址对应的物理存储端,对应的物理存储端在接收到所述实际存储端地址之后,便会从所述实际存储端地址下读取出待读取数据,并将所述待读取数据返回给所述网卡,所以所述网卡还需要接收所述待读取数据。
通过所述轮询进程将所述实际存储端地址传输到所述虚拟机对应的网卡之后,还包括:通过所述轮询进程获取所述网卡接收到的所述IO数据,并根据所述IO请求中的共享内存地址将所述IO数据写入到所述共享内存中,其中,所述IO数据为待读取数据,所述共享内存地址为所述共享内存中用于存储所述待读取数据的地址。
也即,当所述IO请求为读请求时,所述IO请求中包括共享内存地址,所述共享内存地址用来存储对应的物理存储端返回的IO数据,也即待读取数据的,所以在所述网卡接收到所述IO数据之后,还需要由所述轮询进程获取所述网卡接收到的所示IO数据,并根据所述共享内存地址将所述IO数据写入到所述共享内存中,并通知所述虚拟机。
可见,本申请在虚拟机产生IO请求时,将所述IO请求写入到共享内存中的IO请求队列中,其中,所述共享内存为所述虚拟机对应的内存,所述IO请求队列为循环队列。然后通过轮询进程从所述IO请求队列中获取所述IO请求,并根据所述IO请求确定对应的IO数据的实际存储端地址,其中,所述轮询进程为预设的用户态进程,用于采用轮询方式对所述IO请求队列进行监测。当所述IO请求为写请求时,通过所述轮询进程将所述写请求对应的IO数据、所述实际存储端地址传输到所述虚拟机对应的网卡,其中,所述网卡用于将所述IO数据和所述实际存储端地址发送到所述实际存储端地址对应的物理存储端。当所述IO请求为读请求时,通过所述轮询进程将所述实际存储端地址传输到所述虚拟机对应的网卡,其中,所述网卡用于将所述实际存储端地址发送到所述实际存储端地址对应的物理存储端,并接收所述物理存储端返回的所述读请求对应的IO数据。由此可见,本申请中是在虚拟机生成IO请求时,先将所述IO请求写入到所述虚拟机的共享内存中的IO请求队列中,而所述IO请求队列为循环队列,避免了现有技术中互斥锁的使用,避免了多个进程运行过程中由于互斥锁而阻塞,提高了数据处理性能。通过用户态的轮询进程从所述IO请求队列中获取所述IO请求,并根据所述IO请求确定对应的IO数据的实际存储端地址,以及将相应的数据发送到虚拟机对应的网卡,网卡便可以将相应的数据发送到物理存储端,进行数据读写操作。这样通过轮询方式处理IO请求队列中的IO请求,避免了现有IO处理中的中断机制带来的计算机性能消耗,且所述轮询进程位于用户态,消除了原IO路径中的用户态和内核态之间的多次切换,极大地提高了数据读写处理性能。且由于共享内存为虚拟机对应的内存,使得IO请求为写请求时,对应的IO数据本身就在共享内存中,轮询进程可以直接将共享内存中的IO数据传输到对应的网卡,避免了现有技术中IO数据在不同模块中进行拷贝,导致的内存带宽占用,提高了IO下发效率。
参见图2所示,本申请实施例公开了一种具体的虚拟机数据读写方法,该方法包括:
步骤S21:在虚拟机产生IO请求时,将所述IO请求写入到共享内存中的IO请求队列中,其中,所述共享内存为所述虚拟机对应的内存,所述IO请求队列为循环队列。
在具体的实施过程中,在虚拟机产生IO请求时,需要先将所述IO请求写入到所述虚拟机的共享内存中的IO请求队列中。
步骤S22:通过轮询进程从所述IO请求队列中获取所述IO请求,并根据所述IO请求确定对应的IO数据的实际存储端地址,其中,所述轮询进程为预设的用户态进程,用于采用轮询方式对所述IO请求队列进行监测。
所述轮询进程还需要从所述IO请求队列中获取所述IO请求,并根据所述IO请求确定对应的IO数据的实际存储端地址。
步骤S23:当所述IO请求为写请求时,通过所述轮询进程将所述写请求对应的IO数据、所述实际存储端地址及目标链接标识传输到所述虚拟机对应的网卡,其中,所述目标链接标识表示所述网卡与所述实际存储端地址对应的物理存储端之间通信的目标链接,所述网卡用于通过所述目标链接将所述IO数据和所述实际存储端地址发送到所述实际存储端地址对应的物理存储端。
在实际实施过程中,所述网卡和一个物理存储端之间可以建立多条链接,在需要进行数据读写时,由所述轮询进程确定出目标链接,也即,确定出网卡要通过哪一条链接将相关的数据发送到对应的物理存储端,然后轮询进程将目标链接标识与相关的数据一起传输到所述网卡。具体的,就是当所述IO请求为写请求时,通过所述轮询进程将所述写请求对应的IO数据、所述实际存储端地址及目标链接标识传输到所述虚拟机对应的网卡,所述网卡在接收到所述IO数据、所述实际存储端地址及所述目标链接标识之后,便可以通过所述目标链接标识对应的目标链接将所述IO数据和所述实际存储端地址发送到所述实际物理存储端对应的物理存储端。
相应地,便需要通过所述轮询进程确定所述网卡与所述实际存储端地址对应的物理存储端之间通信的目标链接,其中,所述网卡与所述存储端之间建立有多条链接;将所述目标链接的标识作为所述目标链接标识。
其中,通过所述轮询进程确定所述网卡与所述实际存储端地址对应的物理存储端之间通信的目标链接,包括:通过所述轮询进程确定所述实际存储端地址对应的物理存储端;通过所述轮询进程获取所述网卡到所述物理存储端的各条链接的时延,并将时延最低的链接作为所述网卡与所述实际存储端地址对应的物理存储端之间通信的目标链接。
也即,会记录每一条链接平均IO响应时延,该时延会因链接上当前IO负载强度、故障等发生变化,在确定出所述实际存储端之后,便相应的确定出IO请求对应的物理存储端,将该物理存储端对应的链接中时延最低的为目标链接即可。
网卡与一个物理存储端之间可以建立多条链接,这样可以提高IO路径的可靠性,在部分IO路径出现故障无法正常连接时,可以通过剩余的IO路径进行访问,从而最大限度发挥存储性能。
通过所述轮询进程确定所述网卡与所述实际存储端地址对应的物理存储端之间通信的目标链接,包括:当所述IO请求为多个时,通过所述轮询进程对各个所述IO请求对应的IO数据的实际存储端地址进行分类;通过所述轮询进程分别确定所述网卡与各类所述实际存储端地址对应的物理存储端之间通信的目标链接。
也即,当所述IO请求的数量大于1时,所述轮询进程可以对各个所述IO请求对应的IO数据的实际存储端地址进行分类,将相同的实际存储端地址分为一类,然在后通过所述轮询进程分别确定所述网卡与各类所述实际存储端地址对应的物理存储端之间通信的目标链接。
所述网卡向所述实际存储端地址对应的物理存储端传输数据时,可以基于传统存储协议进行传输,例如,NFS(Network File System,网络文件***),iscsi(InternetSmall Computer System Interface)等。
步骤S24:当所述IO请求为读请求时,通过所述轮询进程将所述实际存储端地址和目标链接标识传输到所述虚拟机对应的网卡,其中,所述目标链接标识表示所述网卡与所述实际存储端地址对应的物理存储端之间通信的目标链接,所述网卡通过所述目标链接将所述实际存储端地址发送到所述实际存储端地址对应的物理存储端,并接收所述物理存储端返回的所述读请求对应的IO数据。
在实际实施过程中,所述网卡和一个物理存储端之间可以建立多条链接,在需要进行数据读写时,由所述轮询进程确定出目标链接,也即,确定出网卡要通过哪一条链接将相关的数据发送到对应的物理存储端,然后轮询进程将目标链接标识与相关的数据一起传输到所述网卡。具体的,就是当所述IO请求为读请求时,通过所述轮询进程将所述实际存储端地址和目标链接标识传输到所述虚拟机对应的网卡,所述网卡在接收到所述目标链接标识和所述实际存储端地址之后,便通过所述目标链接标识对应的目标链接将所述实际存储端地址发送到所述实际存储端地址对应的物理存储端,并通过所述目标链接接收对应的物理存储端返回的读请求对应的IO数据。
参见图3所示,为虚拟机读写流程图。虚拟机下发IO请求时,将所述IO请求写入到所述虚拟机中的共享内存的IO请求队列中,用户态的轮询进程对所述IO请求队列进行轮询时获取所述IO请求,确定出IO数据对应的实际存储端地址,确定存储聚合中与所述实际存储端地址对应的物理存储端,例如,存储端1、存储端2、存储端3中的某一个,其中,网卡与存储端1、存储端2以及存储端3之间均有多条链接,所以轮询进程还需要确定出网卡到达实际存储端地址的物理存储端的目标链接,并将目标链接标识以及IO相关的数据传输到网卡,网卡会通过目标链接将IO相关的数据发送到物理存储端,以便对应的物理存储端在接收到IO相关的数据之后进行相关的读写操作。
前述中数据读写都是从相对于所述虚拟机来说的远端读取数据或向相对于所述虚拟机来说的远端写入数据,当需要对虚拟机所处的设备上的本地存储进行数据读写操作时,所述轮询进程从所述IO请求队列中获取IO请求,并根据所述IO请求确定出对应的IO数据的实际存储端地址之后,其中,此时的实际存储端地址为所述虚拟机所处设备上的本地存储中的地址,如果所述IO请求为写请求,则所述轮询进程从所述共享内存中读取待写入数据之后,将所述待写入数据和所述实际存储端地址通过存储协议发送到本地的存储处理***中,由本地的存储处理***进行所述待写入数据的写入即可。当所述IO请求为读请求时,所述轮询进程将所述实际存储端地址通过存储协议发送到本地的存储处理***中,由本地的存储处理***从所述实际存储端地址读取出待读取数据,并返回给所述轮询进程,所述轮询进程在接收到所述待读取数据之后,将所述待读取数据存储到所述共享内存中。
参见图4所示,本申请实施例公开了一种虚拟机数据读写装置,包括:
IO请求写模块11,用于在虚拟机产生IO请求时,将所述IO请求写入到共享内存中的IO请求队列中,其中,所述共享内存为所述虚拟机的内存,所述IO请求队列为循环队列;
地址转换模块12,用于通过轮询进程从所述IO请求队列中获取所述IO请求,并根据所述IO请求确定对应的IO数据的实际存储端地址,其中,所述轮询进程为预设的用户态进程,用于采用轮询方式对所述IO请求队列进行监测;
第一IO模块13,用于在所述IO请求为写请求时,通过所述轮询进程将所述写请求对应的IO数据、所述实际存储端地址传输到所述虚拟机对应的网卡,其中,所述网卡用于将所述IO数据和所述实际存储端地址发送到所述实际存储端地址对应的物理存储端;
第二IO模块14,用于在所述IO请求为读请求时,通过所述轮询进程将所述实际存储端地址传输到所述虚拟机对应的网卡,其中,所述网卡用于将所述实际存储端地址发送到所述实际存储端地址对应的物理存储端,并接收所述物理存储端返回的所述读请求对应的IO数据。
可见,本申请在虚拟机产生IO请求时,将所述IO请求写入到共享内存中的IO请求队列中,其中,所述共享内存为所述虚拟机对应的内存,所述IO请求队列为循环队列。然后通过轮询进程从所述IO请求队列中获取所述IO请求,并根据所述IO请求确定对应的IO数据的实际存储端地址,其中,所述轮询进程为预设的用户态进程,用于采用轮询方式对所述IO请求队列进行监测。当所述IO请求为写请求时,通过所述轮询进程将所述写请求对应的IO数据、所述实际存储端地址传输到所述虚拟机对应的网卡,其中,所述网卡用于将所述IO数据和所述实际存储端地址发送到所述实际存储端地址对应的物理存储端。当所述IO请求为读请求时,通过所述轮询进程将所述实际存储端地址传输到所述虚拟机对应的网卡,其中,所述网卡用于将所述实际存储端地址发送到所述实际存储端地址对应的物理存储端,并接收所述物理存储端返回的所述读请求对应的IO数据。由此可见,本申请中是在虚拟机生成IO请求时,先将所述IO请求写入到所述虚拟机的共享内存中的IO请求队列中,而所述IO请求队列为循环队列,避免了现有技术中互斥锁的使用,避免了多个进程运行过程中由于互斥锁而阻塞,提高了数据处理性能。通过用户态的轮询进程从所述IO请求队列中获取所述IO请求,并根据所述IO请求确定对应的IO数据的实际存储端地址,以及将相应的数据发送到虚拟机对应的网卡,网卡便可以将相应的数据发送到物理存储端,进行数据读写操作。这样通过轮询方式处理IO请求队列中的IO请求,避免了现有IO处理中的中断机制带来的计算机性能消耗,且所述轮询进程位于用户态,消除了原IO路径中的用户态和内核态之间的多次切换,极大地提高了数据读写处理性能。且由于共享内存为虚拟机对应的内存,使得IO请求为写请求时,对应的IO数据本身就在共享内存中,轮询进程可以直接将共享内存中的IO数据传输到对应的网卡,避免了现有技术中IO数据在不同模块中进行拷贝,导致的内存带宽占用,提高了IO下发效率。
在一些具体的实施过程中,所述第一IO模块13,用于:
当所述IO请求为写请求时,通过所述轮询进程将目标链接标识传输到所述虚拟机对应的网卡,其中,所述目标链接标识表示所述网卡与所述实际存储端地址对应的物理存储端之间通信的目标链接,所述网卡通过所述目标链接将所述IO数据和所述实际存储端地址发送到所述实际存储端地址对应的物理存储端。
在一些具体的实施过程中,所述虚拟机数据读写装置,还包括:
路径确定模块,用于通过所述轮询进程确定所述网卡与所述实际存储端地址对应的物理存储端之间通信的目标链接,其中,所述网卡与所述存储端之间建立有多条链接;将所述目标链接的标识作为所述目标链接标识。
在一些具体的实施过程中,所述路径确定模块,用于:
通过所述轮询进程确定所述实际存储端地址对应的物理存储端;
通过所述轮询进程获取所述网卡到所述物理存储端的各条链接的时延,并将时延最低的链接作为所述网卡与所述实际存储端地址对应的物理存储端之间通信的目标链接。
在一些具体的实施过程中,所述路径确定模块,用于:
当所述IO请求为多个时,通过所述轮询进程对各个所述IO请求对应的IO数据的实际存储端地址进行分类;
通过所述轮询进程分别确定所述网卡与各类所述实际存储端地址对应的物理存储端之间通信的目标链接。
在一些具体的实施过程中,所述第二IO模块14,用于:
当所述IO请求为读请求时,通过所述轮询进程将目标链接标识传输到所述虚拟机对应的网卡,其中,所述目标链接标识表示所述网卡与所述实际存储端地址对应的物理存储端之间通信的目标链接,所述网卡用于通过所述目标链接将所述实际存储端地址发送到所述实际存储端地址对应的物理存储端,并接收所述物理存储端返回的所述读请求对应的IO数据。
在一些具体的实施过程中,所述第一IO模块13,用于:
当所述IO请求为写请求时,所述IO数据为待写入数据,通过所述轮询进程根据所述IO请求中的共享内存地址从所述共享内存中读取所述待写入数据,并将所述待写入数据及所述实际存储端地址传输到所述虚拟机对应的网卡,其中,所述共享内存地址为所述待写入数据在所述共享内存中的地址。
在一些具体的实施过程中,所述虚拟机数据读写装置,还包括:
IO请求队列设置模块,用于利用大页内存作为所述共享内存,并在所述共享内存中设置循环队列作为所述IO请求队列;
轮询进程创建模块,用于在所述虚拟机启动前,根据所述虚拟机的IO压力创建所述轮询进程;
信息获取模块,用于在所述虚拟机启动时,通过所述轮询进程获取所述共享内存的地址空间信息,得到所述IO请求队列的信息。
在一些具体的实施过程中,所述地址转换模块12,用于:
根据所述IO请求中的虚拟磁盘地址和地址映射关系确定对应的IO数据的实际存储端地址,其中,所述虚拟磁盘地址为所述IO数据对应的所述虚拟机的虚拟磁盘上的地址,所述地址映射关系为所述虚拟磁盘上的地址与物理存储端上的实际存储端地址之间的映射关系。
在一些具体的实施过程中,所述虚拟机数据读写装置,还包括:
存储聚合模块,用于将不同物理存储端的存储切片聚合映射形成所述虚拟磁盘。
在一些具体的实施过程中,所述地址转换模块12,用于:
当所述IO请求的数量为多个时,通过所述轮询进程采用批处理方式从所述IO请求队列中获取所述IO请求;
分别根据各个所述IO请求确定对应的IO数据的实际存储端地址。
在一些具体的实施过程中,所述第二IO模块14,用于:
通过所述轮询进程获取所述网卡接收到的所述IO数据,并根据所述IO请求中的共享内存地址将所述IO数据写入到所述共享内存中,其中,所述IO数据为待读取数据,所述共享内存地址为所述共享内存中用于存储所述待读取数据的地址。
参见图5,为本申请实施例提供的一种电子设备20的结构示意图,该电子设备20具体可以包括但不限于笔记本电脑或台式电脑等。
通常,本实施例中的电子设备20包括:处理器21和存储器22。
其中,处理器21可以包括一个或多个处理核心,比如四核心处理器、八核心处理器等。处理器21可以采用DSP(digital signal processing,数字信号处理)、FPGA(field-programmable gate array,现场可编程们阵列)、PLA(programmable logic array,可编程逻辑阵列)中的至少一种硬件来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(central processing unit,中应处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以集成有GPU(graphics processing unit,图像处理器),GPU用于负责显示屏所需要显示的图像的渲染和绘制。一些实施例中,处理器21可以包括AI(artificialintelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器22可以包括一个或多个计算机可读存储介质,计算机可读存储介质可以是非暂态的。存储器22还可以包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器22至少用于存储以下计算机程序221,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例中公开的虚拟机数据读写方法步骤。
在一些实施例中,电子设备20还可包括有显示屏23、输入输出接口24、通信接口25、传感器26、电源27以及通信总线28。
本技术领域人员可以理解,图5中示出的结构并不构成对电子设备20的限定,可以包括比图示更多或更少的组件。
进一步的,本申请实施例还公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述任一实施例中公开的虚拟机数据读写方法。
其中,关于上述虚拟机数据读写方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得一系列包含其他要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种虚拟机数据读写方法、装置、设备、介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (14)
1.一种虚拟机数据读写方法,其特征在于,包括:
在虚拟机产生IO请求时,将所述IO请求写入到共享内存中的IO请求队列中,其中,所述共享内存为所述虚拟机对应的内存,所述IO请求队列为循环队列;
通过轮询进程从所述IO请求队列中获取所述IO请求,并根据所述IO请求确定对应的IO数据的实际存储端地址,其中,所述轮询进程为预设的用户态进程,用于采用轮询方式对所述IO请求队列进行监测;
当所述IO请求为写请求时,通过所述轮询进程将所述写请求对应的IO数据、所述实际存储端地址传输到所述虚拟机对应的网卡,其中,所述网卡用于将所述IO数据和所述实际存储端地址发送到所述实际存储端地址对应的物理存储端;
当所述IO请求为读请求时,通过所述轮询进程将所述实际存储端地址传输到所述虚拟机对应的网卡,其中,所述网卡用于将所述实际存储端地址发送到所述实际存储端地址对应的物理存储端,并接收所述物理存储端返回的所述读请求对应的IO数据;
其中,当所述IO请求为写请求时,所述方法还包括:
通过所述轮询进程将目标链接标识传输到所述虚拟机对应的网卡,其中,所述目标链接标识表示所述网卡与所述实际存储端地址对应的物理存储端之间通信的目标链接,所述网卡用于通过所述目标链接将所述IO数据和所述实际存储端地址发送到所述实际存储端地址对应的物理存储端;所述目标链接为所述网卡到所述物理存储端的各条链接中时延最低的链接。
2.根据权利要求1所述的虚拟机数据读写方法,其特征在于,所述通过所述轮询进程将目标链接标识传输到所述虚拟机对应的网卡之前,还包括:
通过所述轮询进程确定所述网卡与所述实际存储端地址对应的物理存储端之间通信的目标链接,其中,所述网卡与所述存储端之间建立有多条链接;
将所述目标链接的标识作为所述目标链接标识。
3.根据权利要求2所述的虚拟机数据读写方法,其特征在于,所述通过所述轮询进程确定所述网卡与所述实际存储端地址对应的物理存储端之间通信的目标链接,包括:
通过所述轮询进程确定所述实际存储端地址对应的物理存储端;
通过所述轮询进程获取所述网卡到所述物理存储端的各条链接的时延,并将时延最低的链接作为所述网卡与所述实际存储端地址对应的物理存储端之间通信的目标链接。
4.根据权利要求2所述的虚拟机数据读写方法,其特征在于,所述通过所述轮询进程确定所述网卡与所述实际存储端地址对应的物理存储端之间通信的目标链接,包括:
当所述IO请求为多个时,通过所述轮询进程对各个所述IO请求对应的IO数据的实际存储端地址进行分类;
通过所述轮询进程分别确定所述网卡与各类所述实际存储端地址对应的物理存储端之间通信的目标链接。
5.根据权利要求1所述的虚拟机数据读写方法,其特征在于,当所述IO请求为读请求时,所述方法还包括:
通过所述轮询进程将目标链接标识传输到所述虚拟机对应的网卡,其中,所述目标链接标识表示所述网卡与所述实际存储端地址对应的物理存储端之间通信的目标链接,所述网卡用于通过所述目标链接将所述实际存储端地址发送到所述实际存储端地址对应的物理存储端,并接收所述物理存储端返回的所述读请求对应的IO数据。
6.根据权利要求1所述的虚拟机数据读写方法,其特征在于,所述当所述IO请求为写请求时,通过所述轮询进程将所述写请求对应的IO数据、所述实际存储端地址传输到所述虚拟机对应的网卡,包括:
当所述IO请求为写请求时,所述IO数据为待写入数据,通过所述轮询进程根据所述IO请求中的共享内存地址从所述共享内存中读取所述待写入数据,并将所述待写入数据及所述实际存储端地址传输到所述虚拟机对应的网卡,其中,所述共享内存地址为所述待写入数据在所述共享内存中的地址。
7.根据权利要求1所述的虚拟机数据读写方法,其特征在于,所述将所述IO请求写入到共享内存中的IO请求队列中之前,还包括:
利用大页内存作为所述共享内存,并在所述共享内存中设置循环队列作为所述IO请求队列;
在所述虚拟机启动前,根据所述虚拟机的IO压力创建所述轮询进程;
在所述虚拟机启动时,通过所述轮询进程获取所述共享内存的地址空间信息,得到所述IO请求队列的信息。
8.根据权利要求1所述的虚拟机数据读写方法,其特征在于,所述根据所述IO请求确定对应的IO数据的实际存储端地址,包括:
根据所述IO请求中的虚拟磁盘地址和地址映射关系确定对应的IO数据的实际存储端地址,其中,所述虚拟磁盘地址为所述IO数据对应的所述虚拟机的虚拟磁盘上的地址,所述地址映射关系为所述虚拟磁盘上的地址与物理存储端上的实际存储端地址之间的映射关系。
9.根据权利要求8所述的虚拟机数据读写方法,其特征在于,所述将所述IO请求写入到共享内存中的IO请求队列中之前,还包括:
将不同物理存储端的存储切片聚合映射形成所述虚拟磁盘。
10.根据权利要求1所述的虚拟机数据读写方法,其特征在于,所述通过轮询进程从所述IO请求队列中获取所述IO请求,并根据所述IO请求确定对应的IO数据的实际存储端地址,包括:
当所述IO请求的数量为多个时,通过所述轮询进程采用批处理方式从所述IO请求队列中获取所述IO请求;
分别根据各个所述IO请求确定对应的IO数据的实际存储端地址。
11.根据权利要求1至10任一项所述的虚拟机数据读写方法,其特征在于,所述通过所述轮询进程将所述实际存储端地址传输到所述虚拟机对应的网卡之后,还包括:
通过所述轮询进程获取所述网卡接收到的所述IO数据,并根据所述IO请求中的共享内存地址将所述IO数据写入到所述共享内存中,其中,所述IO数据为待读取数据,所述共享内存地址为所述共享内存中用于存储所述待读取数据的地址。
12.一种虚拟机数据读写装置,其特征在于,包括:
IO请求写模块,用于在虚拟机产生IO请求时,将所述IO请求写入到共享内存中的IO请求队列中,其中,所述共享内存为所述虚拟机的内存,所述IO请求队列为循环队列;
地址转换模块,用于通过轮询进程从所述IO请求队列中获取所述IO请求,并根据所述IO请求确定对应的IO数据的实际存储端地址,其中,所述轮询进程为预设的用户态进程,用于采用轮询方式对所述IO请求队列进行监测;
第一IO模块,用于在所述IO请求为写请求时,通过所述轮询进程将所述写请求对应的IO数据、所述实际存储端地址传输到所述虚拟机对应的网卡,其中,所述网卡用于将所述IO数据和所述实际存储端地址发送到所述实际存储端地址对应的物理存储端;
第二IO模块,用于在所述IO请求为读请求时,通过所述轮询进程将所述实际存储端地址传输到所述虚拟机对应的网卡,其中,所述网卡用于将所述实际存储端地址发送到所述实际存储端地址对应的物理存储端,并接收所述物理存储端返回的所述读请求对应的IO数据;
其中,当所述IO请求为写请求时,所述第一IO模块还用于通过所述轮询进程将目标链接标识传输到所述虚拟机对应的网卡,其中,所述目标链接标识表示所述网卡与所述实际存储端地址对应的物理存储端之间通信的目标链接,所述网卡用于通过所述目标链接将所述IO数据和所述实际存储端地址发送到所述实际存储端地址对应的物理存储端;所述目标链接为所述网卡到所述物理存储端的各条链接中时延最低的链接。
13.一种电子设备,其特征在于,包括:
存储器和处理器;
其中,所述存储器,用于存储计算机程序;
所述处理器,用于执行所述计算机程序,以实现权利要求1至11任一项所述的虚拟机数据读写方法。
14.一种计算机可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至11任一项所述的虚拟机数据读写方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110437206.0A CN113110916B (zh) | 2021-04-22 | 2021-04-22 | 一种虚拟机数据读写方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110437206.0A CN113110916B (zh) | 2021-04-22 | 2021-04-22 | 一种虚拟机数据读写方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113110916A CN113110916A (zh) | 2021-07-13 |
CN113110916B true CN113110916B (zh) | 2023-11-07 |
Family
ID=76719844
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110437206.0A Active CN113110916B (zh) | 2021-04-22 | 2021-04-22 | 一种虚拟机数据读写方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113110916B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114124849A (zh) * | 2021-12-03 | 2022-03-01 | 北京天融信网络安全技术有限公司 | 一种基于vhost-user的服务链实现方法及装置 |
CN114625480A (zh) * | 2022-03-17 | 2022-06-14 | 北京有竹居网络技术有限公司 | 数据处理方法、装置、可读介质以及计算设备 |
CN115576654B (zh) * | 2022-11-17 | 2023-03-10 | 苏州浪潮智能科技有限公司 | 一种请求处理方法、装置、设备及存储介质 |
CN116069246B (zh) * | 2022-11-30 | 2023-08-29 | 北京天融信网络安全技术有限公司 | 用于虚拟机的数据读写方法及*** |
CN115865803B (zh) * | 2023-03-03 | 2023-08-22 | 浪潮电子信息产业股份有限公司 | 一种io请求处理方法、装置、设备及可读存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000067131A2 (en) * | 1999-05-04 | 2000-11-09 | At & T Laboratories-Cambridge Limited | Data transfer, synchronising applications, and low latency networks |
CN104468462A (zh) * | 2013-09-12 | 2015-03-25 | 杭州华三通信技术有限公司 | 分布式虚拟交换机***的报文转发方法及设备 |
CN104796337A (zh) * | 2015-04-10 | 2015-07-22 | 京信通信***(广州)有限公司 | 一种转发报文的方法及装置 |
CN107678835A (zh) * | 2017-09-30 | 2018-02-09 | 东软集团股份有限公司 | 一种数据传输方法及*** |
CN107733889A (zh) * | 2017-10-13 | 2018-02-23 | 郑州云海信息技术有限公司 | 一种虚拟机的网络访问方法、装置、设备及存储介质 |
CN111026561A (zh) * | 2019-10-30 | 2020-04-17 | 烽火通信科技股份有限公司 | 一种云平台的数据通信方法、***及计算机可读介质 |
CN111813584A (zh) * | 2020-08-05 | 2020-10-23 | Oppo广东移动通信有限公司 | 内存共享方法、装置、电子设备及存储介质 |
-
2021
- 2021-04-22 CN CN202110437206.0A patent/CN113110916B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000067131A2 (en) * | 1999-05-04 | 2000-11-09 | At & T Laboratories-Cambridge Limited | Data transfer, synchronising applications, and low latency networks |
CN104468462A (zh) * | 2013-09-12 | 2015-03-25 | 杭州华三通信技术有限公司 | 分布式虚拟交换机***的报文转发方法及设备 |
CN104796337A (zh) * | 2015-04-10 | 2015-07-22 | 京信通信***(广州)有限公司 | 一种转发报文的方法及装置 |
CN107678835A (zh) * | 2017-09-30 | 2018-02-09 | 东软集团股份有限公司 | 一种数据传输方法及*** |
CN107733889A (zh) * | 2017-10-13 | 2018-02-23 | 郑州云海信息技术有限公司 | 一种虚拟机的网络访问方法、装置、设备及存储介质 |
CN111026561A (zh) * | 2019-10-30 | 2020-04-17 | 烽火通信科技股份有限公司 | 一种云平台的数据通信方法、***及计算机可读介质 |
CN111813584A (zh) * | 2020-08-05 | 2020-10-23 | Oppo广东移动通信有限公司 | 内存共享方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113110916A (zh) | 2021-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113110916B (zh) | 一种虚拟机数据读写方法、装置、设备及介质 | |
CN114020655A (zh) | 一种内存扩展方法、装置、设备及存储介质 | |
US8904045B2 (en) | Opportunistic improvement of MMIO request handling based on target reporting of space requirements | |
CN111813713B (zh) | 数据加速运算处理方法、装置及计算机可读存储介质 | |
JP6386089B2 (ja) | 最適化されたブラウザレンダリングプロセス | |
KR20180105554A (ko) | 지역 베이스보드 관리 제어기를 이용하여 패브릭 시스템에 걸쳐 불휘발성 메모리 익스프레스 내에서 공유된 그래픽 처리부 자원들을 할당하는 방법 | |
US20230152978A1 (en) | Data Access Method and Related Device | |
KR20170013882A (ko) | 플래시 메모리 기반 저장 디바이스의 멀티 호스트 전력 제어기(mhpc) | |
DE102020114142A1 (de) | Technologien für unterbrechungs-disassoziierte warteschlangenbildung für multi-warteschlangen-i/o-vorrichtungen | |
CN114461593B (zh) | 日志写入方法及其装置、电子设备及存储介质 | |
CN111049904A (zh) | 多公有云资源监控的方法与设备 | |
CN115934625B (zh) | 一种用于远程直接内存访问的敲门铃方法、设备及介质 | |
CN115964319A (zh) | 远程直接内存访问的数据处理方法及相关产品 | |
CN117591450B (zh) | 一种数据处理***、方法、设备及介质 | |
WO2016049807A1 (zh) | 多核处理器***的缓存目录处理方法和目录控制器 | |
EP4220375A1 (en) | Systems, methods, and devices for queue management with a coherent interface | |
EP4124963A1 (en) | System, apparatus and methods for handling consistent memory transactions according to a cxl protocol | |
US8938588B2 (en) | Ensuring forward progress of token-required cache operations in a shared cache | |
CN113138718A (zh) | 用于分布式块存储***的存储方法、设备、***和介质 | |
CN110221985B (zh) | 跨芯片维护缓存一致性策略的装置与方法 | |
CN113093994A (zh) | 一种数据处理方法及装置 | |
CN112612424A (zh) | 一种NVMe提交队列控制装置及方法 | |
CN114301927B (zh) | 一种分布式***中主节点选取方法、装置及介质 | |
US11853593B2 (en) | Shared memory protection method for securing MMIO commands | |
CN116909998B (zh) | overlay文件***下文件的处理方法和装置 |
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 |