最近兩個星期一直在琢磨kvm安裝window10操做系統,而且經過橋接模式與外界通訊,經歷了九九八十一難,終於搞定。下面就記錄如下咱們在探索的過程當中踩過的坑。php
前期準備,首先須要配置好網卡python
[root@SH-DMZ-03 network-scripts]# egrep -v '^#|^$' ifcfg-em1 DEVICE=em1 HWADDR=d4:be:d9:b0:13:df TYPE=Ethernet UUID=4398f8a3-e10d-4674-9533-44ae1da13fdd ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static BRIDGE=br0 [root@SH-DMZ-03 network-scripts]# egrep -v '^#|^$' ifcfg-br0 DEVICE=br0 TYPE=Bridge ONBOOT=yes BOOTPROTO=static IPADDR=192.168.0.11 PREFIX=24 GATEWAY=192.168.0.1
這裏須要根據本身的實際狀況進行配置linux
1.es6
系統要求:須要一臺能夠運行最新linux內核的intel處理器(含VT虛擬化技術)或者AMD處理器(含SVM安全虛擬化技術的AMD處理器,也能夠叫AMD-V)。(若是沒有配置能夠在BIOS中進行配置)windows
使用命令進行檢查:centos
[root@corehadoop31 ~]# cat /proc/cpuinfo |egrep "vmx|svm" flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt ......
通常都會有大量輸出,表明系統中是支持的。api
2.安全
安裝kvm所需的各類依賴包bash
yum -y install qemu-kvm kvm yum -y install virt-manager python-virtinst qemu-kvm-tools # 安裝KVM的管理工具 yum -y install libvirt libvirt-python libguestfs-tools bridge-utils virt-viewer virt-2v
缺什麼包就安裝什麼包,搭建一個本地的yum倉庫,以便一鍵解決各類依賴。服務器
3.
肯定是否正確加載kvm模塊
[root@corehadoop31 ~]# lsmod |grep kvm kvm_intel 170181 3 kvm 554609 1 kvm_intel irqbypass 13503 1 kvm
表示已經正確加載
注意:
若是該命令什麼都不返回,則須要手動加載模塊,參見內核模塊#Manual模塊處理。
kvm_intel
或
kvm_amd
失敗但modprobing
kvm
成功,並
lscpu
聲稱支持硬件加速,請檢查BIOS設置。某些供應商,尤爲是筆記本電腦供應商,默認禁用這些處 要肯定是否沒有硬件支持或者是否在BIOS中禁用了擴展,那麼
dmesg
在沒法使用modprobe以後的輸出將告訴您。
1,建立磁盤並檢查是否成功建立
qemu-img create -f raw /opt/kvm.raw 10G # 注意類型爲raw,10G容量其實沒有意義 [root@corehadoop opt]# qemu-img info /opt/kvm.raw image: /opt/kvm.raw file format: raw virtual size: 10G (10737418240 bytes) disk size: 0
證實已經成功建立!注意在生產環境通常採用 qcow2格式,由於這個格式的硬盤是動態擴容的。
qemu-img create -f qcow2 vdisk.img 10G
2,拷貝鏡像
dd if=/dev/cdrom of=/opt/CentOS-6.5-x86_64-bin-DVD1.iso dd if=/dev/cdrom of=/opt/cn_windows_10_enterprise_x64_dvd_6846957.iso
注意這裏若是是window10要用window10的鏡像,若是要裝CentOS6就要用CentOS6的鏡像。咱們線上已經存在鏡像,所以此步能夠省略。
3,啓動libvirt進程。
Libvirt是管理虛擬機和其餘虛擬化功能,好比存儲管理,網絡管理的軟件集合。它包括一個API庫,一個守護程序(libvirtd)和一個命令行工具(virsh);libvirt自己構建於一種抽象的概念之上。它爲受支持的虛擬機監控程序實現的經常使用功能提供通用的API。這個進程說直白了就是管理虛擬機的,所以必須啓動,不然沒法安裝。
systemctl restart libvirtd
4,開始建立虛擬機
virt-install --virt-type kvm --name window10 --ram 2048 --cdrom=/opt/cn_windows_10_enterprise_x64_dvd_6846957.iso --boot cdrom --cpu core2duo --network bridge=br0,model='e1000' --graphics vnc,listen=0.0.0.0 --disk path=/opt/kvm.raw,bus='ide' --noautoconsole --os-type=windows
virt-install --virt-type kvm --name kvm-demo --ram 512 --cdrom=/opt/CentOS-6.5-x86_64-bin-DVD1.iso --boot cdrom --network bridge=br0 --graphics vnc,listen=0.0.0.0 --disk path=/opt/kvm.raw --noautoconsole --os-type=linux
注意:必定要了解這麼一大行安裝虛擬機命令,根據本身狀況進行調整。
virt-install --virt-type kvm # 指定安裝的類型不管是centos和window都同樣 --name window10 # 指定安裝的虛擬機名稱,只要便於識別就好 --ram 2048 # 指定分配給虛擬機的內存大小 --cdrom=/opt/cn_windows_10_enterprise_x64_dvd_6846957.iso # 指定安裝須要鏡像的路徑 --boot cdrom # 指出從哪裏進行啓動,這裏指定從硬盤進行啓動 --cpu core2duo # 指定所需的cpu型號,這個須要根據本身的物理機的CPU型號來進行調整。 --network bridge=br0,model='e1000' # 網絡的鏈接模式,注意安裝虛擬機的前提是必須配置好br0橋接的模式,不然沒法安裝。網卡類型選擇千兆虛擬網卡 --graphics vnc,listen=0.0.0.0 # 設置vnc,默認端口5900 --disk path=/opt/kvm.raw,bus='ide' # 指定硬盤位置,硬盤類型爲IDE --noautoconsole --os-type=windows
若是是window就會卡住,此時須要用VNC,鏈接上。咱們線上在其餘機器上安裝的有window-server,因此輸入:IP地址,默認爲5900端口便可鏈接上進行安裝。安裝完成以後,任務並無結束,還須要能使window和外界的進行通訊,若是你也像我同樣配置好br0橋接模式就能夠進行通訊了。下面來談如下咱們遇到的坑,首先說同樣咱們線上的雙網卡使用的team模式,當配置好了橋接以後,window虛擬機能夠和咱們的宿主機的業務網卡進行通訊,可是沒法和其餘的主機的業務網卡進行通訊,折騰了兩天,有安裝了centos6的虛擬機也發現有相似的問題。後來經過轉包發現,window虛擬機的網卡和本機的網卡能夠進行通訊,arp能夠正常響應,可是和其餘區主機沒法進行arp的響應。後來咱們懷疑是因爲team模式的雙網卡形成的,果真後來配置bond的雙網卡就解決這個問題。可是發現配置bond0模式起不來,提早說明一下咱們有四塊網卡,兩塊管理的網卡作的是team模式的主備模式,業務的兩塊網卡作的bond的負載均衡(mode=6)的模式。後來關閉了NetworkManager服務以後bond就起來了,可是team模式嚴重的依賴NetworkManager服務。後這天服務器直接全部的網卡所有作成了bond模式就解決了,得出瞭如下幾點經驗。
1,安裝虛擬時,建議在那臺物理機上裝上桌面,而後再裝上(yum install tigervnc-server),在本地vnc去鏈接,ip:1 (此時默認的端口爲1) , 而後以圖像界面的方式進行安裝kvm虛擬機的安裝,好處是能夠在虛擬機安裝時進行動態的調整和嘗試。
2,kvm虛擬機的橋接模式目前還不支持team模式,雖然team模式是紅帽新推出的模式,是將來,可是目前kvm橋接還不能很好的支持
若是你也遇到相似的問題,歡迎留言,咱們一塊兒探討!