CentOS7.2上用KVM安裝虛擬機windows10踩過的坑


最近兩個星期一直在琢磨kvm安裝window10操作系統,並且通過橋接模式與外界通信,經歷了九九八十一難,終於搞定。下面就記錄以下我們在探索的過程中踩過的坑。

安裝KVM

前期准備,首先需要配置好網卡

[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

 這里需要根據自己的實際情況進行配置

 

1.

系統要求:需要一台可以運行最新linux內核的intel處理器(含VT虛擬化技術)或者AMD處理器(含SVM安全虛擬化技術的AMD處理器,也可以叫AMD-V)。(如果沒有配置可以在BIOS中進行配置)

使用命令進行檢查:

[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

......

  一般都會有大量輸出,代表系統中是支持的。

 

2.

安裝kvm所需的各種依賴包

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模塊處理

提示: 如果modprobing  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,開始創建虛擬機

  • window10虛擬機
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
  • CentOS6虛擬機
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橋接還不能很好的支持

 

如果你也遇到類似的問題,歡迎留言,我們一起探討!

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM