天天看點

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,如需轉載請自行聯系原作者

繼續閱讀