WinPE修复Winodws虚拟机
WinPE引导,修复Windows虚拟机
问题描述:
Windows2008 Serve虚拟机进入恢复模式,无法正常进入系统,重启多次依然如此,进入死循环状态,如下图:
采用Windows PE系统挂载到有问题的虚拟机,采用PE内置的修复工具,修复引导系统。这里需要一个带有系统修复工具的PE 镜像,目前大多数PE系统不带有虚拟化Virtio驱动,虽然可以正常引导进入PE系统,但启动后无法识别到系统磁盘和数据盘。于是找到了一个带有Virtio驱动的PE镜像。当然了,也可以自己去集成Virtio驱动,这会比较费事。
PE镜像:WinPE_virtio.iso
开始修复:
1、iso文件上传到虚拟机所在的计算节点并转换iso为raw格式。
dd if=/tmp/WinPE_virtio.iso of=/dev/PE2008Serveriso
2、备份虚拟机配置文件并关闭虚拟机。
#查看虚拟机
virsh list --all
#导出虚拟机xml
virsh dumlxml instance-00000766 > instance-00000766.xml
#备份xml配置文件
cp -a instance-00000766.xml instance-00000766.xml.bak
#关闭虚拟机
virsh destroy instance-00000766
3、修改虚拟机配置instacnce-00000766.xml,添加配置,<devices><devices/>字段之间加入,红色部分配置。
注意:<source dev=’/dev/PE2008Serveriso’> 修改为实际镜像的地址。
##删除<boot dev='hd'/>
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
<boot dev='hd'/>
<boot dev='cdrom'/>
</os>
……此处省略一万字!!!
<devices>
<emulator>/usr/bin/qemu-kvm</emulator>
##下面为新增内容
<disk type='block' device='cdrom'>
<driver name='qemu' type='raw'/>
<source dev='/dev/PE2008Serveriso'/>
<target dev='hda' bus='ide'/>
<readonly/>
<boot order='1'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
4、设置虚拟机状态,修改表nova.instances中power_state,vm_state这两个字段的值。
避免虚通过virsh启动后,虚拟机状态不同步,被nova强制关闭。
mysql> select power_state,vm_state from instances where
uuid='6caa827e-2fbe-4796-bbc1-233f5ab24c34';
+-------------+----------+
| power_state | vm_state |
+-------------+----------+
| 4 | stopped |
+-------------+----------+
1 row in set (0.00 sec)
mysql> update instances set power_state=1,vm_state='active' where uuid='6caa827e-2fbe-4796-bbc1-233f5ab24c34';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
5、开启启动虚拟机。
#导入虚拟机配置
virsh define instance-00000766.xml
#启动虚拟机
virsh start instance-00000766
6、获取虚拟机VNC地址,通过VNC进入虚拟机。
nova get-vnc-console 6caa827e-2fbe-4796-bbc1-233f5ab24c34 novnc
7、在PE系统中,使用PE自带的修复工具,对操作系统进行修复,修复完成后关闭系统
如果无法正常进入PE系统,请仔细检查xml配置文件,然后重新执行3-6步骤。
8、硬重启虚拟机,一般情况下就能正常进入系统了。
nova reboot 6caa827e-2fbe-4796-bbc1-233f5ab24c34 --hard
修复成功: