安裝使用xen虛擬化工具


換了一家新公司,需要拿出一套虛擬化方案,就把業界的主流虛擬化技術划拉了一遍,給領導交了一份報告,具體的技術部分已經在之前的隨筆里了,本篇文章主要介紹的是xen虛擬化工具的安裝,下方是xen的官方安裝文檔鏈接,有興趣的可以去看看:

https://wiki.xenproject.org/wiki/Xen_Project_Beginners_Guide#What_is_this_Xen_Project_software_all_about.3F

宿主機信息:centos7.4-1708版本的虛擬機,安裝與配置如下圖,值得一提的是,因為本次測試使用的是全虛擬化,所以需要cpu的支持:

 

如果是安裝了linux系統的服務器,則可以輸入:egrep '(vmx|svm)' /proc/cpuinfo

如果出現下圖中的內容,則說明改cpu是支持虛擬化的,反之,則說明不支持:

 

1.沒什么好說的,關閉防火牆和selinux,做一下基礎配置:

systemct disable firewald

sed -i 7s/enforcing/disabled/g /etc/selinux/config

reboot(因為我比較懶)

2.安裝xen的yum源

yum -y install centos-release-xen-48.x86_64 

網上有比較多的xen安裝教程,做的時候也踩了不少坑,對於這些問題,接下來會一一列舉

3.修改xen源為不啟用

sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/CentOS-Xen-48.repo

PS:repo配置enabled=0是禁用該源,enabled=1是啟用該源,yum --enablerepo=centos-virt-xen會指定使用該源,如果該源已禁用(enabled=0),該參數也可以讓yum暫時使用該源

4.使用centos的xen源來更新內核

yum --enablerepo=centos-virt-xen-48 -y update kernel

這一步需要是需要注意的,網上給出的很多教程也是到這一步出問題,錯誤的消息是:

 

failure: repodata/repomd.xml from centos-virt-xen-46: [Errno 256] No more mirrors to try.
http://mirror.centos.org/centos/7/virt/x86_64/xen-46/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found

 

其根本原因在於xen源中的名稱

[centos-virt-xen-48]是該源的真正名稱,名稱錯了,當然是404錯誤,[centos-virt-xen-48-testing]中的內容是正在測試的軟件,可以無視。

 PS:因為centos的源是在國外,所以更新的很慢,我下載了大概一個多小時,才更新完了內核。

5.安裝xen程序:yum --enablerepo=centos-virt-xen-48 -y install xen

這一步沒什么說的,如果上一步更新成功了xen內核,那這一步就不會出問題,還是有點慢,下載了大概半個小時。

6.設置Domain0

這兩個的意思我在網上找了點資料,但都是術語,用通俗的話來講呢:

dom0_mem=3072M的意思是xen內核最多調用的內存,即xen內核從你的linux內核上所能調用的內存大小,max:3072M,的意思是建立在xen內核上的虛擬機從xen內核中所能調用的內存大小,裸機系統內核內存->xen內核內存->建立在xen內核上的系統內存,這樣的話,才不會報錯,默認的值都是1024,因為我要用來做測試,所以我把它改成了3G=3072M

7.安裝管理工具,有人看到這要問了,xen不是虛擬化了嗎,是xen是實現了資源的虛擬化,但是xen本身只提供虛擬化,所以呢,虛擬機的創建,管理等等都是需要第三方管理工具來做。

因為虛擬化與傳統技術相比的特殊性,所以呢,先從base源中更新通用的依賴與部分工具軟件,然后使用xen源來安裝管理工具。

yum -y install gnutls-utils vte3 dbus-libs python-ipaddr

yum --enablerepo=centos-virt-xen-48 -y install libvirt libvirt-daemon-xen virt-install virt-manager libvirt-devel virt-viewer

這一步我遇到了點問題,安裝管理工具的時候,報了個錯,說是因為這個包下載速度太慢,所以取消了下載,國外的網速還是傷不起啊,沒關系,反正包的名稱都知道了,復制了這個包的名稱到百度里去下載,然后使用rpm -ivh來安裝,

8.添加xen開機啟動項,就是運行一個腳本,CentOS官網描述這將生成/boot/grub2/grub.cfg;https://wiki.centos.org/zh/HowTos/Xen/Xen4QuickStart

安裝好了之前的包之后,這個腳本就會出現在這個目錄:/bin/grub-bootxen.sh,直接執行就行了。

9.重啟服務器,如果都做的沒有問題,那么開機選擇內核的時候,應該出現下面的畫面:

