目录
问题背景
在做项目过程中需要用虚拟机进行测试仿真和调试。以前习惯用VMWare虚拟机软件,管理位于本地计算机上的多个虚拟机。
通过VMWare建立的虚拟机,文件都是保存在本地的,是看的见摸得着的。核心的本地文件就来两个XXXX.vmx(虚拟机的基本信息)以及XXXX.vmdk.其中,后者较大。打开VMWare,找到VMX文件就可以启动该虚拟机。
一个礼拜前去七彩云南,搞了一个虚拟机。拷回来发现,是虚拟机VMWare无法识别的格式:XXXXX.vhdx。当时脑袋里就嗡嗡嗡直响。这是什么鬼?
我当时觉得是不是我的VMWare是不是版本太低了,于是升级了VMWare依然显示无法打开,不是虚拟机配置文件。看来这个东西不是VMWare生成的。于是百度下VHDX到底是什么?
VHDX文件格式
要研究VHDX必须先了解一下微软的虚拟磁盘(Virtual Hard Disk,VHD)文件。VHD格式的文件可以被压缩成单个文件存放在宿主计算机的文件系统上。通过微软的Virtual PC2007以及Windows7以上的操作系统可直接创建,并在其中安装虚拟机,VHD文件里面就是这些虚拟机启动所需的系统文件和虚拟机磁盘文件。
VHDX是在VHD基础上发展起来的更高性能的一种虚拟技术。在Windows Server 2012和Windows 8系统中新增了VHDX格式支持,其发布带来了虚拟化方面的许多改进,引起了许多IT专家的注意。同时允许Hyper-V管理员使用以前的VHD格式。VHDX 文件通常被归类为 Disk Image Files。其性能更优:支持高达64 TB的虚拟硬盘存储容量,在之前,Hyper-V虚拟硬盘存在最大2TB的容量限制。
通过记录对VHDX元数据结构的更新,防止电源故障期间的数据损坏。
改进了虚拟硬盘格式的对齐方式,以便在大扇区磁盘上正常工作。
更大的块大小用于动态磁盘和差异磁盘,这使得这些磁盘能够适应工作负载的需要。
一种4-KB逻辑扇区虚拟磁盘,用于为4-KB扇区设计的应用程序和工作负载时,可以提高性能。
存储有关用户可能要记录的文件的自定义元数据的能力,例如操作系统版本或应用的修补程序。
首先,需要知道的是可以在Windows Server 2012上创建和使用两种格式,但是VHDX文件和Windows Server 2008并不兼容。微软推荐大多数Windows Server 2012用户将VHD文件升级到VHDX,以使用其中的各种新特性。但是,如果你希望将虚拟机移动到之前版本的Windows Server上,那么使用VHD文件会更加方便。用户可以在Hyper-V中的编辑虚拟硬盘向导中将VHD文件转换为VHDX文件。
随着虚拟环境的企业工作负载在规模和性能需求上的增长,虚拟硬盘(VHD)格式需要适应它们。Windows Server 2012中的Hyper-V引入了名为VHDX的VHD格式的新版本,该格式旨在处理当前和未来的工作负载。
VHDX文件中到底有什么
在上面的介绍之后,大致可以将VHDX文件理解为VMWare虚拟机下的在VMDK文件。我的计算机还停留在Win7系统,如何看看VHDX文件里到底有什么乾坤呢?下面有两种方法:使用windows系统自带的磁盘管理来加载这个文件。有两种方法可以加载VHDX文件,首先介绍第一种:
Windows建+R:快捷键,打开运行命令窗口。
输入命令:diskmgmt.msc。打开磁盘管理对话框:
目前,该计算机挂载了两个物理盘:磁盘0和磁盘1.
磁盘1是一块三星的固态硬盘SSD,256G。作为系统盘安装了Win10操作系统。
操作附加VHD:
在“附加虚拟硬盘”对话框中,通过浏览,打开VHDX文件所在的位置。打开,确定。
这时候,我们再来看看磁盘管理:多了一个虚拟磁盘2.有绿色标志。和物理系统磁盘1,差不多都有EFI系统分区。说明在该虚拟磁盘上也装有系统。这里的磁盘2,就是VHDX这个文件所映射出来的。明明是一个文件,确让系统认为它是一个物理磁盘,这就是虚拟化技术。
这时候就可以通过Windows的资源浏览器来读取这个虚拟磁盘里的文件了。让我们揭开它的神秘面纱:
计算机中,这个新增的本地磁盘I盘就是虚拟出来的。双击打开看看看:
可以看出这个I盘文件结构很像是我们常见的系统盘C盘。该系统应该已经安装了横河DCS系统CENTUMVP6.07。
如何启动VHDX中的虚拟系统呢?
我们已经看到了VHDX文件里的庐山真面目了:一个虚拟机的系统盘。如何启动这个虚拟机呢?Windows Server 2012系统可以通过Hyper-V管理器来加载这个系统。但是我的系统是Win10,根本就没有Hyper-V管理器。解决方案:如果物理机自启动的时候,能引导到该虚拟机里的系统,直接启动就好了。下面就将该系统的引导文件写入开机自启动菜单中。
这里,我们需要制作一个装有WinPE系统的启动U盘。具体过程可以参见(公众号:汶河之滨)中的文章。
将装有WinPE的启动盘插入计算机USB接口。
重启系统,然后按F12启动boot manager。
本计算机采用的是UEFI BOOT。Windows BOOT Manager为物理机中装有Win10系统的C盘。UEFI:SanDisk Cruzer Edge 1.27 就是装有WinPE系统的启动U盘。选择它。
回车,进入Win10 PE UEFI x64 系统。这里的选项就是开机自启动菜单,如果有多个系统的话,系统就会一一列在这里,我们的目的就是将虚拟机中的系统引导菜单放在物理机那个盘上的自启动菜单。
WinPE:Windows Preinstall Environment。Windows系统预安装环境。系统比较简陋,只有Windows内核,运行在内存中。
以管理员身份运行CMD命令行窗口:
输入diskpart命令
输入 list volume命令
记住当前的磁盘分区状态,下面我们采用第二种方法来加载VHDX文件。目前的VHDX文件还是放在E盘下。
输入命令:(路径根据自己的实际情况来)
select vdisk files=E:\WIN10_LTSB_VP6.07.vhdx
Diskpart 会提示已成功选择虚拟磁盘文件。
输入命令:attach vdisk
Diskpart 提示 已成功连接虚拟磁盘文件。
使用list volume命令看看具体的磁盘加载情况。
可以看到已经成功加载了126GB的编号为“11”的磁盘分区H。
下面我们将H盘的盘符强制修改为V。(非必须操作,只是方便我们理解)。
通过以下命令:
list volume
select volume 11
assign letter=V
输入exit命令退出diskpart工具。然后我们将V盘中虚拟机的启动条目添加到物理机系统分区EFI盘中的启动菜单中。
输入命令:
V:
cd V:\windows\system32
bcdboot V:\windows /s M: /f UEFI
注意,bcdboot是位于V盘(虚拟机系统启动盘)Windows文件夹下面的System32文件夹里的一个工具。该工具将自己的这个虚拟系统添加到物理机系统分区盘M中,从而在开机启动菜单中添加启动项。这个命令注意空格,最后的UEFI是根据自己系统而定的,如果不把握可以不用该参数。(上面的命令目标盘是M盘而不是C盘,C盘中不包含EFI文件夹。用来引导C盘的文件是放在该物理磁盘中的EFI系统分区盘中,在列表中就是100M的M盘)。Bcdboot命令其实就是把EFI文件夹拷贝到系统分区盘中。
关闭WinPE系统,拔掉刚刚插入的U盘。重启物理计算机。
第一次重启带有虚拟机的物理机时,会比较慢要耐心等待或者多重启几遍。开机启动,第一个Win10就是VHDX中的虚拟系统;第二个Win10就是物理机的系统。
分别打开两个系统,都是可以正常运行的。
下一篇文章我们再介绍一下如何使用WindowServer 2012系统自带的Hyper-V管理器加载管理vhdx中的虚拟机。另外,如何将VHDX中的虚拟机转化为VMWARE下可以支持的格式。
本文链接:https://www.kinber.cn/post/2790.html 转载需授权!
推荐本站淘宝优惠价购买喜欢的宝贝: