发明内容
基于此,有必要针对软件更新时造成长时间的服务器的服务中断问题,提供一种软件更新方法,能大大缩短服务器的服务中断时间。
此外,还有必要针对软件更新时造成长时间的服务器的服务中断问题,提供一种软件更新系统,能大大缩短服务器的服务中断时间。
一种软件更新方法,包括以下步骤:
接收软件更新指令;
根据软件更新指令断开在第一副本及第二副本上运行的虚拟机的服务实例与第二副本的连接;
启动虚拟机的更新实例并在第二副本运行;
通过更新实例对第二副本进行更新;
退出更新实例;
在第二副本上重新启动虚拟机的服务实例并运行。
在其中一个实施例中,第二副本包括系统盘第二副本及数据盘第二副本,根据软件更新指令断开在第一副本及第二副本上运行的虚拟机的服务实例与第二副本的连接的步骤,具体包括:
判断更新的软件是否需要数据进行调试;
若是,则断开虚拟机的服务实例与系统盘第二副本及数据盘第二副本的连接,并使虚拟机的更新实例获取系统盘第二副本及数据盘第二副本的访问权限;
若否,则断开虚拟机的服务实例与系统盘第二副本的连接,并使虚拟机的更新实例获取系统盘第二副本的访问权限。
在其中一个实施例中,当存在N个系统盘副本及N个数据盘副本时,其中,N为大于2的整数,在所述判断更新的软件是否需要数据进行调试的步骤之后,还包括以下步骤:
当更新的软件需要数据进行调试时,则断开虚拟机的服务实例与N-M个系统盘副本及L个数据盘副本的连接,并使虚拟机的更新实例获取N-M个系统盘副本及L个数据盘副本的访问权限;
当更新的软件不需要数据进行调试时,则断开虚拟机的服务实例与N-M个系统盘副本的连接,并使虚拟机的更新实例获取N-M个系统盘副本的访问权限;
其中,M为大于或等于1且小于N的整数,L为大于或等于1且小于N的整数。
在其中一个实施例中,在判断更新的软件是否需要数据进行调试的步骤之后,还包括以下步骤:
当更新的软件需要数据进行调试时,则断开虚拟机的服务实例与N-1个系统盘副本及一个数据盘副本的连接,并使虚拟机的更新实例获取N-1个系统盘副本及一个数据盘副本的访问权限;
当更新的软件不需要数据进行调试时,则断开虚拟机的服务实例与N-1个系统盘副本的连接,并使虚拟机的更新实例获取N-1个系统盘副本的访问权限。
在其中一个实施例中,在退出所述更新实例的步骤之后,上述方法还包括以下步骤:
根据预设的切换时间关闭在第一副本运行的虚拟机的服务实例;
在第二副本上重新启动虚拟机的服务实例并运行;
同步第一副本及第二副本的数据;
同步第一副本及第二副本的数据的步骤,具体包括:
将系统盘第二副本的数据同步至系统盘第一副本;
判断更新实例是否访问过数据盘第二副本,若访问过,则将数据盘第一副本的数据同步至数据盘第二副本。
在其中一个实施例中,在启动虚拟机的更新实例并在第二副本运行的步骤之前,还包括:
获取输入的IP地址,或自动选择与虚拟机的服务实例不同的IP地址;
将虚拟机的更新实例配置为该IP地址。
一种软件更新系统,包括:
接收模块,用于接收软件更新指令;
断开模块,用于根据软件更新指令断开在第一副本及第二副本上运行的虚拟机的服务实例与第二副本的连接;
启动模块,用于启动虚拟机的更新实例并在第二副本运行;
更新模块,用于通过更新实例对第二副本进行更新;
退出模块,用于退出更新实例;
启动模块还用于在第二副本上重新启动虚拟机的服务实例并运行。
在其中一个实施例中,第二副本包括系统盘第二副本及数据盘第二副本,上述系统还包括:
判断模块,用于判断更新的软件是否需要数据进行调试;
断开模块还用于当更新的软件需要数据进行调试时,则断开虚拟机的服务实例与系统盘第二副本及数据盘第二副本的连接,并使虚拟机的更新实例获取系统盘第二副本及数据盘第二副本的访问权限;
断开模块还用于当更新的软件不需要数据进行调试时,则断开虚拟机的服务实例与系统盘第二副本的连接,并使虚拟机的更新实例获取系统盘第二副本的访问权限。
在其中一个实施例中,当存在N个系统盘副本及N个数据盘副本时,其中,N为大于2的整数,
断开模块还用于当更新的软件需要数据进行调试时,则断开虚拟机的服务实例与N-M个系统盘副本及L个数据盘副本的连接,并使虚拟机的更新实例获取N-M个系统盘副本及L个数据盘副本的访问权限;
断开模块还用于当更新的软件不需要数据进行调试时,则断开虚拟机的服务实例与N-M个系统盘副本的连接,并使虚拟机的更新实例获取N-M个系统盘副本的访问权限;
其中,M为大于或等于1且小于N的整数,L为大于或等于1且小于N的整数。
在其中一个实施例中,退出模块还用于根据预设的切换时间关闭在第一副本运行的虚拟机的服务实例;
上述系统还包括同步模块,用于同步第一副本及第二副本的数据;
同步模块包括:
系统盘同步单元,用于将系统盘第二副本的数据同步至系统盘第一副本;
数据盘同步单元,用于判断更新实例是否访问过数据盘第二副本,若访问过,则将数据盘第一副本的数据同步至数据盘第二副本。
在其中一个实施例中,上述系统还包括:
获取模块,用于获取输入的IP地址,或自动选择与虚拟机的服务实例不同的IP地址;
配置模块,用于将虚拟机的更新实例配置为该IP地址。
上述软件更新方法和系统,使虚拟机的服务实例继续在第一副本运行,并在第二副本启动虚拟机的更新实例并进行更新,更新完成后在第二副本重新启动虚拟机的服务实例,能够在不中断服务器原有服务的情况下,完成软件的更新,大大缩短了服务器的服务中断时间,能有效减少用户因服务中断带来的损失。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如图1所示,一种软件更新方法,包括以下步骤:
步骤S110,接收软件更新指令。
具体的,可在服务器上安装虚拟机,在该服务器上模拟出一台或多台虚拟的服务器,可减少服务器设备的采购成本。其中,服务器可为超融合一体机等,超融合一体机可将虚拟化管理软件、虚拟存储、虚拟网络等基础部件融合到一起,并采用标准X86服务器硬件承载虚拟化管理软件、虚拟存储、虚拟网络等软件的网络基础设施部件,超融合一体机也称为“超融合基础设施”。当需要进行软件更新时,用户可通过WEB(互联网)控制台或命令行控制台等向服务器发送对虚拟机进行软件更新的指令,服务器接收该软件更新指令后,对虚拟机的软件进行更新。
步骤S120,根据软件更新指令断开在第一副本及第二副本上运行的虚拟机的服务实例与第二副本的连接。
具体的,服务器可采用分布式存储构架,并采用冗余措施对数据进行保存,数据可保存为多份,每份数据称为一个副本,例如数据保存为2份,就是两个副本,数据保存为3份,就是三个副本。不同的副本可保存在不同的主机中,以应付主机故障,提高多副本数据的可用性。在本实施例中,存在两个副本,副本中存储有虚拟机运行所需的所有软件及相关数据,相当于虚拟机的虚拟磁盘。在正常情况下,虚拟机启动一个实例用于向外提供服务,即为“服务实例”,虚拟机的服务实例运行在所有副本上,并占据所有副本的读写权,负责读取副本中的数据及写入数据到副本中。虚拟机的服务实例可通过TCP(TransmissionControlProtocol,传输控制协议)连接对副本进行访问,但不限于此。当服务器接收到软件更新指令时,断开虚拟机的服务实例与其中一个副本的连接,例如断开服务实例与第二副本的连接,保证服务实例继续运行在第一副本上,并继续向外提供服务。
步骤S130,启动虚拟机的更新实例并在第二副本运行。
具体的,在断开虚拟机的服务实例与第二副本的连接后,虚拟机再次启动一个实例用于软件更新,即为“更新实例”,更新实例不向外提供服务。服务器可控制更新实例只在第二副本上运行,并进行软件更新。
步骤S140,通过该更新实例对第二副本进行更新。
具体的,服务器通过虚拟机的更新实例对存储在第二副本上的软件进行更新、修复等操作,并可根据实际需求在软件更新完成后对软件进行调试,以保证更新后的软件运行正常,降低风险。如图2所示,虚拟机的服务实例运行在第一副本及第二副本上,当服务器接收到软件更新指令时,断开服务实例与第二副本的连接,并启动虚拟机的更新实例,使更新实例运行在第二副本上进行软件更新。在其它的实施例中,可存在N个副本,其中,N为大于2的整数,此时服务器可断开虚拟机的服务实例与其中的N-1个副本的连接,服务实例只在其中一个副本上运行,然后启动虚拟机的更新实例并在该N-1个副本上运行,进行软件更新,有利于在软件更新后进行副本之间的数据同步时减少同步的数据量。服务实例也可在其中的M个副本上运行,然后更新实例在其它的N-M个副本上运行,其中,M为大于或等于1且小于N的整数,例如存在5个副本,服务实例在其中的2个或3个副本上运行,更新实例在其它的3个或2个副本上运行等,但不限于此。
步骤S150,退出更新实例。
具体的,软件更新完成后,退出虚拟机的更新实例。
步骤S160,在第二副本上重新启动虚拟机的服务实例并运行。
具体的,服务器可在软件更新完成后,关闭在第一副本上运行的虚拟机的服务实例,并重新启动一个虚拟机的服务实例,使该服务实例运行在第二副本上,完成软件的切换,虚拟机的服务实例即可使用更新后的软件向外提供服务。
上述软件更新方法,使虚拟机的服务实例继续在第一副本运行,并在第二副本启动虚拟机的更新实例并进行更新,更新完成后在第二副本重新启动虚拟机的服务实例,能够在不中断服务器原有服务的情况下,完成软件的更新,大大缩短了服务器的服务中断时间,能有效减少用户因服务中断带来的损失。
如图3所示,在一个实施例中,根据软件更新指令断开在第一副本及第二副本上运行的虚拟机的服务实例与第二副本的连接的步骤,具体包括:
步骤S310,判断更新的软件是否需要数据进行调试,若是,则执行步骤S320,若否,则执行步骤S330。
具体的,用户向服务器发送软件更新指令后,可设置更新的软件是否需要利用数据进行调试,对更新的软件进行数据调试可保证软件运行正常,降低软件故障、出错的风险。服务器在接收软件更新之后,可进一步判断更新的软件是否需要数据进行调试。
步骤S320,断开虚拟机的服务实例与系统盘第二副本及数据盘第二副本的连接,并使虚拟机的更新实例获取系统盘第二副本及数据盘第二副本的访问权限。
具体的,副本相当于虚拟机的虚拟磁盘,而虚拟磁盘就是一个镜像文件,可将虚拟磁盘的系统盘及数据盘进行分离,副本中可包括系统盘副本及数据盘副本,系统盘副本中只安装有虚拟机所使用的操作系统及软件,并保存某些基本配置,而数据盘副本中仅保存软件产生的数据。第二副本包括系统盘第二副本及数据盘第二副本当更新的软件需要数据进行调试时,服务器可断开虚拟机的服务实例与系统盘第二副本及数据盘第二副本的连接,使得服务实例仅可访问系统盘第一副本及数据盘第一副本,可如图4(a)所示,而虚拟机的更新实例可访问系统盘第二副本及数据盘第二副本。在软件更新完成后,可重新启动虚拟机的更新实例,并调用数据盘第二副本的数据对更新的软件进行数据调试。
步骤S330,断开虚拟机的服务实例与系统盘第二副本的连接,并使虚拟机的更新实例获取系统盘第二副本的访问权限。
具体的,当更新的软件不需要数据进行调试时,可仅断开虚拟机的服务实例与系统盘第二副本的连接,如图4(b)所示,服务实例可访问系统盘第一副本、数据盘第一副本及数据盘第二副本,而虚拟机的更新实例仅可访问系统盘第二副本,而不具有数据盘第二副本的访问权限,更新实例无法访问所有的数据盘副本。
在一个实施例中,当存在N个副本时,其中,N为大于2的整数,在判断更新的软件是否需要数据进行调试的步骤之后,上述方法还包括以下步骤:
(1)当更新的软件需要数据进行调试时,则断开虚拟机的服务实例与N-M个系统盘副本及L个数据盘副本的连接,并使虚拟机的更新实例获取N-M个系统盘副本及L个数据盘副本的访问权限。
具体的,M为大于或等于1且小于N的整数,L为大于或等于1且小于N的整数。当存在N个系统盘副本及N个数据盘副本时,若更新的软件需要进行数据调试,服务器可断开虚拟机的服务实例与其中N-M个系统盘副本及L个数据盘副本的连接,即服务实例可访问M个系统盘副本及N-L个数据盘副本,而虚拟机的更新实例可访问N-M个系统盘副本及L个数据盘副本。例如,存在4个副本,虚拟机的服务实例可断开其中系统盘第三副本、系统盘第四副本及数据盘第四副本的连接,仅访问剩下的两个系统盘副本及3个数据盘副本,而虚拟机的更新实例则可访问系统盘第三副本、系统盘第四副本及数据盘第四副本,但不限于此。
(2)当更新的软件不需要数据进行调试时,则断开虚拟机的服务实例与N-M个系统盘副本的连接,并使虚拟机的更新实例获取N-M个系统盘副本的访问权限。
具体的,当更新的软件不需要数据进行调试时,服务器可断开虚拟机的服务实例与其中N-M个系统盘副本的连接,服务实例拥有M个系统盘副本及所有数据盘副本的访问权限,而虚拟机的更新实例拥有N-M个系统盘副本的访问权限,没有数据盘副本的访问权限。例如,存在5个副本,虚拟机的服务实例可断开其中的系统盘第二副本、系统盘第三副本及系统盘第四副本的连接,仅访问剩下的两个系统盘副本及所有的数据盘副本,而更新实例则可访问系统盘第二副本、系统盘第三副本及系统盘第四副本,但不限于此。
在进一步的实施例中,在判断更新的软件是否需要数据进行调试的步骤之后,上述方法可还包括以下步骤:
(1)当更新的软件需要数据进行调试时,则断开虚拟机的服务实例与N-1个系统盘副本及一个数据盘副本的连接,并使虚拟机的更新实例获取该N-1个系统盘副本及一个数据盘副本的访问权限。
具体的,当存在N个系统盘副本及N个数据盘副本时,若更新的软件需要进行数据调试,服务器可断开虚拟机的服务实例与其中N-1个系统盘副本及一个数据盘副本的连接,即服务实例仅拥有一个系统盘副本及N-1个数据盘副本的访问权限,而虚拟机的更新实例则拥有一个数据盘副本及N-1个系统盘副本的访问权限。如图5(a)所示,存在3个副本,虚拟机的服务实例可访问系统盘第一副本及数据盘第一副本、数据盘第二副本,而更新实例可访问数据盘第三副本及系统盘第二副本、系统盘第三副本。
(2)当更新的软件不需要数据进行调试时,则断开虚拟机的服务实例与N-1个系统盘副本的连接,并使虚拟机的更新实例获取该N-1个系统盘副本的访问权限。
具体的,当更新的软件不需要数据进行调试时,服务器可断开虚拟机的服务实例与其中N-1个系统盘副本的连接,服务实例拥有一个系统盘副本及所有数据盘副本的访问权限,而虚拟机的更新实例拥有N-1个系统盘副本的访问权限,没有数据盘副本的访问权限。如图5(b)所示,存在3个副本,虚拟机的服务实例可访问系统盘第一副本及数据盘第一副本、数据盘第二副本、数据盘第三副本,而虚拟机的更新实例可访问系统盘第二副本及系统盘第三副本,而不能访问所有的数据盘副本。
通过此种分配服务实例及更新实例对系统盘副本及数据盘副本访问权限的方式,在进行软件更新时,其中的N-1个系统盘副本中的软件均完成更新,而当更新的软件需要数据进行调试时,仅一个数据盘副本用作调试,其它的N-1个数据盘副本中的数据都是服务实例向外提供服务时所产生的最新数据,可在更新软件完成后进行副本之间的数据同步时减少同步的数据量,分别仅需同步一个系统盘副本和一个数据盘副本的数据。
上述软件更新方法,将虚拟机的系统盘及数据盘分离,可根据实际需求设置虚拟机的更新实例的访问权限,方便软件更新后进行数据调试,且可减少后期进行副本之间数据同步时的同步数据量。
如图6所示,在一个实施例中,上述软件更新方法,在退出更新实例的步骤之后,还包括以下步骤:
步骤S610,根据预设的切换时间关闭在第一副本运行的虚拟机的服务实例。
具体的,用户可预先设置切换时间,该切换时间为将虚拟机的服务实例切换运行到更新后的副本上的时间,切换时间可选择在服务器业务最为空闲的时间点,例如凌晨0点等。当到达该切换时间时,服务器将自动关闭在第一副本上运行的虚拟机的服务实例,然后重新启动虚拟机的服务实例并在第二副本上运行,即可使用更新后的软件向外提供服务,服务器中断服务的时间仅为关闭并重启虚拟机的服务实例的时间,通过预设的切换时间,可进一步减少因服务器中断带来的损失。
步骤S620,在第二副本上重新启动虚拟机的服务实例并运行。
步骤S630,同步第一副本及第二副本的数据。
具体的,软件更新完成后,因副本之间的数据不一致,需进行副本之间的数据同步,将不同副本的数据修复成一致状态。
在一个实施例中,步骤同步第一副本及第二副本的数据,可包括以下步骤:
(a)将系统盘第二副本的数据同步至系统盘第一副本。
具体的,可通过将系统盘第二副本与系统盘第一副本存在差异的那部分数据,即更新过的软件数据拷贝到系统盘第一副本来同步系统盘第一副本及系统盘第二副本的数据。
(b)判断更新实例是否访问过数据盘第二副本,若访问过,则将数据盘第一副本的数据同步至数据盘第二副本。
具体的,可先判断虚拟机的更新实例是否访问过数据盘第二副本,若未访问过,即表示更新实例不需要数据进行调试,数据盘第二副本中的数据即为最新的数据,不需要进行数据同步。若更新实例访问过数据盘第二副本,则可通过将数据盘第一副本与数据盘第二副本存在差异的那部分数据拷贝到数据盘第二副本,数据盘副本的同步方向与系统盘副本相反。在其它的实施例中,若存在N个副本,其中,N为大于2的整数,可将虚拟机的更新实例访问过的系统盘副本的数据同步至未访问过的系统盘副本,当更新实例访问过数据盘副本时,可将更新实例未访问过的数据盘副本的数据同步至该访问过的数据盘副本。
上述软件更新方法,使虚拟机的服务实例继续在第一副本运行,并在第二副本启动虚拟机的更新实例并进行更新,更新完成后在第二副本重新启动虚拟机的服务实例,能够在不中断服务器原有服务的情况下,完成软件的更新,大大缩短了服务器的服务中断时间,能有效减少用户因服务中断带来的损失。
在一个实施例中,上述软件更新方法,还包括步骤:获取输入的IP(InternetProtocol,网络之间互连的协议)地址,或自动选择与虚拟机的服务实例不同的IP地址,将虚拟机的更新实例配置为该IP地址。
具体的,在虚拟机的更新实例启动前,用户可输入一个与虚拟机的服务实例不同的IP地址,或由服务器自动选择一个与虚拟机的服务实例不同的IP地址。在虚拟机的更新实例启动后,可自动将更新实例的IP地址设置为之前获取的与服务实例不同的IP地址。
上述软件更新方法,可保证虚拟机的服务实例与更新实例的IP地址不会发生冲突,保证服务实例与更新实例均是可以进行正常访问的。
如图7所示,一种软件更新系统,包括接收模块710、断开模块720、启动模块730、更新模块740和退出模块750。
接收模块710,用于接收软件更新指令。
具体的,可在服务器上安装虚拟机,在该服务器上模拟出一台或多台虚拟的服务器,可减少服务器设备的采购成本。其中,服务器可为超融合一体机等,超融合一体机可将虚拟化管理软件、虚拟存储、虚拟网络等基础部件融合到一起,并采用标准X86服务器硬件承载虚拟化管理软件、虚拟存储、虚拟网络等软件的网络基础设施部件,超融合一体机也称为“超融合基础设施”。当需要进行软件更新时,用户可通过WEB(互联网)控制台或命令行控制台等向服务器发送对虚拟机进行软件更新的指令,服务器接收该软件更新指令后,对虚拟机的软件进行更新。
断开模块720,用于根据软件更新指令断开在第一副本及第二副本上运行的虚拟机的服务实例与第二副本的连接。
具体的,服务器可采用分布式存储构架,并采用冗余措施对数据进行保存,数据可保存为多份,每份数据称为一个副本,例如数据保存为2份,就是两个副本,数据保存为3份,就是三个副本。不同的副本可保存在不同的主机中,以应付主机故障,提高多副本数据的可用性。在本实施例中,存在两个副本,副本中存储有虚拟机运行所需的所有软件及相关数据,相当于虚拟机的虚拟磁盘。在正常情况下,虚拟机启动一个实例用于向外提供服务,即为“服务实例”,虚拟机的服务实例运行在所有副本上,并占据所有副本的读写权,负责读取副本中的数据及写入数据到副本中。虚拟机的服务实例可通过TCP连接对副本进行访问,但不限于此。当服务器接收到软件更新指令时,断开虚拟机的服务实例与其中一个副本的连接,例如断开服务实例与第二副本的连接,保证服务实例继续运行在第一副本上,并继续向外提供服务。
启动模块730,用于启动虚拟机的更新实例并在第二副本运行。
具体的,在断开虚拟机的服务实例与第二副本的连接后,虚拟机再次启动一个实例用于软件更新,即为“更新实例”,更新实例不向外提供服务。服务器可控制更新实例只在第二副本上运行,并进行软件更新。
更新模块740,用于通过更新实例对第二副本进行更新。
具体的,服务器通过虚拟机的更新实例对存储在第二副本上的软件进行更新、修复等操作,并可根据实际需求在软件更新完成后对软件进行调试,以保证更新后的软件运行正常,降低风险。如图2所示,虚拟机的服务实例运行在第一副本及第二副本上,当服务器接收到软件更新指令时,断开服务实例与第二副本的连接,并启动虚拟机的更新实例,使更新实例运行在第二副本上进行软件更新。在其它的实施例中,可存在N个副本,其中,N为大于2的整数,此时服务器可断开虚拟机的服务实例与其中的N-1个副本的连接,服务实例只在其中一个副本上运行,然后启动虚拟机的更新实例并在该N-1个副本上运行,进行软件更新,有利于在软件更新后进行副本之间的数据同步时减少同步的数据量。服务实例也可在其中的M个副本上运行,然后更新实例在其它的N-M个副本上运行,其中,M为大于或等于1且小于N的整数,例如存在5个副本,服务实例在其中的2个或3个副本上运行,更新实例在其它的3个或2个副本上运行等,但不限于此。
退出模块750,用于退出更新实例。
具体的,软件更新完成后,退出虚拟机的更新实例。
启动模块730还用于在第二副本上重新启动虚拟机的服务实例并运行。
具体的,服务器可在软件更新完成后,关闭在第一副本上运行的虚拟机的服务实例,并重新启动一个虚拟机的服务实例,使该服务实例运行在第二副本上,完成软件的切换,虚拟机的服务实例即可使用更新后的软件向外提供服务。
上述软件更新系统,使虚拟机的服务实例继续在第一副本运行,并在第二副本启动虚拟机的更新实例并进行更新,更新完成后在第二副本重新启动虚拟机的服务实例,能够在不中断服务器原有服务的情况下,完成软件的更新,大大缩短了服务器的服务中断时间,能有效减少用户因服务中断带来的损失。
如图8所示,在一个实施例中,上述软件更新系统,除了包括接收模块710、断开模块720、启动模块730、更新模块740和退出模块750,还包括判断模块760。
判断模块760,用于判断更新的软件是否需要数据进行调试。
具体的,用户向服务器发送软件更新指令后,可设置更新的软件是否需要利用数据进行调试,对更新的软件进行数据调试可保证软件运行正常,降低软件故障、出错的风险。服务器在接收软件更新之后,可进一步判断更新的软件是否需要数据进行调试。
具体的,副本相当于虚拟机的虚拟磁盘,而虚拟磁盘就是一个镜像文件,可将虚拟磁盘的系统盘及数据盘进行分离,副本中可包括系统盘副本及数据盘副本,系统盘副本中只安装有虚拟机所使用的操作系统及软件,并保存某些基本配置,而数据盘副本中仅保存软件产生的数据。第二副本包括系统盘第二副本及数据盘第二副本,当更新的软件需要数据进行调试时,服务器可断开虚拟机的服务实例与系统盘第二副本及数据盘第二副本的连接,使得服务实例仅可访问系统盘第一副本及数据盘第一副本,可如图4(a)所示,而虚拟机的更新实例可访问系统盘第二副本及数据盘第二副本。在软件更新完成后,可重新启动虚拟机的更新实例,并调用数据盘第二副本的数据对更新的软件进行数据调试。
断开模块720还用于当更新的软件需要数据进行调试时,则断开虚拟机的服务实例与系统盘第二副本及数据盘第二副本的连接,并使虚拟机的更新实例获取系统盘第二副本及数据盘第二副本的访问权限。
断开模块720还用于当更新的软件不需要数据进行调试时,则断开虚拟机的服务实例与系统盘第二副本的连接,并使虚拟机的更新实例获取系统盘第二副本的访问权限。
具体的,当更新的软件不需要数据进行调试时,可仅断开虚拟机的服务实例与系统盘第二副本的连接,如图4(b)所示,服务实例可访问系统盘第一副本、数据盘第一副本及数据盘第二副本,而虚拟机的更新实例仅可访问系统盘第二副本,而不具有数据盘第二副本的访问权限,更新实例无法访问所有的数据盘副本。
在另一个实施例中,当存在N个副本时,其中,N为大于2的整数。
断开模块720还用于当更新的软件需要数据进行调试时,则断开虚拟机的服务实例与N-M个系统盘副本及L个数据盘副本的连接,并使虚拟机的更新实例获取N-M个系统盘副本及L个数据盘副本的访问权限。
具体的,M为大于或等于1且小于N的整数,L为大于或等于1且小于N的整数。当存在N个系统盘副本及N个数据盘副本时,若更新的软件需要进行数据调试,服务器可断开虚拟机的服务实例与其中N-M个系统盘副本及L个数据盘副本的连接,即服务实例可访问M个系统盘副本及N-L个数据盘副本,而虚拟机的更新实例可访问N-M个系统盘副本及L个数据盘副本。例如,存在4个副本,虚拟机的服务实例可断开其中系统盘第三副本、系统盘第四副本及数据盘第四副本的连接,仅访问剩下的两个系统盘副本及3个数据盘副本,而虚拟机的更新实例则可访问系统盘第三副本、系统盘第四副本及数据盘第四副本,但不限于此。
断开模块720还用于当更新的软件不需要数据进行调试时,则断开虚拟机的服务实例与N-M个系统盘副本的连接,并使虚拟机的更新实例获取N-M个系统盘副本的访问权限。
具体的,当更新的软件不需要数据进行调试时,服务器可断开虚拟机的服务实例与其中N-M个系统盘副本的连接,服务实例拥有M个系统盘副本及所有数据盘副本的访问权限,而虚拟机的更新实例拥有N-M个系统盘副本的访问权限,没有数据盘副本的访问权限。例如,存在5个副本,虚拟机的服务实例可断开其中的系统盘第二副本、系统盘第三副本及系统盘第四副本的连接,仅访问剩下的两个系统盘副本及所有的数据盘副本,而更新实例则可访问系统盘第二副本、系统盘第三副本及系统盘第四副本,但不限于此。
在进一步的实施例中,断开模块720还用于当更新的软件需要数据进行调试时,则断开虚拟机的服务实例与N-1个系统盘副本及一个数据盘副本的连接,并使虚拟机的更新实例获取该N-1个系统盘副本及一个数据盘副本的访问权限。
具体的,当存在N个系统盘副本及N个数据盘副本时,若更新的软件需要进行数据调试,服务器可断开虚拟机的服务实例与其中N-1个系统盘副本及一个数据盘副本的连接,即服务实例仅拥有一个系统盘副本及N-1个数据盘副本的访问权限,而虚拟机的更新实例则拥有一个数据盘副本及N-1个系统盘副本的访问权限。如图5(a)所示,存在3个副本,虚拟机的服务实例可访问系统盘第一副本及数据盘第一副本、数据盘第二副本,而更新实例可访问数据盘第三副本及系统盘第二副本、系统盘第三副本。
断开模块720还用于当更新的软件不需要数据进行调试时,则断开虚拟机的服务实例与N-1个系统盘副本的连接,并使虚拟机的更新实例获取该N-1个系统盘副本的访问权限。
具体的,当更新的软件不需要数据进行调试时,服务器可断开虚拟机的服务实例与其中N-1个系统盘副本的连接,服务实例拥有一个系统盘副本及所有数据盘副本的访问权限,而虚拟机的更新实例拥有N-1个系统盘副本的访问权限,没有数据盘副本的访问权限。如图5(b)所示,存在3个副本,虚拟机的服务实例可访问系统盘第一副本及数据盘第一副本、数据盘第二副本、数据盘第三副本,而虚拟机的更新实例可访问系统盘第二副本及系统盘第三副本,而不能访问所有的数据盘副本。
通过此种分配服务实例及更新实例对系统盘副本及数据盘副本访问权限的方式,在进行软件更新时,其中的N-1个系统盘副本中的软件均完成更新,而当更新的软件需要数据进行调试时,仅一个数据盘副本用作调试,其它的N-1个数据盘副本中的数据都是服务实例向外提供服务时所产生的最新数据,可在更新软件完成后进行副本之间的数据同步时减少同步的数据量,分别仅需同步一个系统盘副本和一个数据盘副本的数据。
上述软件更新系统,将虚拟机的系统盘及数据盘分离,可根据实际需求设置虚拟机的更新实例的访问权限,方便软件更新后进行数据调试,且可减少后期进行副本之间数据同步时的同步数据量。
如图9所示,上述软件更新系统,除了包括接收模块710、断开模块720、启动模块730、更新模块740、退出模块750和判断模块760,还包括同步模块770。
退出模块750还用于根据预设的切换时间关闭在第一副本运行的虚拟机的服务实例。
具体的,用户可预先设置切换时间,该切换时间为将虚拟机的服务实例切换运行到更新后的副本上的时间,切换时间可选择在服务器业务最为空闲的时间点,例如凌晨0点等。当到达该切换时间时,服务器将自动关闭在第一副本上运行的虚拟机的服务实例,然后重新启动虚拟机的服务实例并在第二副本上运行,即可使用更新后的软件向外提供服务,服务器中断服务的时间仅为关闭并重启虚拟机的服务实例的时间,通过预设的切换时间,可进一步减少因服务器中断带来的损失。
同步模块770,用于同步第一副本及第二副本的数据。
具体的,软件更新完成后,因副本之间的数据不一致,需进行副本之间的数据同步,将不同副本的数据修复成一致状态。
同步模块770包括系统盘同步单元772和数据盘同步单元774。
系统盘同步单元772,用于将系统盘第二副本的数据同步至系统盘第一副本。
具体的,可通过将系统盘第二副本与系统盘第一副本存在差异的那部分数据,即更新过的软件数据拷贝到系统盘第一副本来同步系统盘第一副本及系统盘第二副本的数据。
数据盘同步单元774,用于判断更新实例是否访问过数据盘第二副本,若访问过,则将数据盘第一副本的数据同步至数据盘第二副本。
具体的,可先判断虚拟机的更新实例是否访问过数据盘第二副本,若未访问过,即表示更新实例不需要数据进行调试,数据盘第二副本中的数据即为最新的数据,不需要进行数据同步。若更新实例访问过数据盘第二副本,则可通过将数据盘第一副本与数据盘第二副本存在差异的那部分数据拷贝到数据盘第二副本,数据盘副本的同步方向与系统盘副本相反。在其它的实施例中,若存在N个副本,其中,N为大于2的整数,可将虚拟机的更新实例访问过的系统盘副本的数据同步至未访问过的系统盘副本,当更新实例访问过数据盘副本时,可将更新实例未访问过的数据盘副本的数据同步至该访问过的数据盘副本。
上述软件更新系统,使虚拟机的服务实例继续在第一副本运行,并在第二副本启动虚拟机的更新实例并进行更新,更新完成后在第二副本重新启动虚拟机的服务实例,能够在不中断服务器原有服务的情况下,完成软件的更新,大大缩短了服务器的服务中断时间,能有效减少用户因服务中断带来的损失。
在一个实施例中,上述软件更新系统,还包括获取模块和配置模块。
获取模块,用于获取输入的IP地址,或自动选择与虚拟机的服务实例不同的IP地址。
配置模块,用于将虚拟机的更新实例配置为该IP地址。
具体的,在虚拟机的更新实例启动前,用户可输入一个与虚拟机的服务实例不同的IP地址,或由服务器自动选择一个与虚拟机的服务实例不同的IP地址。在虚拟机的更新实例启动后,可自动将更新实例的IP地址设置为之前获取的与服务实例不同的IP地址。
上述软件更新系统,可保证虚拟机的服务实例与更新实例的IP地址不会发生冲突,保证服务实例与更新实例均是可以进行正常访问的。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。