CN107153569B - 虚拟机读写失败的处理方法及装置 - Google Patents

虚拟机读写失败的处理方法及装置 Download PDF

Info

Publication number
CN107153569B
CN107153569B CN201710181121.4A CN201710181121A CN107153569B CN 107153569 B CN107153569 B CN 107153569B CN 201710181121 A CN201710181121 A CN 201710181121A CN 107153569 B CN107153569 B CN 107153569B
Authority
CN
China
Prior art keywords
virtual machine
read
write
locking
storage system
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
CN201710181121.4A
Other languages
English (en)
Other versions
CN107153569A (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.)
Sangfor Technologies Co Ltd
Original Assignee
Sangfor 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 Sangfor Technologies Co Ltd filed Critical Sangfor Technologies Co Ltd
Priority to CN201710181121.4A priority Critical patent/CN107153569B/zh
Publication of CN107153569A publication Critical patent/CN107153569A/zh
Application granted granted Critical
Publication of CN107153569B publication Critical patent/CN107153569B/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
    • 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/45591Monitoring or debugging support

Abstract

本发明公开了一种虚拟机读写失败的处理方法,该方法流程包括:将虚拟机的读写请求发送至宿主机的存储系统;在接收到所述存储系统返回的读写错误的响应时,控制所述虚拟机进入暂停状态;当侦测到所述存储系统恢复正常后,调用预设加锁函数对所述虚拟机的镜像文件进行加锁处理;若加锁成功,则恢复所述虚拟机的运行,若加锁失败,则结束所述虚拟机的运行。本发明还提出一种虚拟机读写失败的处理装置。本发明解决了现有技术中在处理读写失败问题时,难以保证数据的完整性与正常性的技术问题。

Description

虚拟机读写失败的处理方法及装置
技术领域
本发明涉及数据处理技术领域,尤其涉及一种虚拟机读写失败的处理方法及装置。
背景技术
虚拟化技术可以在一台高性能物理机上虚拟化出多台物理机,通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统被称为虚拟机,例如KVM(Kernel-based Virtual Machine,基于Linux内核的虚拟机)。该高新能物理机提供存储系统用来保存镜像文件以及用户数据等。但是,在使用过程中,可能存在一些异常情况,例如,在为虚拟机建立的高可用集群中,当发生存储离线或者管理网掉线等现象时,导致宿主机出现孤立,导致虚拟机的读写无法正常进行,虚拟机这种情况一般称为“脑裂”。其中,存储离线是指由于存储口的网线掉线或者其他原因导致宿主机的存储上的虚拟机系统无法正常读写;管理网掉线是指虚拟机集群管理口网络中断,导致当前的宿主机从集群中脱离,变成离线状态。
当发生“脑裂”时,会出现在高可用集群中的其他主机节点上拉起多个相同实例的情形,当脑裂恢复后,会随机的关闭虚拟机进程,导致被关闭的虚拟机进程可能是具有最新状态的虚拟机,导致无法保证数据的完整性与正确性,进而导致虚拟机无法正常运行。
发明内容
本发明提供一种虚拟机读写失败的处理方法及装置,其主要目的在于解决现有技术中在处理读写失败问题时,难以保证数据的完整性与正常性的技术问题。
为实现上述目的,本发明提供一种虚拟机读写失败的处理方法,该虚拟机读写失败的处理方法包括:
将虚拟机的读写请求发送至宿主机的存储系统;
在接收到所述存储系统返回的读写错误的响应时,控制所述虚拟机进入暂停状态;
当侦测到所述存储系统恢复正常后,调用预设加锁函数对所述虚拟机的镜像文件进行加锁处理;
若加锁成功,则恢复所述虚拟机的运行,若加锁失败,则结束所述虚拟机的运行。
可选地,所述当侦测到所述存储系统恢复正常后,调用预设加锁函数对所述虚拟机的镜像文件进行加锁处理的步骤包括:
当侦测到所述存储系统恢复正常后,确定恢复正常后的所述存储系统的存储类型;
调用与所述存储类型匹配的预设加锁函数对所述虚拟机的镜像文件进行加锁处理。
可选地,若所述存储系统为外置存储,则在调用与所述存储类型匹配的预设加锁函数对所述虚拟机的镜像文件进行加锁处理的步骤之后,执行若加锁成功,则恢复所述虚拟机的运行,若加锁失败,则结束所述虚拟机的运行的步骤;
若所述存储系统属于分布式存储,则在调用与所述存储类型匹配的预设加锁函数对所述虚拟机的镜像文件进行加锁处理的步骤之后,所述虚拟机读写失败的处理方法还包括步骤:
若加锁成功,则恢复所述虚拟机的运行;
若加锁失败、且所述预设加锁函数返回的错误码为预设错误码,则结束所述虚拟机的运行;
若加锁失败、且所述预设加锁函数返回的错误码不是预设错误码,则保持所述虚拟机的暂停状态。
可选地,所述在接收到所述存储系统返回的读写错误的响应时,控制所述虚拟机进入暂停状态的步骤包括:
在接收到所述存储系统返回的读写错误的响应时,确定所述读写错误的错误类型;
若所述错误类型属于预设错误类型,则控制所述虚拟机重新发送所述读写请求直至重复发送所述读写请求的次数达到预设次数后,控制所述虚拟机进入暂停状态;
若所述错误类型不属于所述预设错误类型,则控制所述虚拟机进入暂停状态。
可选地,所述虚拟机读写失败的处理方法还包括:
在接收到所述存储系统返回的读写错误的响应时,记录所述读写请求的相关数据;
在侦测到所述虚拟机恢复运行后,根据记录的所述相关数据重新发送所述读写请求。
此外,为实现上述目的,本发明还提供一种虚拟机读写失败的处理装置,该虚拟机读写失败的处理装置包括:
发送模块,用于将虚拟机的读写请求发送至宿主机的存储系统;
休眠模块,用于在接收到所述存储系统返回的读写错误的响应时,控制所述虚拟机进入暂停状态;
加锁模块,用于当侦测到所述存储系统恢复正常后,调用预设加锁函数对所述虚拟机的镜像文件进行加锁处理;
控制模块,用于若加锁成功,则恢复所述虚拟机的运行,若加锁失败,则结束所述虚拟机的运行。
可选地,所述加锁模块还用于:当侦测到所述存储系统恢复正常后,确定恢复正常后的所述存储系统的存储类型;
以及,调用与所述存储类型匹配的预设加锁函数对所述虚拟机的镜像文件进行加锁处理。
可选地,若所述存储系统为外置存储,则在所述加锁模块调用与所述存储类型匹配的预设加锁函数对所述虚拟机的镜像文件进行加锁处理之后,若加锁成功,则所述控制模块恢复所述虚拟机的运行,若加锁失败,则所述控制模块结束所述虚拟机的运行所述控制模块;
若所述存储属于分布式存储,则在所述加锁模块调用与所述存储类型匹配的预设加锁函数对所述虚拟机的镜像文件进行加锁处理之后,所述控制模块还用于:
若加锁成功,则恢复所述虚拟机的运行;
若加锁失败、且所述预设加锁函数返回的错误码为预设错误码,则结束所述虚拟机的运行;
若加锁失败、且所述预设加锁函数返回的错误码不是预设错误码,则保持所述虚拟机的暂停状态。
可选地,所述休眠模块包括:
确定单元,用于在接收到所述存储系统返回的读写错误的响应时,确定所述读写错误的错误类型;
第一休眠单元,用于若所述错误类型属于预设错误类型,则控制所述虚拟机重新发送所述读写请求直至重复发送所述读写请求的次数达到预设次数后,控制所述虚拟机进入暂停状态;
第二休眠单元,用于若所述错误类型不属于所述预设错误类型,则控制所述虚拟机进入暂停状态。
可选地,所述虚拟机读写失败的处理装置还包括:
记录模块,用于在接收到所述存储系统返回的读写错误的响应时,记录所述读写请求的相关数据;
所述发送模块还用于:在侦测到所述虚拟机恢复运行后,根据记录的所述相关数据重新发送所述读写请求。
本发明提出的虚拟机读写失败的处理方法及装置,将虚拟机的读写请求发送至宿主机的存储系统,在接收到存储系统返回的读写错误的响应时,控制虚拟机进入暂停状态,在侦测到存储系统恢复正常后,调用预设加锁函数对虚拟机的镜像文件进行加锁处理,此时,如果加锁失败,则说明在虚拟机集群中的其他主机上已经拉起了与当前读写失败的虚拟机相同的实例,为了保证该相同实例的正常运行,可以结束当前的虚拟机进程,以保证基于拉起的相同实例保证数据的完整性与正确性,保证具有最新状态的虚拟机的正常运行;如果加锁成功,则说明此时在集群中的其他主机上没有运行与当前读写失败的虚拟机相同的实例,则恢复该虚拟机的正常运行。
附图说明
图1为本发明虚拟机读写失败的处理方法第一实施例的流程图;
图2为本发明虚拟机读写失败的处理方法第二实施例中加锁步骤的细化流程示意图;
图3为本发明虚拟机读写失败的处理装置第一实施例的功能模块示意图;
图4为本发明虚拟机读写失败的处理装置第二实施例中休眠模块20的细化功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种虚拟机读写失败的处理方法。参照图1所示,为本发明虚拟机读写失败的处理方法第一实施例的流程图。
在本实施例中,该虚拟机读写失败的处理方法包括:
步骤S10,将虚拟机的读写请求发送至宿主机的存储系统。
步骤S20,在接收到所述存储系统返回的读写错误的响应时,控制所述虚拟机进入暂停状态。
步骤S30,当侦测到所述存储系统恢复正常后,调用预设加锁函数对所述虚拟机的镜像文件进行加锁处理。
本发明实施例中,硬件结构为宿主机以及宿主机提供的存储系统,一般情况下,存储系统包括以下存储类型:本地存储、外置存储以及分布式存储。其中,对于本地存储来说,由于集群中的主机并不会使用除自身外的其他主机节点的本地存储,因此,一般不需要进行加锁。关于预设加锁函数,可以根据存储类型预先设置。
宿主机为安装虚拟机软件的物理机,一台物理机上可以运行一个或者多个虚拟机,一个虚拟机包含一个虚拟机进程,下文中所述的控制虚拟机进入暂停状态一般是指控制其虚拟机进程进入暂停状态。
虚拟机在运行过程中,虚拟机进程或者虚拟机系统中的应用程序在运行时,虚拟机操作系统里面会进行一些读写操作,例如编辑word文档并保存,虚拟机需要将读写请求发送给宿主机系统,由宿主机系统基于该读写请求在存储系统上进行读写操作,存储系统将对读写请求的执行结果返回给虚拟机,若是读请求,读操作成功后,将读操作的数据返回给虚拟机,若是写操作,写操作执行成功,向虚拟机发送写操作执行成功的响应信息。当宿主机的存储系统出现问题或者宿主机离线等原因导致读写失败时,向虚拟机返回读写失败的响应。
当接收到读写失败的响应时,控制所述虚拟机进入暂停状态,暂停当前正在执行的任务。在进入暂停状态后,对宿主机的存储系统的状态进行实时侦测。当侦测到存储系统恢复正常运行后,对虚拟机的镜像文件进行加锁处理。在对镜像文件进行加锁时,可以按照恢复正常运行后的存储系统的存储类型来进行加锁。具体地,步骤S30包括如下细化步骤:当侦测到所述存储系统恢复正常后,确定恢复正常后的所述存储系统的存储类型;调用与所述存储类型匹配的预设加锁函数对所述虚拟机的镜像文件进行加锁处理。
步骤S40,若加锁成功,则恢复所述虚拟机的运行,若加锁失败,则结束所述虚拟机的运行。
由于存储类型的不同,对于加锁处理的响应也不相同。具体地,若所述存储系统为外置存储,则步骤S30之后,执行步骤S40;若所述存储系统属于分布式存储,则在步骤S30之后,所述虚拟机读写失败的处理方法还包括:
若加锁成功,则恢复所述虚拟机的运行;
若加锁失败、且所述预设加锁函数返回的错误码为预设错误码,则结束所述虚拟机的运行;
若加锁失败、且所述预设加锁函数返回的错误码不是预设错误码,则保持所述虚拟机的暂停状态。
也就是说,在本实施例中,对于采用分布式存储的宿主机来说,有可能在该主机的存储系统发生故障时,集群中的其他主机上拉起了与该虚拟机相同的实例,并继续运行该虚拟机,因此,对于采用分布式存储的宿主机来说,预先设置错误码,该错误码用于判断是否在集群中拉起了相同实例,如果检测到集群中有其他的主机节点上拉起了相同的实例,则存储系统会返回预先约定好的错误码。
对于虚拟机系统来说,在接收到加锁失败的响应,并且接收到的错误码为预设错误码时,可以直接结束虚拟机的运行,即杀死虚拟机进程,因为此时已经有其他的主机上运行了与该虚拟机相同的实例,并具有最新的数据与状态,为了保证具有最新状态的虚拟机的正常运行,直接结束当前的虚拟机的运行。
如果加锁失败,并且接收到的错误码不是预设错误码,则认为加锁失败的原因不是其他的主机上运行了与该虚拟机相同的实例所导致的,则保持虚拟机的暂停状态。在其他实施例中,也可以进一步地发出提示信息。
如果加锁成功,则回复虚拟机的正常运行,对于之前失败的读写请求,可以根据记录的相关数据再次发送读写请求。
进一步地,作为一种实施方式,该方法还包括步骤:
在接收到所述存储系统返回的读写错误的响应时,记录所述读写请求的相关数据;在侦测到所述虚拟机恢复运行后,根据记录的所述相关数据重新发送所述读写请求。
当读写错误时,对于读写请求相关的数据进行记录,以便于在虚拟机恢复运行后,就可以根据记录的相关数据重新发送读写请求,其中,相关数据包括读写操作文件信息、读写操作扇区等信息。
本实施例提出的虚拟机读写失败的处理方法,将虚拟机的读写请求发送至宿主机的存储系统,在接收到存储系统返回的读写错误的响应时,控制虚拟机进入暂停状态,在侦测到存储系统恢复正常后,调用预设加锁函数对虚拟机的镜像文件进行加锁处理,此时,如果加锁失败,则说明在虚拟机集群中的其他主机上已经拉起了与当前读写失败的虚拟机相同的实例,为了保证该相同实例的正常运行,可以结束当前的虚拟机进程,以保证基于拉起的相同实例保证数据的完整性与正确性,保证具有最新状态的虚拟机的正常运行;如果加锁成功,则说明此时在集群中的其他主机上没有运行与当前读写失败的虚拟机相同的实例,则恢复该虚拟机的正常运行。
基于第一实施例提出本发明虚拟机读写失败的处理方法的第二实施例。参照图2所示,在本实施例中,步骤S20包括:
步骤S21,在接收到所述存储系统返回的读写错误的响应时,确定所述读写错误的错误类型;
步骤S22,若所述错误类型属于预设错误类型,则控制所述虚拟机重新发送所述读写请求直至重复发送所述读写请求的次数达到预设次数后,控制所述虚拟机进入暂停状态;
步骤S23,若所述错误类型不属于所述预设错误类型,则控制所述虚拟机进入暂停状态。
在该实施例中,在发生读写错误时,根据不同的错误类型对于读写错误采用不同的处理手段做分类处理,以确保读写错误能够得到及时的解决。其中,预设错误类型为返回的错误代码为EAGAIN的错误,对于这种错误来说,可能只是暂时性的错误,存储系统返回该代码意味着,提示进行重试,因此,对于虚拟机系统来说,可以进行重试操作,重新发送相同的读写请求,并且在重复发送该读写请求的次数达到预设次数后,仍然接收到错误类型为预设错误类型的读写错误响应时,控制虚拟机进入暂停状态,若重新发送读写请求后,接收到成功的响应,则保持虚拟机的继续正常运行。
当错误类型不属于预设错误类型时,例如读写错误为一些可恢复类错误或者不可恢复类错误时,需要控制虚拟机进入暂停状态,并相应的给用户发送提示信息。其中,可恢复类错误一般是网络中断、存储空间不足等问题,这些问题可以由网络监控人员进行网络修复、扩展存储空间或者清理存储空间等处理就可以恢复存储系统的正常运行;不可恢复类错误一般是存储系统的磁盘损坏等需要耗时较长时间才能恢复的问题。对于可恢复类错误,暂停住虚拟机,宿主机进入维护模式,避免用户操作跟存储相关的所有凑哦,并向用户发送提示信息,需要进行维护,例如进行扩容、释放空间等。对于不可恢复类错误,暂停住虚拟机,并提示用户关闭虚拟机,避免耗时过久的等待。
本发明还提出一种虚拟机读写失败的处理装置。
参照图3所示,为本发明虚拟机读写失败的处理装置第一实施例的功能模块示意图。
在该实施例中,该虚拟机读写失败的处理装置包括:
发送模块10,用于将虚拟机的读写请求发送至宿主机的存储系统。
休眠模块20,用于在接收到所述存储系统返回的读写错误的响应时,控制所述虚拟机进入暂停状态。
加锁模块30,用于当侦测到所述存储系统恢复正常后,调用预设加锁函数对所述虚拟机的镜像文件进行加锁处理。
本发明实施例中,硬件结构为宿主机以及宿主机提供的存储系统,一般情况下,存储系统包括以下存储类型:本地存储、外置存储以及分布式存储。其中,对于本地存储来说,由于集群中的主机并不会使用除自身外的其他主机节点的本地存储,因此,一般不需要进行加锁。关于预设加锁函数,可以根据存储类型预先设置。
宿主机为安装虚拟机软件的物理机,一台物理机上可以运行一个或者多个虚拟机,一个虚拟机包含一个虚拟机进程,下文中所述的控制虚拟机进入暂停状态一般是指控制其虚拟机进程进入暂停状态。
虚拟机在运行过程中,虚拟机进程或者虚拟机系统中的应用程序在运行时,虚拟机操作系统里面会进行一些读写操作,例如编辑word文档并保存,虚拟机需要将读写请求发送给宿主机系统,由宿主机系统基于该读写请求在存储系统上进行读写操作,存储系统将对读写请求的执行结果返回给虚拟机,若是读请求,读操作成功后,将读操作的数据返回给虚拟机,若是写操作,写操作执行成功,向虚拟机发送写操作执行成功的响应信息。当宿主机的存储系统出现问题或者宿主机离线等原因导致读写失败时,向虚拟机返回读写失败的响应。
当接收到读写失败的响应时,控制所述虚拟机进入暂停状态,暂停当前正在执行的任务。在进入暂停状态后,对宿主机的存储系统的状态进行实时侦测。当侦测到存储系统恢复正常运行后,对虚拟机的镜像文件进行加锁处理。在对镜像文件进行加锁时,可以按照恢复正常运行后的存储系统的存储类型来进行加锁。具体地,加锁模块30还用于:当侦测到所述存储系统恢复正常后,确定恢复正常后的所述存储系统的存储类型;以及,调用与所述存储类型匹配的预设加锁函数对所述虚拟机的镜像文件进行加锁处理。
控制模块40,用于若加锁成功,则恢复所述虚拟机的运行,若加锁失败,则结束所述虚拟机的运行。
由于存储类型的不同,对于加锁处理的响应也不相同。具体地,则在加锁模块30调用与所述存储类型匹配的预设加锁函数对所述虚拟机的镜像文件进行加锁处理之后,若加锁成功,则控制模块40恢复所述虚拟机的运行,若加锁失败,则控制模块40结束所述虚拟机的运行;
若所述存储属于分布式存储,则在加锁模块30调用与存储类型匹配的预设加锁函数对所述虚拟机的镜像文件进行加锁处理之后,控制模块40还用于:
若加锁成功,则恢复所述虚拟机的运行;
若加锁失败、且所述预设加锁函数返回的错误码为预设错误码,则结束所述虚拟机的运行;
若加锁失败、且所述预设加锁函数返回的错误码不是预设错误码,则保持所述虚拟机的暂停状态。
也就是说,在本实施例中,对于采用分布式存储的宿主机来说,有可能在该主机的存储系统发生故障时,集群中的其他主机上拉起了与该虚拟机相同的实例,并继续运行该虚拟机,因此,对于采用分布式存储的宿主机来说,预先设置错误码,该错误码用于判断是否在集群中拉起了相同实例,如果检测到集群中有其他的主机节点上拉起了相同的实例,则存储系统会返回预先约定好的错误码。
对于虚拟机系统来说,在接收到加锁失败的响应,并且接收到的错误码为预设错误码时,可以直接结束虚拟机的运行,即杀死虚拟机进程,因为此时已经有其他的主机上运行了与该虚拟机相同的实例,并具有最新的数据与状态,为了保证具有最新状态的虚拟机的正常运行,直接结束当前的虚拟机的运行。
如果加锁失败,并且接收到的错误码不是预设错误码,则认为加锁失败的原因不是其他的主机上运行了与该虚拟机相同的实例所导致的,则保持虚拟机的暂停状态。在其他实施例中,也可以进一步地发出提示信息。
如果加锁成功,则回复虚拟机的正常运行,对于之前失败的读写请求,可以根据记录的相关数据再次发送读写请求。
进一步地,作为一种实施方式,该装置还包括:记录模块,用于在接收到所述存储系统返回的读写错误的响应时,记录所述读写请求的相关数据;发送模块10在侦测到所述虚拟机恢复运行后,根据记录的所述相关数据重新发送所述读写请求。
当读写错误时,对于读写请求相关的数据进行记录,以便于在虚拟机恢复运行后,就可以根据记录的相关数据重新发送读写请求,其中,相关数据包括读写操作文件信息、读写操作扇区等信息。
本实施例提出的虚拟机读写失败的处理装置,将虚拟机的读写请求发送至宿主机的存储系统,在接收到存储系统返回的读写错误的响应时,控制虚拟机进入暂停状态,在侦测到存储系统恢复正常后,调用预设加锁函数对虚拟机的镜像文件进行加锁处理,此时,如果加锁失败,则说明在虚拟机集群中的其他主机上已经拉起了与当前读写失败的虚拟机相同的实例,为了保证该相同实例的正常运行,可以结束当前的虚拟机进程,以保证基于拉起的相同实例保证数据的完整性与正确性,保证具有最新状态的虚拟机的正常运行;如果加锁成功,则说明此时在集群中的其他主机上没有运行与当前读写失败的虚拟机相同的实例,则恢复该虚拟机的正常运行。
基于第一实施例提出本发明虚拟机读写失败的处理装置的第二实施例。参照图4所示,在本实施例中,休眠模块20包括:
确定单元21,用于在接收到所述存储系统返回的读写错误的响应时,确定所述读写错误的错误类型;
第一休眠单元22,用于若所述错误类型属于预设错误类型,则控制所述虚拟机重新发送所述读写请求直至重复发送所述读写请求的次数达到预设次数后,控制所述虚拟机进入暂停状态;
第二休眠单元23,用于若所述错误类型不属于所述预设错误类型,则控制所述虚拟机进入暂停状态。
在该实施例中,在发生读写错误时,根据不同的错误类型对于读写错误采用不同的处理手段做分类处理,以确保读写错误能够得到及时的解决。其中,预设错误类型为返回的错误代码为EAGAIN的错误,对于这种错误来说,可能只是暂时性的错误,存储系统返回该代码意味着,提示进行重试,因此,对于虚拟机系统来说,可以进行重试操作,重新发送相同的读写请求,并且在重复发送该读写请求的次数达到预设次数后,仍然接收到错误类型为预设错误类型的读写错误响应时,控制虚拟机进入暂停状态,若重新发送读写请求后,接收到成功的响应,则保持虚拟机的继续正常运行。
当错误类型不属于预设错误类型时,例如读写错误为一些可恢复类错误或者不可恢复类错误时,需要控制虚拟机进入暂停状态,并相应的给用户发送提示信息。其中,可恢复类错误一般是网络中断、存储空间不足等问题,这些问题可以由网络监控人员进行网络修复、扩展存储空间或者清理存储空间等处理就可以恢复存储系统的正常运行;不可恢复类错误一般是存储系统的磁盘损坏等需要耗时较长时间才能恢复的问题。对于可恢复类错误,暂停住虚拟机,宿主机进入维护模式,避免用户操作跟存储相关的所有凑哦,并向用户发送提示信息,需要进行维护,例如进行扩容、释放空间等。对于不可恢复类错误,暂停住虚拟机,并提示用户关闭虚拟机,避免耗时过久的等待。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵该非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,云端服务器,空调器,或者网络设备等)执行本发明各个实施例的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (8)

