公开/公告号CN107861790A
专利类型发明专利
公开/公告日2018-03-30
原文格式PDF
申请/专利权人 新华三云计算技术有限公司;
申请/专利号CN201711025415.4
发明设计人 高亮;
申请日2017-10-27
分类号
代理机构北京超凡志成知识产权代理事务所(普通合伙);
代理人王术兰
地址 610000 四川省成都市高新区天华二路219号4栋1单元1层1-6号、2层1-6号、3层1-6号
入库时间 2023-06-19 04:56:43
法律状态公告日
法律状态信息
法律状态
2020-05-15
授权
授权
2018-11-30
实质审查的生效 IPC(主分类):G06F9/455 申请日:20171027
实质审查的生效
2018-03-30
公开
公开
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种虚拟机磁盘空间扩展方法、装置、宿主机及可读存储介质。
背景技术
目前,对于在Msdos(Microsoft disk operating system,微软磁盘操作系统)分区模式下的主机(无论是虚拟机还是宿主机),没有直接的办法可以使Msdos分区模式下的分区容量超过最大容量(比如,2T)。其中,对在Msdos分区模式下的KVM(Kernel-basedVirtual Machine,基于系统内核的虚拟化)虚拟机可以扩展其磁盘大小,但扩展容量会受到一个分区最大容量的限制,当扩展后的容量大于分区的最大容量时,现有技术很难应对。
发明内容
为了克服现有技术中的上述不足,本发明所要解决的技术问题是提供一种虚拟机磁盘空间扩展方法、装置、宿主机及可读存储介质,其能够针对Msdos分区的KVM虚拟机,在宿主机层面,在不损坏虚拟机存储内容的基础上,可以将虚拟机的磁盘空间扩展至超过Msdos分区模式下单个分区的最大容量。
本发明提供一种虚拟机磁盘空间扩展方法,应用于安装有虚拟机的宿主机,所述方法包括:
接收对安装于所述宿主机上的目标虚拟机的磁盘空间进行扩展的扩展请求,其中,所述扩展请求包括扩展后所述目标虚拟机磁盘的目标容量;
根据所述扩展请求向所述目标虚拟机分配扩展磁盘,所述扩展磁盘的容量为所述目标容量与所述目标虚拟机当前磁盘空间容量的差值;
检测所述目标虚拟机的磁盘的当前分区模式;
当所述目标虚拟机的磁盘的当前分区模式为Msdos分区模式,且扩展后所述目标虚拟机磁盘的目标容量大于Msdos分区模式下单个分区的最大容量时,将所述目标虚拟机的启动引导方式由Msdos分区模式对应的Legacy BIOS(Legacy Basic Input OutputSystem,传统基本输入输出系统)引导方式转换为GPT(GUID Partition Table,全局唯一标识磁盘分区表)分区模式对应的UEFI(Unified Extensible Firmware Interface,统一的可扩展固件接口)引导方式;
将扩展后所述目标虚拟机的磁盘的分区模式转换为GPT分区模式;
根据所述UEFI引导方式启动所述目标虚拟机。
本发明还提供一种虚拟机磁盘分区转换方法,应用于安装有虚拟机的宿主机,所述方法包括:
检测所述虚拟机磁盘的当前分区模式是否为Msdos分区模式;
若当前分区模式为Msdos分区模式,将所述虚拟机的启动引导方式由Msdos分区模式对应的Legacy BIOS引导方式转换为GPT分区模式对应的UEFI引导方式;
将所述虚拟机的磁盘分区模式转换为GPT分区模式。
本发明还提供一种虚拟机磁盘空间扩展装置,应用于安装有虚拟机的宿主机,所述装置包括:
接收模块,用于接收对安装于所述宿主机上的目标虚拟机的磁盘空间进行扩展的扩展请求,其中,所述扩展请求包括扩展后所述目标虚拟机磁盘的目标容量;
分配模块,用于根据所述扩展请求向所述目标虚拟机分配扩展磁盘,所述扩展磁盘的容量为所述目标容量与所述目标虚拟机当前磁盘空间容量的差值;
检测模块,用于检测所述目标虚拟机的磁盘的当前分区模式;
第一转换模块,用于当所述目标虚拟机的磁盘的当前分区模式为Msdos分区模式,且扩展后所述目标虚拟机磁盘的目标容量大于Msdos分区模式下单个分区的最大容量时,将所述目标虚拟机的启动引导方式由Msdos分区模式对应的Legacy BIOS引导方式转换为GPT分区模式对应的UEFI引导方式;
第二转换模块,用于将扩展后所述目标虚拟机的磁盘的分区模式转换为GPT分区模式;
启动模块,用于根据所述UEFI引导方式启动所述目标虚拟机。
本发明还提供一种虚拟机磁盘分区转换装置,应用于安装有虚拟机的宿主机,所述装置包括:
检测模块,用于检测所述虚拟机磁盘的当前分区模式是否为Msdos分区模式;
第一转换模块,用于在当前分区模式为Msdos分区模式时,将所述虚拟机的启动引导方式由Msdos分区模式对应的Legacy BIOS引导方式转换为GPT分区模式对应的UEFI引导方式;
第二转换模块,用于将所述虚拟机的磁盘分区模式转换为GPT分区模式。
本发明还提供一种宿主机,所述宿主机中安装有虚拟机,所述宿主机包括:
存储器;
处理器;及
虚拟机磁盘空间扩展装置,所述装置安装于所述存储器中并包括一个或多个由所述处理器执行的软件功能模块,所述装置包括:
接收模块,用于接收对安装于所述宿主机上的目标虚拟机的磁盘空间进行扩展的扩展请求,其中,所述扩展请求包括扩展后所述目标虚拟机磁盘的目标容量;
分配模块,用于根据所述扩展请求向所述目标虚拟机分配扩展磁盘,所述扩展磁盘的容量为所述目标容量与所述目标虚拟机当前磁盘空间容量的差值;
检测模块,用于检测所述目标虚拟机的磁盘的当前分区模式;
第一转换模块,用于当所述目标虚拟机的磁盘的当前分区模式为Msdos分区模式,且扩展后所述目标虚拟机磁盘的目标容量大于Msdos分区模式下单个分区的最大容量时,将所述目标虚拟机的启动引导方式由Msdos分区模式对应的Legacy BIOS引导方式转换为GPT分区模式对应的UEFI引导方式;
第二转换模块,用于将扩展后所述目标虚拟机的磁盘的分区模式转换为GPT分区模式;
启动模块,用于根据所述UEFI引导方式启动所述目标虚拟机。
本发明还提供一种可读存储介质,所述可读存储介质包括计算机程序,
所述计算机程序运行时控制所述可读存储介质所在设备执行所述的虚拟机磁盘空间扩展方法。
相对于现有技术而言,本发明具有以下有益效果:
本发明提供一种虚拟机磁盘空间扩展方法、装置、宿主机及可读存储介质。所述方法应用于安装有虚拟机的宿主机。在接收到对安装于所述宿主机上的目标虚拟机的磁盘空间进行扩展的扩展请求后,向所述目标虚拟机分配扩展磁盘。其中,所述扩展请求包括扩展后所述目标虚拟机磁盘的目标容量。进而检测所述目标虚拟机的当前分区模式。若所述目标虚拟机的当前分区模式为Msdos分区模式,且扩展后所述目标虚拟机磁盘的目标容量大于Msdos分区模式下单个分区的最大容量时,则将所述目标虚拟机的启动引导方式由Msdos分区模式对应的Legacy BIOS引导方式转换为GPT分区模式对应的UEFI引导方式,及将扩展后所述目标虚拟机的磁盘的分区模式转换为GPT分区模式,并根据所述UEFI引导方式启动所述目标虚拟机。由此,在宿主机层面,在不损坏虚拟机存储内容的基础上,可以将Msdos分区模式的KVM虚拟机的磁盘空间扩展至超过Msdos分区模式下单个分区的最大容量。
为使发明的上述目的、特征和优点能更明显易懂,下文特举本发明较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1是本发明实施例提供的宿主机的方框示意图。
图2是本发明实施例提供的虚拟机磁盘空间扩展方法的流程示意图。
图3是图2中步骤S150包括的子步骤的流程示意图。
图4是图3中子步骤S152包括的子步骤的流程示意图。
图5是本发明实施例提供的虚拟机磁盘分区转换方法的流程示意图。
图6是图1中空间扩展装置的方框示意图。
图7是图6中转换模块的方框示意图。
图8是本发明实施例提供的分区转换装置的方框示意图。
图标:100-宿主机;110-存储器;120-存储控制器;130-处理器;200-空间扩展装置;210-接收模块;220-分配模块;230-检测模块;240-第一转换模块;250-第二转换模块;251-解析子模块;252-转换子模块;260-启动模块;300-分区转换装置。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
下面结合附图,对本发明的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
请参照图1,图1是本发明实施例提供的宿主机100的方框示意图。在本发明实施例中,所述宿主机100可以是,但不限于,台式电脑、平板电脑等。所述宿主机100可以包括:存储器110、存储控制器120、处理器130以及空间扩展装置200。所述存储器110、存储控制器120及处理器130各元件之间直接或间接地电性连接,以实现数据的传输或交互。
其中,所述存储器110可以是,但不限于,随机存取存储器(Random AccessMemory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(ProgrammableRead-Only Memory,PROM)等。其中,存储器110用于存储程序(比如,空间扩展装置200),所述处理器130在接收到执行指令后,执行所述程序。所述处理器130以及其他可能的组件对存储器110的访问可在所述存储控制器120的控制下进行。
所述处理器130可能是一种集成电路芯片,具有信号的处理能力。上述的处理器130可以是通用处理器,可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述宿主机100内还可以安装有至少一个虚拟机。虚拟机是通过软件模拟的具有硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。通过虚拟机软件,可以在一台物理计算机(即宿主机100)上模拟出一台或多台虚拟的计算机,而这些虚拟机可以像真正的计算机那样工作,比如,安装操作系统、安装应用程序等。
其中,在本发明实施例中,所述虚拟机为KVM虚拟机。KVM是Linux下x86硬件平台上的全功能虚拟化解决方案,包含一个可加载的内核模块kvm.ko提供和虚拟化核心架构和处理器规范模块。KVM是基于硬件的完全虚拟化。
可以理解,图1所示的结构仅为示意,所述宿主机100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。
请参照图2,图2是本发明实施例提供的虚拟机磁盘空间扩展方法的流程示意图。所述虚拟机磁盘空间扩展方法应用于安装有虚拟机的宿主机100。下面对虚拟机磁盘空间扩展方法的具体流程进行详细阐述。
步骤S110,接收对安装于所述宿主机100上的目标虚拟机的磁盘空间进行扩展的扩展请求。
在本实施例中,所述宿主机100接收的扩展请求可以是由虚拟机在运行过程中,由于磁盘空间不足而自动生成的扩展请求,也可以是接收输入的扩展请求。其中,所述扩展请求可以包括扩展后所述目标虚拟机磁盘的目标容量。
在本实施例的实施方式中,所述宿主机100中可以安装有至少一个虚拟机,所述扩展请求可以包括目标虚拟机的标识及扩展后所述目标虚拟机磁盘的目标容量或所需扩展的磁盘容量。由此,所述宿主机100可以根据所述扩展请求获得目标虚拟机及扩展后所述目标虚拟机磁盘的目标容量。
步骤S120,根据所述扩展请求向所述目标虚拟机分配扩展磁盘。
在本实施例中,所述扩展磁盘的容量为所述目标容量与所述目标虚拟机当前磁盘空间容量的差值。所述宿主机100可以通过调用磁盘扩展工具或者磁盘扩展命令等方式对所述目标虚拟机的磁盘进行扩展。
步骤S130,检测所述目标虚拟机的磁盘的当前分区模式。
虚拟机的磁盘分区模式可以是Msdos,也可以是GPT,因此需要对所述虚拟机的磁盘的分区模式进行检测。其中,Msdos是一种磁盘分区表格式,是主机使用BIOS引导方式引导后所采用的磁盘分区方式。该分区模式下使用MBR(Master Boot Record,主磁盘引导记录)来存储分区信息,一般Msdos与MBR等同。Msdos分区模式具有以下特点:最多支持4个主分区,每个分区最大只能支持2T容量等。而GPT分区模式则支持无数个分区,且支持超过2T容量的分区、最大容量达到EB级别(1EB=1024PB=1024*1024TB),GPT分区模式可以解决Msdos分区模式的不足。
步骤S140,当所述目标虚拟机的磁盘的当前分区模式为Msdos分区模式,且扩展后所述目标虚拟机磁盘的目标容量大于Msdos分区模式下单个分区的最大容量时,将所述目标虚拟机的启动引导方式由Msdos分区模式对应的Legacy BIOS引导方式转换为GPT分区模式对应的UEFI引导方式。
在本实施例中,在扩展后所述目标虚拟机磁盘的目标容量大于2T的情况下,所述目标虚拟机的磁盘的单个分区的容量可能会大于2T。且若所述目标虚拟机的磁盘的当前分区模式为Msdos分区模式,由于Msdos分区模式下的单个分区的最大容量为2T,若大于2T,则不能识别多余的容量,而GPT分区模式下的分区可以支持2T以上容量的分区。因此,需要将所述目标虚拟机的启动引导方式由Msdos分区模式对应的Legacy BIOS引导方式转换为GPT分区模式对应的UEFI引导方式。
其中,早期主机一般支持Legacy BIOS的引导方式,采用这种方式启动的主机,当系统启动时,都是先从磁盘的MBR(磁盘的第一个扇区)加载引导程序,并开始引导系统。MBR中也保留着磁盘的分区模式,但MBR中最多只可以保留4个主分区,因此安装的操作系统最多也就是4个主分区。为了解决主分区数量较少的问题,可以通过设置扩展逻辑分区的方式来解决。但是该分区方式,最大的分区容量依然是2T。采用Legacy BIOS的引导方式后,默认的分区模式为Msdos。
其中,UEFI是一种详细描述全新类型接口的标准,是适用于电脑的标准固件接口,用于代替BIOS(Basic Input Output System,基本输入输出系统)。UEFI具有图像化界面、多种多样的操作方式等特点。采用UEFI的方式进行引导后,默认的分区模式为GPT。
在本实施例中,可以通过将所述Legacy BIOS引导方式的配置参数调整为所述UEFI引导方式的配置参数的方式,以将Legacy BIOS引导方式转换为UEFI引导方式。
在本实施例中,可以对Legacy BIOS引导方式的开源固件程序的配置进行修改以改变引导方式,还可以直接开发一用于UEFI引导的程序进行引导方式的改变。
步骤S150,将扩展后所述目标虚拟机的磁盘的分区模式转换为GPT分区模式。
请参照图3,图3是图2中步骤S150包括的子步骤的流程示意图。所述步骤S150可以包括子步骤S151及子步骤S152。
针对KVM虚拟机,虚拟机使用的镜像内部分区模式转换比较麻烦。而虚拟机磁盘镜像格式都是raw,使得在宿主机100看到的镜像文件与真正磁盘数据顺序一致,由此,在宿主机100层面可以直接读取到虚拟机的文件系统数据信息。其中,raw格式的文件就是未经加工的文件,比如,raw图像是CMOS或者CCD图像感应器将捕捉到的光源信号转化为数字信号的原始数据。
子步骤S151,获取所述目标虚拟机的磁盘镜像文件中的主磁盘引导记录,并对获得的主磁盘引导记录进行解析,得到磁盘在Msdos分区模式下的分区信息。
在本实施例中,主磁盘引导记录在所述目标虚拟机的磁盘镜像文件的前512字节中,可以读取所述目标虚拟机磁盘镜像文件的前512字节,并根据主磁盘引导记录的格式对所述主磁盘引导记录进行分析,从而获得磁盘的分区信息。下面对主磁盘引导记录进行介绍。
主磁盘引导记录包括引导代码、分区信息表及结束字符三部分。主磁盘引导记录中的引导二进制代码是在安装操作系统的时候写入,用于引导系统。分区信息表最多可包括4条分区表项,每条分区表项对应一个主分区或扩展分区,其中,分区信息表中最多可包括一个扩展分区。每条分区表项包括该分区的开始扇区和开始柱面、结束扇区和结束柱面、该分区的相对扇区数及该分区的总扇区数等。
其中,Msdos分区模式下的分区最多支持4个主分区,其中一个主分区可以是扩展分区。扩展分区其实只是一个索引,用于指向真正的扩展分区表,扩展分区中可以再创建逻辑分区,从而解决Msdos分区模式只支持4个分区的缺陷。
通过分析所述主磁盘引导记录可获得所述目标虚拟机的磁盘在Msdos分区模式下的主分区数量、扩展分区数量、扩展分区中逻辑分区的数量、每个分区的开始扇区及结束扇区等分区信息。
子步骤S152,根据GPT分区模式的格式及所述分区信息将所述目标虚拟机磁盘分区模式转换为GPT分区模式。
GPT分区模式的格式包括保护MBR Protective MBR、GPT表头、分区列表等。Protective MBR用于防止不支持GPT分区模式的磁盘管理工具错误识别并破坏磁盘中的数据。GPT表头定义了磁盘的可用空间及组成分区列表的分区表项的大小和数量。一般分区列表中最多可创建128个分区,也就是说,分区列表中保留了128个分区表项,其中,每个都是128字节。GPT表头还记录了磁盘的GUID(Globally Unique Identifier,全局唯一标识符)、GPT表头位置和大小等。分区列表使用简单直接的方式表示分区。一个分区表项包括分区类型GUID、该分区唯一的GUID及该分区的起始和末尾的64位LBA(Logical Block Address,逻辑区块地址)编号等。
请参照图4,图4是图3中子步骤S152包括的子步骤的流程示意图。所述子步骤S152可以包括子步骤S1521及子步骤S1522。
子步骤S1521,根据所述分区信息生成GPT表头。
在本实施例中,根据获得的所述分区信息及GPT分区模式的格式可以得到GPT表头。具体地,GPT分区模式中不区分主分区、扩展分区、逻辑分区,Msdos分区模式中的所有主分区和逻辑分区都对应GPT分区模式中的一个普通分区。Msdos分区模式中的引导代码在GPT分区模式中不需要,这部分不需要转换,进而根据由所述主磁盘引导记录得到的所述分区信息生成GPT表头。
子步骤S1522,依次将由所述分区信息中每个分区的分区表项获得的每个分区的开始位置及结束位置写入到GPT分区表项中。
在本实施例中,在生成GPT表头后,根据Msdos分区模式下的分区信息表生成GPT分区模式下的分区列表。具体地,根据所述主磁盘引导记录中的分区信息表得到每个分区的开始位置及结束位置,进而将包括该分区的开始位置及结束位置的分区数据写入所述GPT分区表项中。重复上述步骤,以将Msdos分区模式下的所有分区数据写入到GPT分区模式下的分区列表中,该分区列表中包括多个GPT分区表项。
步骤S160,根据所述UEFI引导方式启动所述目标虚拟机。
在本实施例中,在完成上述步骤后,启动所述目标虚拟机。所述目标虚拟机启动后,所述目标虚拟机的引导方式已经由Legacy BIOS引导方式转换为UEFI引导方式,且所述目标虚拟机的磁盘分区模式已转换为GPT分区模式,启动后所述目标虚拟机的磁盘可以被正常识别。
进一步地,在将所述目标虚拟机启动后,将所述扩展磁盘作为一个分区进行格式化。
上述方法在宿主机100层面转换目标虚拟机的磁盘引导方式及分区模式,操作简单,既绕过Msdos分区模式下分区容量不能超过分区最大容量(比如,2T)的限制,又能满足用户将目标虚拟机的磁盘扩展到分区最大容量以上的需求。
请参照图5,图5是本发明实施例提供的虚拟机磁盘分区转换方法的流程示意图。所述方法应用于安装有虚拟机的宿主机100。下面对虚拟机磁盘分区转换方法进行阐述。
步骤S310,检测所述虚拟机磁盘的当前分区模式是否为Msdos分区模式。
步骤S320,若当前分区模式为Msdos分区模式,将所述虚拟机的启动引导方式由Msdos分区模式对应的Legacy BIOS引导方式转换为GPT分区模式对应的UEFI引导方式。
步骤S330,将所述虚拟机的磁盘分区模式转换为GPT分区模式。
在本实施例中,Legacy BIOS引导方式默认的分区模式为Msdos分区模式,UEFI引导方式默认的分区模式为GPT分区模式。在所述虚拟机的磁盘分区模式为Msdos分区模式时,通过将引导方式转换为UEFI引导方式,及将分区模式转换为GPT分区模式,则可以避免在对扩展虚拟机的磁盘进行扩展时,需要先判断扩展后虚拟机的目标容量是否超过Msdos分区模式下单个分区的最大容量。通过所述虚拟机磁盘分区转换方法,在需要扩展虚拟机的磁盘时,可以直接扩展,同时在所述目标容量大于Msdos分区模式下单个分区的最大容量时也不会出现分区模式不支持扩展后的磁盘的情况。
关于步骤S310~步骤S330的描述可以参照上文对步骤S130~步骤S150的详细描述。
请参照图6,图6是图1中空间扩展装置200的方框示意图。所述空间扩展装置200应用于安装有虚拟机的宿主机100,所述空间扩展装置200可以包括接收模块210、分配模块220、检测模块230、第一转换模块240、第二转换模块250及启动模块260。
所述接收模块210,用于接收对安装于所述宿主机100上的目标虚拟机的磁盘空间进行扩展的扩展请求。
其中,所述扩展请求包括扩展后所述目标虚拟机磁盘的目标容量。
在本实施例中,所述接收模块210用于执行图2中的步骤S110,关于所述接收模块210的具体描述可以参照图2中步骤S110的描述。
所述分配模块220,用于根据所述扩展请求向所述目标虚拟机分配扩展磁盘。
其中,所述扩展磁盘的容量为所述目标容量与所述目标虚拟机当前磁盘空间容量的差值。
在本实施例中,所述分配模块220用于执行图2中的步骤S120,关于所述分配模块220的具体描述可以参照图2中步骤S120的描述。
所述检测模块230,用于检测所述目标虚拟机的磁盘的当前分区模式。
在本实施例中,所述检测模块230用于执行图2中的步骤S130,关于所述检测模块230的具体描述可以参照图2中步骤S130的描述。
所述第一转换模块240,用于当所述目标虚拟机的磁盘的当前分区模式为Msdos分区模式,且扩展后所述目标虚拟机磁盘的目标容量大于Msdos分区模式下单个分区的最大容量时,将所述目标虚拟机的启动引导方式由Msdos分区模式对应的Legacy BIOS引导方式转换为GPT分区模式对应的UEFI引导方式。
所述第一转换模块240将所述目标虚拟机的启动引导方式由Msdos分区模式对应的Legacy BIOS引导方式转换为GPT分区模式对应的UEFI引导方式的方式包括:
将所述Legacy BIOS引导方式的配置参数调整为所述UEFI引导方式的配置参数。
在本实施例中,所述第一转换模块240用于执行图2中的步骤S140,关于所述第一转换模块240的具体描述可以参照图2中步骤S140的描述。
所述第二转换模块250,用于将扩展后所述目标虚拟机的磁盘的分区模式转换为GPT分区模式。
请参照图7,图7是图6中第二转换模块250的方框示意图。所述第二转换模块250可以包括解析子模块251及转换子模块252。
所述解析子模块251,用于获取所述目标虚拟机的磁盘镜像文件中的主磁盘引导记录,并对获得的主磁盘引导记录进行解析,得到磁盘在Msdos分区模式下的分区信息,所述分区信息包括主分区数量、扩展分区数量、扩展分区中逻辑分区的数量、每个分区的开始扇区及结束扇区。
所述转换子模块252,用于根据GPT分区模式的格式及所述分区信息将所述目标虚拟机磁盘分区模式转换为GPT分区模式。
所述转换子模块252根据GPT分区模式的格式及所述分区信息将所述目标虚拟机磁盘分区模式转换为GPT分区模式的方式包括:
根据所述分区信息生成GPT表头;
依次将由所述分区信息中每个分区的分区表项获得的每个分区的开始位置及结束位置写入到GPT分区表项中。
在本实施例中,所述第二转换模块250用于执行图2中的步骤S150,关于所述第二转换模块250的具体描述可以参照图2中步骤S150的描述。
所述启动模块260,用于根据所述UEFI引导方式启动所述目标虚拟机。
所述启动模块260根据所述UEFI引导方式启动所述目标虚拟机的方式包括:
在将所述目标虚拟机启动后,将所述扩展磁盘作为一个分区进行格式化。
在本实施例中,所述启动模块260用于执行图2中的步骤S160,关于所述启动模块260的具体描述可以参照图2中步骤S160的描述。
请参照图8,图8是本发明实施例提供的分区转换装置300的方框示意图。所述分区转换装置300可以包括检测模块230、第一转换模块240及第二转换模块250。
所述检测模块230,用于检测所述虚拟机磁盘的当前分区模式是否为Msdos分区模式。
所述第一转换模块240,用于在当前分区模式为Msdos分区模式时,将所述虚拟机的启动引导方式由Msdos分区模式对应的Legacy BIOS引导方式转换为GPT分区模式对应的UEFI引导方式。
所述第二转换模块250,用于将所述虚拟机的磁盘分区模式转换为GPT分区模式。
本发明实施例还提供一种可读存储介质,所述可读存储介质包括计算机程序,所述计算机程序运行时控制所述可读存储介质所在设备执行所述虚拟机磁盘空间扩展方法。
综上所述,本发明实施例提供一种虚拟机磁盘空间扩展方法、装置、宿主机及可读存储介质。所述方法应用于安装有虚拟机的宿主机。在接收到对安装于所述宿主机上的目标虚拟机的磁盘空间进行扩展的扩展请求后,向所述目标虚拟机分配扩展磁盘。其中,所述扩展请求包括扩展后所述目标虚拟机磁盘的目标容量。进而检测所述目标虚拟机的当前分区模式。若所述目标虚拟机的当前分区模式为Msdos分区模式,且扩展后所述目标虚拟机磁盘的目标容量大于Msdos分区模式下单个分区的最大容量,则将所述目标虚拟机的启动引导方式由Msdos分区模式对应的Legacy BIOS引导方式转换为GPT分区模式对应的UEFI引导方式,及将扩展后所述目标虚拟机的磁盘的分区模式转换为GPT分区模式,并根据所述UEFI引导方式启动所述目标虚拟机。由此,在宿主机层面,在不损坏虚拟机存储内容的基础上,可以将Msdos分区模式的KVM虚拟机的磁盘空间扩展至超过Msdos分区模式下单个分区的最大容量。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
机译: 虚拟机快速容量扩展方法,装置和设备以及存储介质
机译: 虚拟机管理装置,虚拟机管理方法和计算机可读存储介质
机译: 虚拟机管理装置,虚拟机管理方法和计算机可读存储介质