买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】虚拟机读写失败的处理方法及装置_深信服科技股份有限公司_201710181121.4 

申请/专利权人:深信服科技股份有限公司

申请日:2017-03-23

公开(公告)日:2021-02-19

公开(公告)号:CN107153569B

主分类号:G06F9/455(20060101)

分类号:G06F9/455(20060101)

优先权:

专利状态码:有效-授权

法律状态:2021.02.19#授权;2017.10.10#实质审查的生效;2017.09.12#公开

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

主权项:1.一种虚拟机读写失败的处理方法,其特征在于,所述虚拟机读写失败的处理方法包括:将虚拟机的读写请求发送至宿主机的存储系统;在接收到所述存储系统返回的读写错误的响应时,控制所述虚拟机进入暂停状态;当侦测到所述存储系统恢复正常后,确定恢复正常后的所述存储系统的存储类型;调用与所述存储类型匹配的预设加锁函数对所述虚拟机的镜像文件进行加锁处理;若加锁成功,则恢复所述虚拟机的运行,若加锁失败,则结束所述虚拟机的运行。

全文数据:虚拟机读写失败的处理方法及装置技术领域[0001]本发明涉及数据处理技术领域,尤其涉及一种虚拟机读写失败的处理方法及装置。背景技术[0002]虚拟化技术可以在一台高性能物理机上虚拟化出多台物理机,通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统被称为虚拟机,例如KVMKernel-basedVirtualMachine,基于Linux内核的虚拟机)。该高新能物理机提供存储系统用来保存镜像文件以及用户数据等。但是,在使用过程中,可能存在一些异常情况,例如,在为虚拟机建立的高可用集群中,当发生存储离线或者管理网掉线等现象时,导致宿主机出现孤立,导致虚拟机的读写无法正常进行,虚拟机这种情况一般称为“脑裂”。其中,存储离线是指由于存储口的网线掉线或者其他原因导致宿主机的存储上的虚拟机系统无法正常读写;管理网掉线是指虚拟机集群管理口网络中断,导致当前的宿主机从集群中脱离,变成离线状态。[0003]当发生“脑裂”时,会出现在高可用集群中的其他主机节点上拉起多个相同实例的情形,当脑裂恢复后,会随机的关闭虚拟机进程,导致被关闭的虚拟机进程可能是具有最新状态的虚拟机,导致无法保证数据的完整性与正确性,进而导致虚拟机无法正常运行。发明内容[0004]本发明提供一种虚拟机读写失败的处理方法及装置,其主要目的在于解决现有技术中在处理读写失败问题时,难以保证数据的完整性与正常性的技术问题。[0005]为实现上述目的,本发明提供一种虚拟机读写失败的处理方法,该虚拟机读写失败的处理方法包括:[0006]将虚拟机的读写请求发送至宿主机的存储系统;[0007]在接收到所述存储系统返回的读写错误的响应时,控制所述虚拟机进入暂停状态;[0008]当侦测到所述存储系统恢复正常后,调用预设加锁函数对所述虚拟机的镜像文件进行加锁处理;[0009]若加锁成功,则恢复所述虚拟机的运行,若加锁失败,则结束所述虚拟机的运行。[0010]可选地,所述当侦测到所述存储系统恢复正常后,调用预设加锁函数对所述虚拟机的镜像文件进行加锁处理的步骤包括:[0011]当侦测到所述存储系统恢复正常后,确定恢复正常后的所述存储系统的存储类型;[0012]调用与所述存储类型匹配的预设加锁函数对所述虚拟机的镜像文件进行加锁处理。[0013]可选地,若所述存储系统为外置存储,则在调用与所述存储类型匹配的预设加锁函数对所述虚拟机的镜像文件进行加锁处理的步骤之后,执行若加锁成功,则恢复所述虚拟机的运行,若加锁失败,则结束所述虚拟机的运行的步骤;[0014]若所述存储系统属于分布式存储,则在调用与所述存储类型匹配的预设加锁函数对所述虚拟机的镜像文件进行加锁处理的步骤之后,所述虚拟机读写失败的处理方法还包括步骤:[0015]若加锁成功,则恢复所述虚拟机的运行;[0016]若加锁失败、且所述预设加锁函数返回的错误码为预设错误码,则结束所述虚拟机的运行;[0017]若加锁失败、且所述预设加锁函数返回的错误码不是预设错误码,则保持所述虚拟机的暂停状态。[0018]可选地,所述在接收到所述存储系统返回的读写错误的响应时,控制所述虚拟机进入暂停状态的步骤包括:[0019]在接收到所述存储系统返回的读写错误的响应时,确定所述读写错误的错误类型;[0020]若所述错误类型属于预设错误类型,则控制所述虚拟机重新发送所述读写请求直至重复发送所述读写请求的次数达到预设次数后,控制所述虚拟机进入暂停状态;[0021]若所述错误类型不属于所述预设错误类型,则控制所述虚拟机进入暂停状态。[0022]可选地,所述虚拟机读写失败的处理方法还包括:[0023]在接收到所述存储系统返回的读写错误的响应时,记录所述读写请求的相关数据;[0024]在侦测到所述虚拟机恢复运行后,根据记录的所述相关数据重新发送所述读写请求。[0025]此外,为实现上述目的,本发明还提供一种虚拟机读写失败的处理装置,该虚拟机读写失败的处理装置包括:[0026]发送模块,用于将虚拟机的读写请求发送至宿主机的存储系统;[0027]休眠模块,用于在接收到所述存储系统返回的读写错误的响应时,控制所述虚拟机进入暂停状态;[0028]加锁模块,用于当侦测到所述存储系统恢复正常后,调用预设加锁函数对所述虚拟机的镜像文件进行加锁处理;[0029]控制模块,用于若加锁成功,则恢复所述虚拟机的运行,若加锁失败,则结束所述虚拟机的运行。[0030]可选地,所述加锁模块还用于:当侦测到所述存储系统恢复正常后,确定恢复正常后的所述存储系统的存储类型;[0031]以及,调用与所述存储类型匹配的预设加锁函数对所述虚拟机的镜像文件进行加锁处理。[0032]可选地,若所述存储系统为外置存储,则在所述加锁模块调用与所述存储类型匹配的预设加锁函数对所述虚拟机的镜像文件进行加锁处理之后,若加锁成功,则所述控制模块恢复所述虚拟机的运行,若加锁失败,则所述控制模块结束所述虚拟机的运行所述控制模块;[0033]若所述存储属于分布式存储,则在所述加锁模块调用与所述存储类型匹配的预设加锁函数对所述虚拟机的镜像文件进行加锁处理之后,所述控制模块还用于:[0034]若加锁成功,则恢复所述虚拟机的运行;[0035]若加锁失败、且所述预设加锁函数返回的错误码为预设错误码,则结束所述虚拟机的运行;[0036]若加锁失败、且所述预设加锁函数返回的错误码不是预设错误码,则保持所述虚拟机的暂停状态。[0037]可选地,所述休眠模块包括:[0038]确定单元,用于在接收到所述存储系统返回的读写错误的响应时,确定所述读写错误的错误类型;[0039]第一休眠单元,用于若所述错误类型属于预设错误类型,则控制所述虚拟机重新发送所述读写请求直至重复发送所述读写请求的次数达到预设次数后,控制所述虚拟机进入暂停状态;[0040]第二休眠单元,用于若所述错误类型不属于所述预设错误类型,则控制所述虚拟机进入暂停状态。[0041]可选地,所述虚拟机读写失败的处理装置还包括:[0042]记录模块,用于在接收到所述存储系统返回的读写错误的响应时,记录所述读写请求的相关数据;[0043]所述发送模块还用于:在侦测到所述虚拟机恢复运行后,根据记录的所述相关数据重新发送所述读写请求。[0044]本发明提出的虚拟机读写失败的处理方法及装置,将虚拟机的读写请求发送至宿主机的存储系统,在接收到存储系统返回的读写错误的响应时,控制虚拟机进入暂停状态,在侦测到存储系统恢复正常后,调用预设加锁函数对虚拟机的镜像文件进行加锁处理,此时,如果加锁失败,则说明在虚拟机集群中的其他主机上已经拉起了与当前读写失败的虚拟机相同的实例,为了保证该相同实例的正常运行,可以结束当前的虚拟机进程,以保证基于拉起的相同实例保证数据的完整性与正确性,保证具有最新状态的虚拟机的正常运行;如果加锁成功,则说明此时在集群中的其他主机上没有运行与当前读写失败的虚拟机相同的实例,则恢复该虚拟机的正常运行。附图说明[0045]图1为本发明虚拟机读写失败的处理方法第一实施例的流程图;[0046]图2为本发明虚拟机读写失败的处理方法第二实施例中加锁步骤的细化流程示意图;[0047]图3为本发明虚拟机读写失败的处理装置第一实施例的功能模块示意图;[0048]图4为本发明虚拟机读写失败的处理装置第二实施例中休眠模块20的细化功能模块不意图。[0049]本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式[0050]应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。[0051]本发明提供一种虚拟机读写失败的处理方法。参照图1所示,为本发明虚拟机读写失败的处理方法第一实施例的流程图。[0052]在本实施例中,该虚拟机读写失败的处理方法包括:[0053]步骤S10,将虚拟机的读写请求发送至宿主机的存储系统。[0054]步骤S20,在接收到所述存储系统返回的读写错误的响应时,控制所述虚拟机进入暂停状态。[0055]步骤S30,当侦测到所述存储系统恢复正常后,调用预设加锁函数对所述虚拟机的镜像文件进行加锁处理。[0056]本发明实施例中,硬件结构为宿主机以及宿主机提供的存储系统,一般情况下,存储系统包括以下存储类型:本地存储、外置存储以及分布式存储。其中,对于本地存储来说,由于集群中的主机并不会使用除自身外的其他主机节点的本地存储,因此,一般不需要进行加锁。关于预设加锁函数,可以根据存储类型预先设置。[0057]宿主机为安装虚拟机软件的物理机,一台物理机上可以运行一个或者多个虚拟机,一个虚拟机包含一个虚拟机进程,下文中所述的控制虚拟机进入暂停状态一般是指控制其虚拟机进程进入暂停状态。[0058]虚拟机在运行过程中,虚拟机进程或者虚拟机系统中的应用程序在运行时,虚拟机操作系统里面会进行一些读写操作,例如编辑word文档并保存,虚拟机需要将读写请求发送给宿主机系统,由宿主机系统基于该读写请求在存储系统上进行读写操作,存储系统将对读写请求的执行结果返回给虚拟机,若是读请求,读操作成功后,将读操作的数据返回给虚拟机,若是写操作,写操作执行成功,向虚拟机发送写操作执行成功的响应信息。当宿主机的存储系统出现问题或者宿主机离线等原因导致读写失败时,向虚拟机返回读写失败的响应。[0059]当接收到读写失败的响应时,控制所述虚拟机进入暂停状态,暂停当前正在执行的任务。在进入暂停状态后,对宿主机的存储系统的状态进行实时侦测。当侦测到存储系统恢复正常运行后,对虚拟机的镜像文件进行加锁处理。在对镜像文件进行加锁时,可以按照恢复正常运行后的存储系统的存储类型来进行加锁。具体地,步骤S30包括如下细化步骤:当侦测到所述存储系统恢复正常后,确定恢复正常后的所述存储系统的存储类型;调用与所述存储类型匹配的预设加锁函数对所述虚拟机的镜像文件进行加锁处理。[0060]步骤S40,若加锁成功,则恢复所述虚拟机的运行,若加锁失败,则结束所述虚拟机的运行。[0061]由于存储类型的不同,对于加锁处理的响应也不相同。具体地,若所述存储系统为外置存储,则步骤S30之后,执行步骤S40;若所述存储系统属于分布式存储,则在步骤S30之后,所述虚拟机读写失败的处理方法还包括:[0062]若加锁成功,则恢复所述虚拟机的运行;[0063]若加锁失败、且所述预设加锁函数返回的错误码为预设错误码,则结束所述虚拟机的运行;[0064]若加锁失败、且所述预设加锁函数返回的错误码不是预设错误码,则保持所述虚拟机的暂停状态。[0065]也就是说,在本实施例中,对于采用分布式存储的宿主机来说,有可能在该主机的存储系统发生故障时,集群中的其他主机上拉起了与该虚拟机相同的实例,并继续运行该虚拟机,因此,对于采用分布式存储的宿主机来说,预先设置错误码,该错误码用于判断是否在集群中拉起了相同实例,如果检测到集群中有其他的主机节点上拉起了相同的实例,则存储系统会返回预先约定好的错误码。[0066]对于虚拟机系统来说,在接收到加锁失败的响应,并且接收到的错误码为预设错误码时,可以直接结束虚拟机的运行,即杀死虚拟机进程,因为此时已经有其他的主机上运行了与该虚拟机相同的实例,并具有最新的数据与状态,为了保证具有最新状态的虚拟机的正常运行,直接结束当前的虚拟机的运行。[0067]如果加锁失败,并且接收到的错误码不是预设错误码,则认为加锁失败的原因不是其他的主机上运行了与该虚拟机相同的实例所导致的,则保持虚拟机的暂停状态。在其他实施例中,也可以进一步地发出提示信息。[0068]如果加锁成功,则回复虚拟机的正常运行,对于之前失败的读写请求,可以根据记录的相关数据再次发送读写请求。[0069]进一步地,作为一种实施方式,该方法还包括步骤:[0070]在接收到所述存储系统返回的读写错误的响应时,记录所述读写请求的相关数据;在侦测到所述虚拟机恢复运行后,根据记录的所述相关数据重新发送所述读写请求。[0071]当读写错误时,对于读写请求相关的数据进行记录,以便于在虚拟机恢复运行后,就可以根据记录的相关数据重新发送读写请求,其中,相关数据包括读写操作文件信息、读写操作扇区等信息。[0072]本实施例提出的虚拟机读写失败的处理方法,将虚拟机的读写请求发送至宿主机的存储系统,在接收到存储系统返回的读写错误的响应时,控制虚拟机进入暂停状态,在侦测到存储系统恢复正常后,调用预设加锁函数对虚拟机的镜像文件进行加锁处理,此时,如果加锁失败,则说明在虚拟机集群中的其他主机上已经拉起了与当前读写失败的虚拟机相同的实例,为了保证该相同实例的正常运行,可以结束当前的虚拟机进程,以保证基于拉起的相同实例保证数据的完整性与正确性,保证具有最新状态的虚拟机的正常运行;如果加锁成功,则说明此时在集群中的其他主机上没有运行与当前读写失败的虚拟机相同的实例,则恢复该虚拟机的正常运行。[0073]基于第一实施例提出本发明虚拟机读写失败的处理方法的第二实施例。参照图2所示,在本实施例中,步骤S20包括:[0074]步骤S21,在接收到所述存储系统返回的读写错误的响应时,确定所述读写错误的错误类型;[0075]步骤S22,若所述错误类型属于预设错误类型,则控制所述虚拟机重新发送所述读写请求直至重复发送所述读写请求的次数达到预设次数后,控制所述虚拟机进入暂停状态;[0076]步骤S23,若所述错误类型不属于所述预设错误类型,则控制所述虚拟机进入暂停状态。[0077]在该实施例中,在发生读写错误时,根据不同的错误类型对于读写错误采用不同的处理手段做分类处理,以确保读写错误能够得到及时的解决。其中,预设错误类型为返回的错误代码为eagain的错误,对于这种错误来说,可能只是暂时性的错误,存储系统返回该代码意味着,提示进行重试,因此,对于虚拟机系统来说,可以进行重试操作,重新发送相同的读写请求,并且在重复发送该读写请求的次数达到预设次数后,仍然接收到错误类型为预设错误类型的读写错误响应时,控制虚拟机进入暂停状态,若重新发送读写请求后,接收到成功的响应,则保持虚拟机的继续正常运行。[0078]当错误类型不属于预设错误类型时,例如读写错误为一些可恢复类错误或者不可恢复类错误时,需要控制虚拟机进入暂停状态,并相应的给用户发送提示信息。其中,可恢复类错误一般是网络中断、存储空间不足等问题,这些问题可以由网络监控人员进行网络修复、扩展存储空间或者清理存储空间等处理就可以恢复存储系统的正常运行;不可恢复类错误一般是存储系统的磁盘损坏等需要耗时较长时间才能恢复的问题。对于可恢复类错误,暂停住虚拟机,宿主机进入维护模式,避免用户操作跟存储相关的所有凑哦,并向用户发送提示信息,需要进行维护,例如进行扩容、释放空间等。对于不可恢复类错误,暂停住虚拟机,并提示用户关闭虚拟机,避免耗时过久的等待。[0079]本发明还提出一种虚拟机读写失败的处理装置。[0080]参照图3所示,为本发明虚拟机读写失败的处理装置第一实施例的功能模块示意图。[0081]在该实施例中,该虚拟机读写失败的处理装置包括:[0082]发送模块10,用于将虚拟机的读写请求发送至宿主机的存储系统。[0083]休眠模块20,用于在接收到所述存储系统返回的读写错误的响应时,控制所述虚拟机进入暂停状态。[0084]加锁模块30,用于当侦测到所述存储系统恢复正常后,调用预设加锁函数对所述虚拟机的镜像文件进行加锁处理。[0085]本发明实施例中,硬件结构为宿主机以及宿主机提供的存储系统,一般情况下,存储系统包括以下存储类型:本地存储、外置存储以及分布式存储。其中,对于本地存储来说,由于集群中的主机并不会使用除自身外的其他主机节点的本地存储,因此,一般不需要进行加锁。关于预设加锁函数,可以根据存储类型预先设置。[0086]宿主机为安装虚拟机软件的物理机,一台物理机上可以运行一个或者多个虚拟机,一个虚拟机包含一个虚拟机进程,下文中所述的控制虚拟机进入暂停状态一般是指控制其虚拟机进程进入暂停状态。[0087]虚拟机在运行过程中,虚拟机进程或者虚拟机系统中的应用程序在运行时,虚拟机操作系统里面会进行一些读写操作,例如编辑word文档并保存,虚拟机需要将读写请求发送给宿主机系统,由宿主机系统基于该读写请求在存储系统上进行读写操作,存储系统将对读写请求的执行结果返回给虚拟机,若是读请求,读操作成功后,将读操作的数据返回给虚拟机,若是写操作,写操作执行成功,向虚拟机发送写操作执行成功的响应信息。当宿主机的存储系统出现问题或者宿主机离线等原因导致读写失败时,向虚拟机返回读写失败的响应。[0088]当接收到读写失败的响应时,控制所述虚拟机进入暂停状态,暂停当前正在执行的任务。在进入暂停状态后,对宿主机的存储系统的状态进行实时侦测。当侦测到存储系统恢复正常运行后,对虚拟机的镜像文件进行加锁处理。在对镜像文件进行加锁时,可以按照恢复正常运行后的存储系统的存储类型来进行加锁。具体地,加锁模块3〇还用于:当侦测到所述存储系统恢复正常后,确定恢复正常后的所述存储系统的存储类型;以及,调用与所述存储类型匹配的预设加锁函数对所述虚拟机的镜像文件进行加锁处理。[0089]控制模块40,用于若加锁成功,则恢复所述虚拟机的运行,若加锁失败,则结束所述虚拟机的运行。[0090]由于存储类型的不同,对于加锁处理的响应也不相同。具体地,则在加锁模块30调用与所述存储类型匹配的预设加锁函数对所述虚拟机的镜像文件进行加锁处理之后,若加锁成功,则控制模块40恢复所述虚拟机的运行,若加锁失败,则控制模块40结束所述虚拟机的运行;[0091]若所述存储属于分布式存储,则在加锁模块30调用与存储类型匹配的预设加锁函数对所述虚拟机的镜像文件进行加锁处理之后,控制模块4〇还用于:[0092]若加锁成功,则恢复所述虚拟机的运行;[0093]若加锁失败、且所述预设加锁函数返回的错误码为预设错误码,则结束所述虚拟机的运行;[0094]若加锁失败、且所述预设加锁函数返回的错误码不是预设错误码,则保持所述虚拟机的暂停状态。[0095]也就是说,在本实施例中,对于采用分布式存储的宿主机来说,有可能在该主机的存储系统发生故障时,集群中的其他主机上拉起了与该虚拟机相同的实例,并继续运行该虚拟机,因此,对于采用分布式存储的宿主机来说,预先设置错误码,该错误码用于判断是否在集群中拉起了相同实例,如果检测到集群中有其他的主机节点上拉起了相同的实例,则存储系统会返回预先约定好的错误码。[0096]对于虚拟机系统来说,在接收到加锁失败的响应,并且接收到的错误码为预设错误码时,可以直接结束虚拟机的运行,即杀死虚拟机进程,因为此时己经有其他的主机上运行了与该虚拟机相同的实例,并具有最新的数据与状态,为了保证具有最新状态的虚拟机的正常运行,直接结束当前的虚拟机的运行。[0097]如果加锁失败,并且接收到的错误码不是预设错误码,则认为加锁失败的原因不是其他的主机上运行了与该虚拟机相同的实例所导致的,则保持虚拟机的暂停状态。在其他实施例中,也可以进一步地发出提示信息。[0098]如果加锁成功,则回复虚拟机的正常运行,对于之前失败的读写请求,可以根据记录的相关数据再次发送读写请求。[0099]进一步地,作为一种实施方式,该装置还包括:记录模块,用于在接收到所述存储系统返回的读写错误的响应时,记录所述读写请求的相关数据;发送模块10在侦测到所述虚拟机恢复运行后,根据记录的所述相关数据重新发送所述读写请求。[0100]当读写错误时,对于读写请求相关的数据进行记录,以便于在虚拟机恢复运行后,就可以根据记录的相关数据重新发送读写请求,其中,相关数据包括读写操作文件信息、读写操作扇区等信息。[0101]本实施例提出的虚拟机读写失败的处理装置,将虚拟机的读写请求发送至宿主机的存储系统,在接收到存储系统返回的读写错误的响应时,控制虚拟机进入暂停状态,在侦测到存储系统恢复正常后,调用预设加锁函数对虚拟机的镜像文件进行加锁处理,此时,如果加锁失败,则说明在虚拟机集群中的其他主机上已经拉起了与当前读写失败的虚拟机相同的实例,为了保证该相同实例的正常运行,可以结束当前的虚拟机进程,以保证基于拉起的相同实例保证数据的完整性与正确性,保证具有最新状态的虚拟机的正常运行;如果加锁成功,则说明此时在集群中的其他主机上没有运行与当前读写失败的虚拟机相同的实例,则恢复该虚拟机的正常运行。[0102]基于第一实施例提出本发明虚拟机读写失败的处理装置的第二实施例。参照图4所示,在本实施例中,休眠模块20包括:[0103]确定单元21,用于在接收到所述存储系统返回的读写错误的响应时,确定所述读写错误的错误类型;[0104]第一休眠单元22,用于若所述错误类型属于预设错误类型,则控制所述虚拟机重新发送所述读写请求直至重复发送所述读写请求的次数达到预设次数后,控制所述虚拟机进入暂停状态;[0105]第二休眠单元23,用于若所述错误类型不属于所述预设错误类型,则控制所述虚拟机进入暂停状态。[0106]在该实施例中,在发生读写错误时,根据不同的错误类型对于读写错误采用不同的处理手段做分类处理,以确保读写错误能够得到及时的解决。其中,预设错误类型为返回的错误代码为EAGAIN的错误,对于这种错误来说,可能只是暂时性的错误,存储系统返回该代码意味着,提示进行重试,因此,对于虚拟机系统来说,可以进行重试操作,重新发送相同的读写请求,并且在重复发送该读写请求的次数达到预设次数后,仍然接收到错误类型为预设错误类型的读写错误响应时,控制虚拟机进入暂停状态,若重新发送读写请求后,接收到成功的响应,则保持虚拟机的继续正常运行。[0107]当错误类型不属于预设错误类型时,例如读写错误为一些可恢复类错误或者不可恢复类错误时,需要控制虚拟机进入暂停状态,并相应的给用户发送提示信息。其中,可恢复类错误一般是网络中断、存储空间不足等问题,这些问题可以由网络监控人员进行网络修复、扩展存储空间或者清理存储空间等处理就可以恢复存储系统的正常运行;不可恢复类错误一般是存储系统的磁盘损坏等需要耗时较长时间才能恢复的问题。对于可恢复类错误,暂停住虚拟机,宿主机进入维护模式,避免用户操作跟存储相关的所有凑哦,并向用户发送提示信息,需要进行维护,例如进行扩容、释放空间等。对于不可恢复类错误,暂停住虚拟机,并提示用户关闭虚拟机,避免耗时过久的等待。[0108]需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵该非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。[0109]上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。[0110]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质如ROMRAM、磁碟、光盘中,包括若干指令用以使得一台终端设备可以是手机,计算机,云端服务器,空调器,或者网络设备等执行本发明各个实施例的方法。以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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

百度查询: 深信服科技股份有限公司 虚拟机读写失败的处理方法及装置

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。