1.一种虚拟机读写失败的处理方法,其特征在于,所述虚拟机读写失败的处理方法包括:
将虚拟机的读写请求发送至宿主机的存储系统;
在接收到所述存储系统返回的读写错误的响应时,控制所述虚拟机进入暂停状态;
当侦测到所述存储系统恢复正常后,确定恢复正常后的所述存储系统的存储类型;
调用与所述存储类型匹配的预设加锁函数对所述虚拟机的镜像文件进行加锁处理;
若加锁成功,则恢复所述虚拟机的运行,若加锁失败,则结束所述虚拟机的运行。
2.根据权利要求1所述的虚拟机读写失败的处理方法,其特征在于,若所述存储系统为外置存储,则在调用与所述存储类型匹配的预设加锁函数对所述虚拟机的镜像文件进行加锁处理的步骤之后,执行若加锁成功,则恢复所述虚拟机的运行,若加锁失败,则结束所述虚拟机的运行的步骤;
若所述存储系统属于分布式存储,则在调用与所述存储类型匹配的预设加锁函数对所述虚拟机的镜像文件进行加锁处理的步骤之后,所述虚拟机读写失败的处理方法还包括步骤:
若加锁成功,则恢复所述虚拟机的运行;
若加锁失败、且所述预设加锁函数返回的错误码为预设错误码,则结束所述虚拟机的运行;
若加锁失败、且所述预设加锁函数返回的错误码不是预设错误码,则保持所述虚拟机的暂停状态。
3.根据权利要求1所述的虚拟机读写失败的处理方法,其特征在于,所述在接收到所述存储系统返回的读写错误的响应时,控制所述虚拟机进入暂停状态的步骤包括:
在接收到所述存储系统返回的读写错误的响应时,确定所述读写错误的错误类型;
若所述错误类型属于预设错误类型,则控制所述虚拟机重新发送所述读写请求直至重复发送所述读写请求的次数达到预设次数后,控制所述虚拟机进入暂停状态;
若所述错误类型不属于所述预设错误类型,则控制所述虚拟机进入暂停状态。
4.根据权利要求1或2所述的虚拟机读写失败的处理方法,其特征在于,所述虚拟机读写失败的处理方法还包括:
在接收到所述存储系统返回的读写错误的响应时,记录所述读写请求的相关数据;
在侦测到所述虚拟机恢复运行后,根据记录的所述相关数据重新发送所述读写请求。
5.一种虚拟机读写失败的处理装置,其特征在于,所述虚拟机读写失败的处理装置包括:
发送模块,用于将虚拟机的读写请求发送至宿主机的存储系统;
休眠模块,用于在接收到所述存储系统返回的读写错误的响应时,控制所述虚拟机进入暂停状态;
加锁模块,用于当侦测到所述存储系统恢复正常后,确定恢复正常后的所述存储系统的存储类型;
调用与所述存储类型匹配的预设加锁函数对所述虚拟机的镜像文件进行加锁处理;
控制模块,用于若加锁成功,则恢复所述虚拟机的运行,若加锁失败,则结束所述虚拟机的运行。
6.根据权利要求5所述的虚拟机读写失败的处理装置,其特征在于,若所述存储系统为外置存储,则在所述加锁模块调用与所述存储类型匹配的预设加锁函数对所述虚拟机的镜像文件进行加锁处理之后,若加锁成功,则所述控制模块恢复所述虚拟机的运行,若加锁失败,则所述控制模块结束所述虚拟机的运行;
若所述存储属于分布式存储,则在所述加锁模块调用与所述存储类型匹配的预设加锁函数对所述虚拟机的镜像文件进行加锁处理之后,所述控制模块还用于:
若加锁成功,则恢复所述虚拟机的运行;
若加锁失败、且所述预设加锁函数返回的错误码为预设错误码,则结束所述虚拟机的运行;
若加锁失败、且所述预设加锁函数返回的错误码不是预设错误码,则保持所述虚拟机的暂停状态。
7.根据权利要求5所述的虚拟机读写失败的处理装置,其特征在于,所述休眠模块包括:
确定单元,用于在接收到所述存储系统返回的读写错误的响应时,确定所述读写错误的错误类型;
第一休眠单元,用于若所述错误类型属于预设错误类型,则控制所述虚拟机重新发送所述读写请求直至重复发送所述读写请求的次数达到预设次数后,控制所述虚拟机进入暂停状态;
第二休眠单元,用于若所述错误类型不属于所述预设错误类型,则控制所述虚拟机进入暂停状态。
8.根据权利要求5或6所述的虚拟机读写失败的处理装置,其特征在于,所述虚拟机读写失败的处理装置还包括:
记录模块,用于在接收到所述存储系统返回的读写错误的响应时,记录所述读写请求的相关数据;
所述发送模块还用于:在侦测到所述虚拟机恢复运行后,根据记录的所述相关数据重新发送所述读写请求。
CN201710181121.4A 2017-03-23 2017-03-23 虚拟机读写失败的处理方法及装置 Active CN107153569B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710181121.4A CN107153569B (zh) 2017-03-23 2017-03-23 虚拟机读写失败的处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710181121.4A CN107153569B (zh) 2017-03-23 2017-03-23 虚拟机读写失败的处理方法及装置

Publications (2)

Publication Number Publication Date
CN107153569A CN107153569A (zh) 2017-09-12
CN107153569B true CN107153569B (zh) 2021-02-19

Family

ID=59791557

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710181121.4A Active CN107153569B (zh) 2017-03-23 2017-03-23 虚拟机读写失败的处理方法及装置

Country Status (1)

Country Link
CN (1) CN107153569B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107888430B (zh) * 2017-12-15 2020-01-14 新华三云计算技术有限公司 虚拟机管理操作同步方法及装置
CN108600284B (zh) * 2017-12-28 2021-05-14 武汉噢易云计算股份有限公司 一种基于Ceph的虚拟机高可用实现方法及系统
CN114327691A (zh) * 2021-12-10 2022-04-12 北京五八信息技术有限公司 应用程序处理方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101609419A (zh) * 2009-06-29 2009-12-23 北京航空航天大学 虚拟机持续在线迁移的数据备份方法及装置
CN103823708A (zh) * 2014-02-27 2014-05-28 深圳市深信服电子科技有限公司 虚拟机读写请求处理的方法和装置
CN105242872A (zh) * 2014-06-18 2016-01-13 华中科技大学 一种面向虚拟集群的共享存储系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8347290B2 (en) * 2009-11-16 2013-01-01 Novell, Inc. Monitoring spin locks in virtual machines in a computing system environment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101609419A (zh) * 2009-06-29 2009-12-23 北京航空航天大学 虚拟机持续在线迁移的数据备份方法及装置
CN103823708A (zh) * 2014-02-27 2014-05-28 深圳市深信服电子科技有限公司 虚拟机读写请求处理的方法和装置
CN105242872A (zh) * 2014-06-18 2016-01-13 华中科技大学 一种面向虚拟集群的共享存储系统

