VMware下的Centos7實踐Kvm虛擬化(通俗易懂)
雖然網上已經有很多關於kvm安裝的教程了,但我還是看得頭暈,有的教程裡安裝的包很多,有的很少,也沒說明那些安裝包的作用是幹嘛的,用的命令也不一樣,也沒解釋命令的意思是什麼。
我重新寫一個教程,儘量通俗易懂點,也是給增強我的記憶。
這裡提示下,Hyper-v就是一個大坑!本來我是用Hyper-v來學習這個Kvm虛擬化的,我建立的宿主虛擬機器可以連外網,宿主機裡建立的kvm虛擬機器是用橋接網路,但無論怎樣設定都連線不了外網,kvm的虛擬機器可以ping得通宿主機,宿主機也能ping得通kvm的虛擬機器,宿主機可以ping得通外網,但就是kvm的虛擬機器ping不通外網,但害我查了一整天,後面無奈用回VMware後,網路全都正常。
而且用Hyper-v,明顯我的電腦記憶體佔好多,每次啟動,還要等半天的什麼合併檢查點,還不能連線U盤。
準備工作:一臺能上網的Centos7虛擬機器,VncViewer(這是在window執行的,到時可以連線虛擬機器),XShell(遠端ssh工具),XFtp(上傳安裝包)
VncViewer下載地址:https://www.realvnc.com/en/connect/download/viewer/
XShell、XFtp下載地址:https://www.netsarang.com/zh/free-for-home-school/
主要步驟:
- 開啟巢狀虛擬功能(如果你不是用虛擬機器的話,這步就不用)
- 安裝kvm工具包
- 設定橋接網絡卡(如果是用Nat的,這步不用)
- 建立第一個kvm虛擬機器(安裝方式分控制檯安裝及遠端圖形化安裝)
1、開啟巢狀虛擬功能
一開始我是在hyper-v的虛擬機器上安裝的,hyper-v比vmware麻煩點,得用以下命令操作
#以下命令不區分大小寫 Get-VM #獲取全部虛擬機器 Get-VMProcessor -VMName xxx | fl #檢視虛擬機器屬性,ExposeVirtualizationExtensions屬性代表是否開啟巢狀虛擬化 Set-VMProcessor -ExposeVirtualizationExtensions $true -VMName xxx #開啟巢狀虛擬化,得先把虛擬機器關機,不然會出錯
後面改用VMware就簡單多了,如下圖,把紅圈裡兩個複選框勾上就行了,虛擬機器得先關機才能修改
開啟虛擬機器,輸入以下命令,檢視是否支援虛擬化,如果沒上面的操作是肯定沒有的
cat /proc/cpuinfo | egrep "vmx|svm"
2、安裝kvm工具包
我看網上好多教程安裝的包很多,但又沒說明各個包是幹什麼的,原諒我有點強迫症,我必須得了解每個包作用到底是幹什麼的
但經我測試後,最終發現只需安裝三個包,分別是libvirt、qemu-kvm、virt-install(網上寫的一些其它的包,如libvirt-python、libvirt-client、qemu-img,其實在安裝這3個包時也會順帶安裝了)。
我的理解:kvm只是linux一個功能,但linux沒有提供任何方便我們去使用它的命令,所以需要安裝一些工具,而libvirt、qemu-kvm、virt-install都是工具包,qemu-kvm提供一些qemu開頭的命令(這個不安裝會提供錯誤主機不支援任意虛擬化選項),libvirt提供一個服務(libvirtd)和其它virsh管理命令,virt-install提供安裝管理虛擬機器的命令
yum -y install qemu-kvm libvirt virt-install
因為我的是命令列管理,不在虛擬機器上用圖形化管理,所以只需這三個包,因為要在虛擬機器上圖形管理,還得安裝個XWindows,我覺得生產環境應該也沒人去裝個圖形管理。
還有一個包bridge-utils,這是用來管理橋接網絡卡的,這個我裝libvirt包時也順帶裝了,如果你的沒包裝,就安裝一下
yum -y install bridge-untils
3、設定橋接網絡卡
經常玩虛擬機器的都知道有兩種試,一種是Nat,一種是橋接,
Nat就好比宿主機(就是安裝kvm虛擬化的主機)是臺路由器,虛擬機器是連線路由器下面的電腦,跟宿主機同個網段的電腦是訪問不了虛擬機器的,要訪問的話,就得在宿主機上設定埠對映。
而橋接就是把宿主機的物理網絡卡當做一個交換機,虛擬機器直接連線交換機,那就跟宿主機是同一個網段的了,可以被其它電腦訪問到,一般做服務虛擬化都是用橋接模式。
先切換到網絡卡目錄,然後把原來的網絡卡檔案複製一份,名稱為ifcfg-br0,命令如下
cd /etc/sysconfig/network-scripts cp ifcfg-ens33 ifcfg-br0 #你的不一定是ifcfg-ens33,我開始用hyper-v時,介面是叫eth0
然後修改ifcfg-br0的配置,如下
修改ifcfg-ens33,主要是新增加一行,如下所示,如果你的本來是靜態IP的話,就把靜態IP的配置註釋掉,只保留在br0就行了
然後重啟下網路服務
systemctl restart NetworkManager systemctl restart network
然後檢視下網橋介面
brctl show
這個圖是我在後面補的,紅圈的是在啟動虛擬機器後才有的,你如果按部落格順序的話,現在應該是看不到這個紅圈的vnet0的,等你把虛擬機器啟動後,再檢視就看到這個vnet0,這表示vnet0也撟接在br0下面
4、建立第一個kvm虛擬機器
這個就需要用到之前安裝的包virt-install了,我先把命令主要引數列出來
#virt-install引數 --name=xxx #虛擬機器唯一名稱 --memory=1024[,maxmemory=2048] #虛擬機器記憶體,單位為mb --memory=1024,maxmemory=2048 --vcpus=1[,maxvcpus=4] #虛擬機器CPU數量 --cdrom=/xxx/xxx #指定安裝原始檔 --location=/xxx/xxx #指定安裝原始檔,跟--cdrom二選一,如果要用控制檯安裝得用這個,配合--extra-args引數 --disk path=/xx/xxx[,size=10,format=raw] #儲存檔案及格式 --graphics vnc,port=xxx,listen=xxx #圖形化引數,不用圖形化用--graphics none --extra-args="console=ttyS0" --network bridge=br0 #網路連線方式 --os-variant=xxx #對應的系統值,可以osinfo-query os這個查對應值 --virt-type=kvm #虛擬機器型別 --noautoconsole #不自動連線,預設是安裝時用virt-viewer或者virsh console去連線虛擬機器
把管理虛擬機器的命令也寫一下
virsh list --all #檢視所有虛擬機器,加all列出關機狀態的 virsh console xxx #以控制元件臺連線到指定虛擬機器 virsh start xxx #啟動虛擬機器 virsh shutdown xxx #關閉虛擬機器,一般關不了 virsh destroy xxx #強制關閉虛擬機器 virsh autostart xxx #設定虛擬機器隨機啟動 virsh undefine xxx #刪除虛擬機器,只會刪除對應的xml,硬碟檔案不會刪除 virsh autostart xxx #設定虛擬機器自動啟動
4.1、利用VncViewer遠端圖形化安裝的方式
virt-install主要引數--graphics vnc,port=5901,listen=xxx
原理就是用virt-install命令安裝時,在宿主機上開啟一個vnc埠5901,然後用VncViewer程式連線宿主機的5901埠,跟平時圖形化安裝一樣了。
推薦用Xshell連線,因為可以方便地複製命令,再裝個XFtp上傳iso檔案到/data/iso目錄裡
建立所需目錄
mkdir -p /data/iso /data/vm
把安裝檔案上傳到/data/iso後,用Xshell連線後,複製以下命令,回車(以下命令的斜槓,只是為了好看分行,不是必要的)
virt-install --name=c7 \ --memory=1024 --vcpus=1 \ --cdrom=/data/iso/CentOS-7-x86_64-Minimal-1810.iso \ --disk path=/data/vm/c7.qcow2,size=10,format=qcow2 \ --network bridge=br0 --virt-type=kvm --os-variant=centos7.0 \ --graphics vnc,listen=0.0.0.0,port=5900 \ --noautoconsole
看到以上提示,就可以用VncViewer來連線了,對了,得先把防火牆服務給關了
systemctl stop firewalld #關閉防火牆服務 systemctl --zone=public --add-ports=5900/tcp --permanent #或者用這個開放5900埠
在vncViewer上輸入ip跟埠號
然後就可以圖形化安裝了,非常方便。
4.2、用控制檯安裝的方式
virt-install主要引數--location跟--extra-args配合,不用--cdrom引數,複製以下命令,回車
virt-install \ --name=c7-2 \ --memory=1024 \ --vcpus=1 \ --location=/data/iso/CentOS-7-x86_64-Minimal-1810.iso \ --disk path=/data/vm/c7-2.qcow2,size=5,format=qcow2 \ --network bridge=br0 \ --virt-type=kvm \ --os-variant=centos7.0 \ --graphics none \ --extra-args 'console=ttyS0'
接著就會進入控制檯安裝介面,如下圖所示
可能還有些人沒在控制檯安裝過centos7,那我簡單說下
觀察這個,這些可以對應我上面的那個圖形化安裝的圖,注意紅圈,打X的就是已經設定好了,!的代表還沒設定,需要進行配置,輸入q退出安裝,輸入b開始安裝,輸入r重新整理
- 語言設定
- 時區設定
- 安裝源
- 軟體選擇
- 安裝位置
- Kdump
- 網路配置
- Root密碼
- 使用者設定
那我們需要對那些!的配置項進行設定,或者修改原來設定,先修改第1項,語言設定,輸入1回車,會顯示下圖,找到我們的中文,輸入68,回車
然後輸入1,簡體中文,回車
會回到主介面,你會看到第1項已經變了,變成簡體中文了
再配置時區,輸入2,回車,然後輸入1(Set timezone),然後輸入2(Asia亞洲),然後輸入64(Shanhai上海)
回到主介面,發現第2項已改變了
接著再設定安裝位置,輸入5,回車,如下圖,看到硬碟前面已經是X,說明已經選擇了,直接輸入c繼續就好了
這裡不太懂,我預設,輸入c繼續
還是保持預設LVM,輸入c繼續
會回到主介面,發現安裝位置也改變了,那最後來設定下Root密碼,輸入8,回車
重複輸入兩次root密碼
回到主介面,發現沒有!號了,那輸入b就可以進行安裝了,你會發現其實控制檯安裝跟圖形化安裝也是差不多的。
安裝好後啟用下網絡卡,就可以正常連線外網的,我一開始是用Hyper-v,導致虛擬機器一直連不了外網,以為哪裡配置不對,用回VMware後就一切正