天天看点

VM与VPC共存(续)

     VM和VPC是大家熟知的虚拟机软件了。有人喜欢VM,有人喜欢VPC,萝卜白菜,各有所爱。

        VM优点:支持USB设备;虚拟网卡众多,可以模拟多子网环境;显卡驱动要比VPC好,VPC只支持1280*800分辨率以下,我的1366*768无法全屏;VM自带录像功能,可以做视频教学;VM自带snapshot功能,误操作时还可以回滚。

        VM缺点:跑Windows系统确实不如VPC占资源小,速度快。

        VPC优点:跑Windows系统确占资源小,速度快,这恐怕是唯一的亮点了。

        VPC缺点:显卡驱动在1366*768的分辨率下无法完整的全屏,尤其是对linux的图形化支持更是花屏严重;网卡仅仅包含宿主机的物理网卡和虚拟网卡,有时候做多子网环境还得利用loopback网卡,蓝牙网络,无线网卡等。

        所以我一般都是VM和VPC结合使用,做cluster实验时偶尔还用到VS2005。在较早的机器上做实验时,因为机器硬件不支持虚拟化,所以不存在VM和VPC冲突的问题,当我新买了一台I5的本本后,发现VM总是和VPC冲突,并且如果同时打开多个VPC机器,还可能导致物理机蓝屏。

        在网上搜索过相关的问题,大部分的矛头都指向VPC中的一个选项:

<a target="_blank" href="http://blog.51cto.com/attachment/201108/180652562.jpg"></a>

但是我将虚拟化功能Disable之后打开VPC还是会让正在运行的VM出现中断。

        后来,无意中用UltraEdit(记事本也可)打开vmc文件时,仔细看了下里面的代码,代码并不复杂。

&lt;?xml version="1.0" encoding="UTF-16"?&gt;  

&lt;!-- Microsoft Virtual Machine Options and Settings --&gt;  

&lt;preferences&gt;  

    &lt;version type="string"&gt;2.0&lt;/version&gt;  

    &lt;alerts&gt;  

        &lt;notifications&gt;  

            &lt;no_boot_disk type="boolean"&gt;true&lt;/no_boot_disk&gt;  

        &lt;/notifications&gt;  

    &lt;/alerts&gt;  

    &lt;hardware&gt;  

        &lt;memory&gt;  

            &lt;ram_size type="integer"&gt;512&lt;/ram_size&gt;  

        &lt;/memory&gt;  

        &lt;pci_bus&gt;  

            &lt;ethernet_adapter&gt;  

                &lt;controller_count type="integer"&gt;1&lt;/controller_count&gt;  

                &lt;ethernet_controller id="0"&gt;  

                    &lt;virtual_network&gt;  

                        &lt;id type="bytes"&gt;0EB745BD4AB811E081C895FBFEB63705&lt;/id&gt;  

                        &lt;name type="string"&gt;Intel(R) WiFi Link 1000 BGN&lt;/name&gt;  

                    &lt;/virtual_network&gt;  

                    &lt;ethernet_card_address type="bytes"&gt;0003FF40EB61&lt;/ethernet_card_address&gt;  

                &lt;/ethernet_controller&gt;  

            &lt;/ethernet_adapter&gt;  

            &lt;video_adapter&gt;  

                &lt;vram_size type="integer"&gt;8&lt;/vram_size&gt;  

            &lt;/video_adapter&gt;  

            &lt;ide_adapter&gt;  

                &lt;ide_controller id="1"&gt;  

                    &lt;location id="0"&gt;  

                        &lt;drive_type type="integer"&gt;2&lt;/drive_type&gt;  

                        &lt;pathname&gt;  

                            &lt;absolute type="string" /&gt;  

                            &lt;relative type="string" /&gt;  

                        &lt;/pathname&gt;  

                    &lt;/location&gt;  

                &lt;/ide_controller&gt;  

                &lt;ide_controller id="0"&gt;  

                        &lt;drive_type type="integer"&gt;1&lt;/drive_type&gt;  

                            &lt;absolute type="string"&gt;G:\VPC2007\Lab-CHS\WINXP-PRO-SP3\WINXP-PRO-CHS-SP3.vhd&lt;/absolute&gt;  

                            &lt;relative type="string"&gt;.\WINXP-PRO-CHS-SP3.vhd&lt;/relative&gt;  

                        &lt;undo_pathname&gt;  

                            &lt;absolute type="string"&gt;G:\VPC2007\Lab-CHS\WINXP-PRO-SP3\VirtualPCUndo_WINXP-PRO-CHS-SP3_0_0_0_10013408212011.vud&lt;/absolute&gt;  

                            &lt;relative type="string"&gt;.\VirtualPCUndo_WINXP-PRO-CHS-SP3_0_0_0_10013408212011.vud&lt;/relative&gt;  

                        &lt;/undo_pathname&gt;  

            &lt;/ide_adapter&gt;  

        &lt;/pci_bus&gt;  

        &lt;standard&gt;  

            &lt;name type="string"&gt;Virtual PC 2007&lt;/name&gt;  

            &lt;version type="string"&gt;0001.0000.0000&lt;/version&gt;  

        &lt;/standard&gt;  

        &lt;super_io&gt;  

            &lt;floppy id="0"&gt;  

                &lt;pathname&gt;  

                    &lt;absolute type="string" /&gt;  

                    &lt;relative type="string" /&gt;  

                &lt;/pathname&gt;  

            &lt;/floppy&gt;  

            &lt;floppy&gt;  

                &lt;auto_detect type="boolean"&gt;true&lt;/auto_detect&gt;  

            &lt;parallel_port&gt;  

                &lt;port_shared type="boolean"&gt;false&lt;/port_shared&gt;  

                &lt;port_type type="integer"&gt;0&lt;/port_type&gt;  

            &lt;/parallel_port&gt;  

            &lt;serial_port&gt;  

                &lt;connect_immediately type="boolean"&gt;false&lt;/connect_immediately&gt;  

            &lt;/serial_port&gt;  

        &lt;/super_io&gt;  

        &lt;bios&gt;  

            &lt;base_board&gt;  

                &lt;serial_number type="string"&gt;5284-0211-5760-6543-5348-2456-30&lt;/serial_number&gt;  

            &lt;/base_board&gt;  

            &lt;bios_guid type="string"&gt;{D30B7F05-B995-44E6-A333-64507F56B2AB}&lt;/bios_guid&gt;  

            &lt;bios_serial_number type="string"&gt;5284-0211-5760-6543-5348-2456-30&lt;/bios_serial_number&gt;  

            &lt;chassis&gt;  

                &lt;asset_tag type="string"&gt;5284-0211-5760-6543-5348-2456-30&lt;/asset_tag&gt;  

            &lt;/chassis&gt;  

            &lt;cmos type="bytes"&gt;00004000F020378002FFFF2F00FF3F1000003FFF3F1000003F31004C0707070707E9FFFF208580FF01000000200C01800CFC00000000000000000000000000901A32E252580050E999E62401002784004A2080240000000000085AACFE1032547698BAE400000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000&lt;/cmos&gt;  

            &lt;time_bytes type="bytes"&gt;11003900170000210811&lt;/time_bytes&gt;  

        &lt;/bios&gt;  

    &lt;/hardware&gt;  

    &lt;integration&gt;  

        &lt;microsoft&gt;  

            &lt;mouse&gt;  

                &lt;allow type="boolean"&gt;true&lt;/allow&gt;  

            &lt;/mouse&gt;  

            &lt;video&gt;  

                &lt;user_selected&gt;  

                    &lt;depth type="integer"&gt;16&lt;/depth&gt;  

                    &lt;height type="integer"&gt;480&lt;/height&gt;  

                    &lt;width type="integer"&gt;640&lt;/width&gt;  

                &lt;/user_selected&gt;  

            &lt;/video&gt;  

        &lt;/microsoft&gt;  

    &lt;/integration&gt;  

    &lt;properties&gt;  

        &lt;creator&gt;  

            &lt;build type="string"&gt;6.0.156.0&lt;/build&gt;  

            &lt;name type="string"&gt;Microsoft Virtual PC 2007&lt;/name&gt;  

        &lt;/creator&gt;  

        &lt;modifier&gt;  

            &lt;build type="string"&gt;6.0.192.0&lt;/build&gt;  

        &lt;/modifier&gt;  

    &lt;/properties&gt;  

    &lt;settings&gt;  

        &lt;shutdown&gt;  

            &lt;prompt type="boolean"&gt;true&lt;/prompt&gt;  

            &lt;quit&gt;  

                &lt;action type="integer"&gt;4&lt;/action&gt;  

                &lt;was_running type="boolean"&gt;true&lt;/was_running&gt;  

            &lt;/quit&gt;  

            &lt;save&gt;  

                &lt;enable type="boolean"&gt;true&lt;/enable&gt;  

            &lt;/save&gt;  

            &lt;shutdown&gt;  

            &lt;/shutdown&gt;  

            &lt;turn_off&gt;  

            &lt;/turn_off&gt;  

            &lt;last_shutdown&gt;  

                &lt;choice type="integer"&gt;3&lt;/choice&gt;  

                &lt;commit type="boolean"&gt;false&lt;/commit&gt;  

            &lt;/last_shutdown&gt;  

        &lt;/shutdown&gt;  

        &lt;sound&gt;  

            &lt;sound_adapter&gt;  

            &lt;/sound_adapter&gt;  

        &lt;/sound&gt;  

        &lt;startup&gt;  

            &lt;automatic&gt;  

                &lt;type type="integer"&gt;2&lt;/type&gt;  

            &lt;/automatic&gt;  

        &lt;/startup&gt;  

        &lt;undo_drives&gt;  

            &lt;enabled type="boolean"&gt;true&lt;/enabled&gt;  

            &lt;purposely_kept type="boolean"&gt;false&lt;/purposely_kept&gt;  

            &lt;use_default type="boolean"&gt;true&lt;/use_default&gt;  

        &lt;/undo_drives&gt;  

        &lt;video&gt;  

            &lt;disable_resize type="boolean"&gt;false&lt;/disable_resize&gt;  

            &lt;full_screen type="boolean"&gt;false&lt;/full_screen&gt;  

            &lt;mode&gt;  

                &lt;full_screen&gt;  

                    &lt;startup type="boolean"&gt;false&lt;/startup&gt;  

                &lt;/full_screen&gt;  

            &lt;/mode&gt;  

            &lt;resolutions&gt;  

                &lt;standard_only type="boolean"&gt;false&lt;/standard_only&gt;  

            &lt;/resolutions&gt;  

            &lt;height type="integer"&gt;600&lt;/height&gt;  

            &lt;left_position type="integer"&gt;151&lt;/left_position&gt;  

            &lt;max_height type="integer"&gt;600&lt;/max_height&gt;  

            &lt;max_width type="integer"&gt;800&lt;/max_width&gt;  

            &lt;top_position type="integer"&gt;62&lt;/top_position&gt;  

            &lt;width type="integer"&gt;800&lt;/width&gt;  

        &lt;/video&gt;  

        &lt;guest_os type="integer"&gt;3&lt;/guest_os&gt;  

    &lt;/settings&gt;  

    &lt;virtual_machines&gt;  

        &lt;hw_assist&gt;  

            &lt;enable_hw_assist type="boolean"&gt;true&lt;/enable_hw_assist&gt;  

        &lt;/hw_assist&gt;  

        &lt;allow_packet_filtering type="boolean"&gt;false&lt;/allow_packet_filtering&gt;  

        &lt;allow_promiscuous_mode type="boolean"&gt;false&lt;/allow_promiscuous_mode&gt;  

    &lt;/virtual_machines&gt;  

&lt;/preferences&gt; 

171.  &lt;enable_hw_assist type="boolean"&gt;true&lt;/enable_hw_assist&gt;

大家看上面170-172行代码,原来这台虚拟机一启动就默认打开虚拟化开关,即使关闭了控制台的虚拟化开关也是没用的。将此项设置为false后,VPC再也没有和VM冲突了。

 &lt;enable_hw_assist type="boolean"&gt;false&lt;/enable_hw_assist&gt;

根本原因是宿主机(物理机)不像WIN2008安装有hypervisor去调控虚拟化的硬件资源,所以如果虚拟机打开虚拟化开关会造成硬件资源争夺的情况,严重时造成物理机蓝屏。

至此VM与VPC冲突问题从根本上得到解决。

本文转自yangye1985 51CTO博客,原文链接:http://blog.51cto.com/yangye/645652,如需转载请自行联系原作者

继续阅读