Also Published As

Publication number Publication date
CN107153569A (zh) 2017-09-12

Similar Documents

Publication Publication Date Title
CN107153569B (zh) 虚拟机读写失败的处理方法及装置
JP2604994B2 (ja) 耐障害コマンド処理システム及び方法並びに関連する装置
CN110377456A (zh) 一种虚拟化平台容灾的管理方法及装置
CN107153559A (zh) 一种电子设备的应用程序升级方法
WO2015043155A1 (zh) 一种基于命令集的网元备份与恢复方法及装置
CN112214357A (zh) 一种hdfs数据备份恢复系统及备份恢复方法
US9652325B2 (en) Storage system and method to support scheduled and operational going down of a storing unit
CN104503870A (zh) 电子设备和数据处理方法
CN110620798A (zh) Ftp连接的控制方法、系统、设备和存储介质
CN111078454A (zh) 一种云平台配置恢复方法及装置
JP2009245391A (ja) 情報処理装置、エラー処理方法及びプログラム
JP5674730B2 (ja) データカードとホストとの間の通信異常、及びデータカードの異常の回復のための方法
US9317467B2 (en) Session key associated with communication path
CN101242201B (zh) 一种主备系统维护的方法、系统和装置
CN107544868B (zh) 数据恢复方法和装置
CN114296827A (zh) 数据文件处理方法、装置、设备及存储介质
KR101511841B1 (ko) 가상 머신 기반의 무중단 시스템 및 상기 시스템에서의 패킷 중재 방법
JP4500085B2 (ja) テスト支援装置及びテスト支援方法
CN106599046B (zh) 分布式文件系统的写入方法及装置
US20240095011A1 (en) State machine operation for non-disruptive update of a data management system
CN113448760B (zh) 一种硬盘异常状态的恢复方法、系统、设备以及介质
CN113868023B (zh) 存储系统的快照方法、装置、电子设备及可读存储介质
US20240095230A1 (en) Prechecking for non-disruptive update of a data management system
JP6213496B2 (ja) 制御装置、制御方法及び制御プログラム
CN111382118A (zh) 一种计算机辅助管理方法及系统

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