雖然網(wǎng)上已經(jīng)有很多關(guān)于kvm安裝的教程了,但我還是看得頭暈,有的教程里安裝的包很多,有的很少,也沒說明那些安裝包的作用是干嘛的,用的命令也不一樣,也沒解釋命令的意思是什么。
?我重新寫一個(gè)教程,盡量通俗易懂點(diǎn),也是給增強(qiáng)我的記憶。
這里提示下,Hyper-v就是一個(gè)大坑!本來我是用Hyper-v來學(xué)習(xí)這個(gè)Kvm虛擬化的,我創(chuàng)建的宿主虛擬機(jī)可以連外網(wǎng),宿主機(jī)里創(chuàng)建的kvm虛擬機(jī)是用橋接網(wǎng)絡(luò),但無論怎樣設(shè)置都連接不了外網(wǎng),kvm的虛擬機(jī)可以ping得通宿主機(jī),宿主機(jī)也能ping得通kvm的虛擬機(jī),宿主機(jī)可以ping得通外網(wǎng),但就是kvm的虛擬機(jī)ping不通外網(wǎng),但害我查了一整天,后面無奈用回VMware后,網(wǎng)絡(luò)全都正常。
而且用Hyper-v,明顯我的電腦內(nèi)存占好多,每次啟動(dòng),還要等半天的什么合并檢查點(diǎn),還不能連接U盤。
?
準(zhǔn)備工作:一臺(tái)能上網(wǎng)的Centos7虛擬機(jī),VncViewer(這是在window運(yùn)行的,到時(shí)可以連接虛擬機(jī)),XShell(遠(yuǎn)程ssh工具),XFtp(上傳安裝包)
VncViewer下載地址:https://www.realvnc.com/en/connect/download/viewer/
XShell、XFtp下載地址:https://www.netsarang.com/zh/free-for-home-school/
主要步驟:
?
?
一開始我是在hyper-v的虛擬機(jī)上安裝的,hyper-v比vmware麻煩點(diǎn),得用以下命令操作
#以下命令不區(qū)分大小寫Get-VM #獲取全部虛擬機(jī)Get-VMProcessor -VMName xxx | fl #查看虛擬機(jī)屬性,ExposeVirtualizationExtensions屬性代表是否開啟嵌套虛擬化Set-VMProcessor -ExposeVirtualizationExtensions $true -VMName xxx #開啟嵌套虛擬化,得先把虛擬機(jī)關(guān)機(jī),不然會(huì)出錯(cuò)
?
?
后面改用VMware就簡(jiǎn)單多了,如下圖,把紅圈里兩個(gè)復(fù)選框勾上就行了,虛擬機(jī)得先關(guān)機(jī)才能修改
?
?打開虛擬機(jī),輸入以下命令,查看是否支持虛擬化,如果沒上面的操作是肯定沒有的
cat /proc/cpuinfo | egrep "vmx|svm"
?
?
我看網(wǎng)上好多教程安裝的包很多,但又沒說明各個(gè)包是干什么的,原諒我有點(diǎn)強(qiáng)迫癥,我必須得了解每個(gè)包作用到底是干什么的
但經(jīng)我測(cè)試后,最終發(fā)現(xiàn)只需安裝三個(gè)包,分別是libvirt、qemu-kvm、virt-install(網(wǎng)上寫的一些其它的包,如libvirt-python、libvirt-client、qemu-img,其實(shí)在安裝這3個(gè)包時(shí)也會(huì)順帶安裝了)。
我的理解:kvm只是linux一個(gè)功能,但linux沒有提供任何方便我們?nèi)ナ褂盟拿?,所以需要安裝一些工具,而libvirt、qemu-kvm、virt-install都是工具包,qemu-kvm提供一些qemu開頭的命令(這個(gè)不安裝會(huì)提供錯(cuò)誤主機(jī)不支持任意虛擬化選項(xiàng)),libvirt提供一個(gè)服務(wù)(libvirtd)和其它virsh管理命令,virt-install提供安裝管理虛擬機(jī)的命令
yum -y install qemu-kvm libvirt virt-install
因?yàn)槲业氖敲钚泄芾?,不在虛擬機(jī)上用圖形化管理,所以只需這三個(gè)包,因?yàn)橐谔摂M機(jī)上圖形管理,還得安裝個(gè)XWindows,我覺得生產(chǎn)環(huán)境應(yīng)該也沒人去裝個(gè)圖形管理。
?
還有一個(gè)包bridge-utils,這是用來管理橋接網(wǎng)卡的,這個(gè)我裝libvirt包時(shí)也順帶裝了,如果你的沒包裝,就安裝一下
yum -y install bridge-untils
?
?
?經(jīng)常玩虛擬機(jī)的都知道有兩種試,一種是Nat,一種是橋接,
Nat就好比宿主機(jī)(就是安裝kvm虛擬化的主機(jī))是臺(tái)路由器,虛擬機(jī)是連接路由器下面的電腦,跟宿主機(jī)同個(gè)網(wǎng)段的電腦是訪問不了虛擬機(jī)的,要訪問的話,就得在宿主機(jī)上設(shè)置端口映射。
而橋接就是把宿主機(jī)的物理網(wǎng)卡當(dāng)做一個(gè)交換機(jī),虛擬機(jī)直接連接交換機(jī),那就跟宿主機(jī)是同一個(gè)網(wǎng)段的了,可以被其它電腦訪問到,一般做服務(wù)虛擬化都是用橋接模式。
?先切換到網(wǎng)卡目錄,然后把原來的網(wǎng)卡文件復(fù)制一份,名稱為ifcfg-br0,命令如下
cd /etc/sysconfig/network-scriptscp ifcfg-ens33 ifcfg-br0 #你的不一定是ifcfg-ens33,我開始用hyper-v時(shí),接口是叫eth0
然后修改ifcfg-br0的配置,如下
?
修改ifcfg-ens33,主要是新增加一行,如下所示,如果你的本來是靜態(tài)IP的話,就把靜態(tài)IP的配置注釋掉,只保留在br0就行了
然后重啟下網(wǎng)絡(luò)服務(wù)
systemctl restart NetworkManagersystemctl restart network
?然后查看下網(wǎng)橋接口
brctl show
這個(gè)圖是我在后面補(bǔ)的,紅圈的是在啟動(dòng)虛擬機(jī)后才有的,你如果按博客順序的話,現(xiàn)在應(yīng)該是看不到這個(gè)紅圈的vnet0的,等你把虛擬機(jī)啟動(dòng)后,再查看就看到這個(gè)vnet0,這表示vnet0也撟接在br0下面
?
?
?這個(gè)就需要用到之前安裝的包virt-install了,我先把命令主要參數(shù)列出來
#virt-install參數(shù)--name=xxx #虛擬機(jī)唯一名稱--memory=1024[,maxmemory=2048] #虛擬機(jī)內(nèi)存,單位為mb --memory=1024,maxmemory=2048--vcpus=1[,maxvcpus=4] #虛擬機(jī)CPU數(shù)量--cdrom=/xxx/xxx #指定安裝源文件--location=/xxx/xxx #指定安裝源文件,跟--cdrom二選一,如果要用控制臺(tái)安裝得用這個(gè),配合--extra-args參數(shù)--disk path=/xx/xxx[,size=10,format=raw] #存儲(chǔ)文件及格式--graphics vnc,port=xxx,listen=xxx #圖形化參數(shù),不用圖形化用--graphics none --extra-args="console=ttyS0"--network bridge=br0 #網(wǎng)絡(luò)連接方式--os-variant=xxx #對(duì)應(yīng)的系統(tǒng)值,可以osinfo-query os這個(gè)查對(duì)應(yīng)值--virt-type=kvm #虛擬機(jī)類型--noautoconsole #不自動(dòng)連接,默認(rèn)是安裝時(shí)用virt-viewer或者virsh console去連接虛擬機(jī)
?把管理虛擬機(jī)的命令也寫一下
virsh list --all #查看所有虛擬機(jī),加all列出關(guān)機(jī)狀態(tài)的virsh console xxx #以控件臺(tái)連接到指定虛擬機(jī)virsh start xxx #啟動(dòng)虛擬機(jī)virsh shutdown xxx #關(guān)閉虛擬機(jī),一般關(guān)不了virsh destroy xxx #強(qiáng)制關(guān)閉虛擬機(jī)virsh autostart xxx #設(shè)置虛擬機(jī)隨機(jī)啟動(dòng)virsh undefine xxx #刪除虛擬機(jī),只會(huì)刪除對(duì)應(yīng)的xml,硬盤文件不會(huì)刪除virsh autostart xxx #設(shè)置虛擬機(jī)自動(dòng)啟動(dòng)
?
virt-install主要參數(shù)--graphics vnc,port=5901,listen=xxx
原理就是用virt-install命令安裝時(shí),在宿主機(jī)上開啟一個(gè)vnc端口5901,然后用VncViewer程序連接宿主機(jī)的5901端口,跟平時(shí)圖形化安裝一樣了。
推薦用Xshell連接,因?yàn)榭梢苑奖愕貜?fù)制命令,再裝個(gè)XFtp上傳iso文件到/data/iso目錄里
?創(chuàng)建所需目錄
mkdir -p /data/iso /data/vm
把安裝文件上傳到/data/iso后,用Xshell連接后,復(fù)制以下命令,回車(以下命令的斜杠,只是為了好看分行,不是必要的)
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來連接了,對(duì)了,得先把防火墻服務(wù)給關(guān)了
systemctl stop firewalld #關(guān)閉防火墻服務(wù)systemctl --zone=public --add-ports=5900/tcp --permanent #或者用這個(gè)開放5900端口
?在vncViewer上輸入ip跟端口號(hào)
然后就可以圖形化安裝了,非常方便。
?
virt-install主要參數(shù)--location跟--extra-args配合,不用--cdrom參數(shù),復(fù)制以下命令,回車
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'
?
接著就會(huì)進(jìn)入控制臺(tái)安裝界面,如下圖所示
?
可能還有些人沒在控制臺(tái)安裝過centos7,那我簡(jiǎn)單說下
觀察這個(gè),這些可以對(duì)應(yīng)我上面的那個(gè)圖形化安裝的圖,注意紅圈,打X的就是已經(jīng)設(shè)置好了,!的代表還沒設(shè)置,需要進(jìn)行配置,輸入q退出安裝,輸入b開始安裝,輸入r刷新
那我們需要對(duì)那些!的配置項(xiàng)進(jìn)行設(shè)置,或者修改原來設(shè)置,先修改第1項(xiàng),語言設(shè)置,輸入1回車,會(huì)顯示下圖,找到我們的中文,輸入68,回車
?
然后輸入1,簡(jiǎn)體中文,回車
?
會(huì)回到主界面,你會(huì)看到第1項(xiàng)已經(jīng)變了,變成簡(jiǎn)體中文了
?
?
再配置時(shí)區(qū),輸入2,回車,然后輸入1(Set timezone),然后輸入2(Asia亞洲),然后輸入64(Shanhai上海)
?
回到主界面,發(fā)現(xiàn)第2項(xiàng)已改變了
?
?
接著再設(shè)置安裝位置,輸入5,回車,如下圖,看到硬盤前面已經(jīng)是X,說明已經(jīng)選擇了,直接輸入c繼續(xù)就好了
?
這里不太懂,我默認(rèn),輸入c繼續(xù)
?
還是保持默認(rèn)LVM,輸入c繼續(xù)
?
會(huì)回到主界面,發(fā)現(xiàn)安裝位置也改變了,那最后來設(shè)置下Root密碼,輸入8,回車
?
重復(fù)輸入兩次root密碼
?
?
回到主界面,發(fā)現(xiàn)沒有!號(hào)了,那輸入b就可以進(jìn)行安裝了,你會(huì)發(fā)現(xiàn)其實(shí)控制臺(tái)安裝跟圖形化安裝也是差不多的。
?
安裝好后啟用下網(wǎng)卡,就可以正常連接外網(wǎng)的,我一開始是用Hyper-v,導(dǎo)致虛擬機(jī)一直連不了外網(wǎng),以為哪里配置不對(duì),用回VMware后就一切正常。
來源:https://www.icode9.com/content-3-326251.html聯(lián)系客服