直接回車啟動就行了

10.檢測安裝是否成功:

輸入圖上所示的命令之后,如果出現了類似的信息,那就是安裝好了,然后就看你選擇哪種管理工具了。

11.刪除安裝時的NAT網卡,建立橋接網卡:

刪除:

brctl show virsh net-list virsh net-destroy default virsh net-undefine default service libvirtd restart

新建xenbr0:

[root@localhost ~]# ip add #查看網卡的名稱,我的網卡名稱是ens33 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast [root@localhost ~]# nmcli con add type bridge con-name xenbr0 ifname xenbr0 autoconnect yes ip4 192.168.249.149/24 gw4 192.168.249.2 #創建xenbr0網卡 [root@localhost ~]# nmcli con mod xenbr0 ipv4.dns 192.168.249.2 #配置DNS [root@localhost ~]# nmcli con modify xenbr0 bridge.stp no #配置適當的默認值 [root@localhost ~]# nmcli con modify xenbr0 bridge.hello-time 0 [root@localhost ~]# nmcli con modify "ens33" connection.master xenbr0 connection.slave-type bridge #將ens33網卡橋接到xenbr0這塊虛擬網卡上 [root@localhost ~]#systemctl restart network    #重啟網絡來驗證

 ok,使用橋接,來使虛擬機能夠獲得和物理機相同的網絡

12.使用qemu-img來創建虛擬磁盤文件:qemu-img create -f raw /opt/kvm.raw 10G   raw是老牌的虛擬磁盤格式

最后:雖然搭建起了xen,但是xend服務不知道為什么找不到,再三檢查了軟件包的安裝也沒有解決,使用其建立虛擬機一直失敗,找不到原因,我猜測是架構升級,xend的功能被別的進程取代了,在網上找了很長時間后,果然驗證了我猜測,在一篇技術文章中找到了:以前舊版本的 xend 已經被 xencommons 替代了,這句話,但xencommons服務和xend一樣,在系統中找不到該服務,我猜測xencommons服務又被別的服務取代了,Xen 從 4.1 版本開始引入了新版工具集 xl/libxl,並在后續的版本中逐步替代舊的 xm/xend,在 4.5 版本中已經完全刪除了 xm/xend.可惜的是,我在網上找的的資料基本都是七八年前的,自從redhat不再嵌入xen作為自己的默認虛擬化模塊后,對xen做研究和支持的資料可用度一落千丈,各位如果找到了原因,歡迎私信我,一起交流進步。

安裝xen后的系統關於xen的服務:

[root@localhost ftp]# systemctl list-unit-files | grep xen proc-xen.mount                                static  
var-lib-xenstored.mount                       static xen-init-dom0.service enabled xen-qemu-dom0-disk-backend.service enabled xen-watchdog.service disabled xenconsoled.service enabled xendomains.service disabled xendriverdomain.service disabled xenstored.service disable

 

PS:在網上找了virsh的命令行管理,有需要就拿走吧:

virsh的基本用法如下
virsh [COMMAND] [ARGS...] 
另外需要注意的是,virsh提供兩種執行模式: "直接模式(Direct Mode)"與"互動模式(Interactive Mode)"。在直接模式里,你必須在Shell中以參數、自變量的方式來執行virsh,如果在互動模式中,則virsh會提供一個提示字符串,你可以在該提示字符串后,輸入要執行的命令。如果執行virsh沒有指定任何參數或自變量則默認就是進入互動模式。
與xm一樣,COMMAND也是 virsh提供的命令,常用的命令如下:

virsh常用命令如下:

命令 說明
help      顯示該命令的說明
quit      結束 virsh,回到 Shell
connect  連接到指定的虛擬機服務器
create    啟動一個新的虛擬機
destroy  刪除一個虛擬機
start    開啟(已定義的)非啟動的虛擬機
define    從 XML 定義一個虛擬機
undefine  取消定義的虛擬機
dumpxml  轉儲虛擬機的設置值
list      列出虛擬機
reboot    重新啟動虛擬機
save      存儲虛擬機的狀態
restore  回復虛擬機的狀態
suspend  暫停虛擬機的執行
resume    繼續執行該虛擬機
dump      將虛擬機的內核轉儲到指定的文件,以便進行分析與排錯
shutdown  關閉虛擬機
setmem    修改內存的大小
setmaxmem 設置內存的最大值
setvcpus  修改虛擬處理器的數量

 


免責聲明!

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



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