首頁技術文章正文

云計算大數(shù)據(jù):Xen、KVM、VMware、hyper-v等虛擬化技術的比較

更新時間:2017-12-18 來源:黑馬程序員 瀏覽量:

1、Xen、KVM、VMware、hyper-v等虛擬化技術的比較,xen和kvm,是開源免費的虛擬化軟件。

vmware是付費的虛擬化軟件。

hyper-v比較特別,是微軟windows 2008 R2附帶的虛擬化組件,如果你買了足夠的授權,hyper-v(包括hyper-v 2008 core)都可以免費使用。

如果是vmware或hyper-v虛擬windows系統(tǒng),不管是虛擬化軟件本身,還是其中的子系統(tǒng),都要支付許可費用。

如果是vmware或hyper-v虛擬linux,虛擬化軟件本身要支付許可費用,子系統(tǒng)可以用linux來節(jié)省成本。

如果是xen或kvm虛擬windows,其中的子系統(tǒng)要支付許可費用。

如果是xen或kvm虛擬linux,那么虛擬化軟件本身和其中的子系統(tǒng)無需產生任何費用。

從性能上來講,虛擬windows,如果都能得到廠商的支持,那么,性能優(yōu)化可以不用擔心。這幾款軟件全都能達到主系統(tǒng)至少80%以上的性能(磁盤,CPU,網絡,內存),這時建議使用hyper-v來虛擬windows,微軟自身的產品,虛擬windows是絕對有優(yōu)勢的。

如果是虛擬linux,建議首先使用xen,支持linux的半虛擬化,可以直接使用主系統(tǒng)的cpu和磁盤及網絡資源,達到較少的虛擬化調度操作,可以達到非常高的性能,但xen操作復雜,維護成本較高。其次我們推薦kvm來虛擬linux,linux本身支持kvm的virtio技術,可以達到少量的虛擬化調度操作,得到較高的系統(tǒng)性能。

不推薦使用hyper-v來虛擬linux,太多的不兼容性導致linux基本無法在hyper-v上跑。

如果以上產品我們不打算買廠商支持,其中vmware和hyper-v,是不建議使用的,主要是授權問題。

這時就剩下kvm和xen了,如果虛擬windows,建議使用kvm,我們可以從redhat那里免費拿到針對windows優(yōu)化過的磁盤和網絡的驅動程序,可以達到較高的性能(幾乎與hyper-v性能持平)。而xen的windows優(yōu)化驅動不是那么容易就能拿到的(由于redhat以后不支持xen了,看看novell是否放水了,呵呵,就開放程度上來講,redhat要好于novell)。

綜上所述, 在有授權的情況下,虛擬windows,建議使用hyper-v 在有授權的情況下,虛擬linux,建議使用xen,如考慮到需要降低管理維護和學習成本,建議使用kvm。

在沒有授權的情況下,虛擬windows,建議使用KVM

2、KVM基本介紹

在2010年4月發(fā)布的RHEL6.0版本中,去掉了XEN,這也許是第一個不包含Xen Hypervisor的知名linux發(fā)行版。KVM是指基于Linux內核的虛擬機(Kernel-base Virtual Machine),增加到Linux內核是Linux發(fā)展的一個重要里程碑,這也是第一個整合到Linux主線內核的虛擬化技術。在KVM模型中,每一個虛擬機都是一個由Linux調度程序管理的標準進程,你可以在用戶空間啟動客戶機操作系統(tǒng),一個普通的Linux進程有兩種運行模式:內核和用戶,KVM增加了第三種模式:客戶模式(有自己的內核和用戶模式)。

1 KVM虛擬機的管理工具

準確的來說,KVM僅僅是Linux內核的一個模塊,管理和創(chuàng)建完整的KVM虛擬機,需要更多的輔助工具。

QEMU-KVM:在Linux系統(tǒng)中,首先我們可以用modprobe命令加載KVM模塊,如果用RPM安裝KVM軟件包,系統(tǒng)會在啟動時自動加載模塊,QEMU是一個強大的虛擬軟件,它可以虛擬不同的構架。

Virt-manager:盡管QEMU-KVM工具可以創(chuàng)建和管理KVM虛擬機,RedHat為KVM開發(fā)了更多的輔助工具,比如 libvirt libguestfs等,原因是QEMU工具效率不高,不易于使用。

2 安裝配置KVM相關軟件

2.1系統(tǒng)要求:

處理器需求:需要一臺可以運行最新linux內核的Intel處理器(含VT虛擬化技術)或AMD處理器(含SVM安全虛擬機技術的AMD處理器,也叫AMD-V)

[root@vfeelit ~]# cat /etc/redhat-release

CentOS release 6.4 (Final)

2.2檢查CPU:

[root@vfeelit ~]# egrep ‘vmx|svm’ /proc/cpuinfo

如果輸出的結果包含VMX,它是Intel處理器虛擬機技術標志:如果包含SVM,它是AMD處理器虛擬機技術的標志,如果你什么都沒有得到,那應你的系統(tǒng)并沒有支持虛擬化的處理,不能使用KVM,另處linux發(fā)行版本必須在64bit環(huán)境中才能使用KVM。

3 更新系統(tǒng)

yum update

yum upgrade

4 安裝KVM

[root@vfeelit ~]#yum -y install kvm python-virtinst libvirt bridge-utils virt-manager qemu-kvm-tools virt-viewer virt-v2v

[root@vfeelit ~]#vi /etc/sysconfig/selinux

SELINUX=disabled

[root@vfeelit ~]#reboot

5 重啟后確認libvirtd是否正常啟動

[root@vfeelit ~]# /etc/init.d/libvirtd restart

正在關閉 libvirtd 守護進程: [確定]

啟動 libvirtd 守護進程:2013-05-19 03:12:52.694+0000: 3070: info : libvirt version: 0.10.2, package: 18.el6_4.5 (CentOS BuildSystem , 2013-05-16-14:53:18, c6b7.bsys.dev.centos.org)

2013-05-19 03:12:52.694+0000: 3070: warning : virGetHostname:2265 : getaddrinfo failed for 'vfeelit': 未知的名稱或服務

[確定]

6 檢查KVM是否加載成功

顯示結果如下表示kvm模塊已經加載,如果沒有輸出信息,則表示沒有加載成功:

[root@vfeelit ~]# lsmod | grep kvm

kvm_intel 53484 0

kvm 316506 1 kvm_intel

7 檢查KVM是否成功安裝

[root@vfeelit ~]# virsh list --all ##--all關閉的也會顯示

Id 名稱 狀態(tài)

----------------------------------------------------

8 各版本查詢

[root@vfeelit ~]# kvm --version

bash: kvm: command not found

[root@vfeelit ~]# virt-install --version

0.600.0

[root@vfeelit ~]# virsh --version

0.10.2

9 修改qemu.conf配置

[root@vfeelit ~]# vi /etc/libvirt/qemu.conf

vnc_listen = "0.0.0.0"修改vnc監(jiān)聽端口

二 配置網絡橋接

參考:http://www.techotopia.com/index.php/Creating_an_RHEL_6_KVM_Networked_Bridge_Interface

1 安裝tunctl:

yum install -y tunctl

2 禁用網絡管理器:

chkconfig NetworkManager off ##和橋接有沖突,要關閉

service NetworkManager stop

3 修改eth0為物理網口,br0為橋接網口配置文件:

[root@vfeelit network-scripts]# cat ifcfg-br0

DEVICE=br0

TYPE=Bridge

BOOTPROTO=static

IPV6INIT=no

ONBOOT=yes

IPADDR=192.168.1.66

NETMASK=255.255.255.0

GATEWAY=192.168.1.1

DNS1=8.8.8.8

DELAY=0

[root@vfeelit network-scripts]# cat ifcfg-eth0

DEVICE=eth0

TYPE=Ethernet

BRIDGE=br0

BOOTPROTO=none

IPV6INIT=no

ONBOOT=yes

附加說明:這里配置成橋接方式,實際上本機的數(shù)據(jù)包發(fā)送是通過br0發(fā)送的,br0的TYPE是Bridge,其它的信息跟配置一個物理網卡一樣,本機的eth0通過橋接到br0(通過BRIDGE指定)進行通信,它根本不需要配置IP信息,實際上數(shù)據(jù)發(fā)送還是通過本機的物理網卡。

4 最后重啟網絡

[root@vfeelit network-scripts]# service network restart

5 查看橋接網絡

[root@vfeelit ~]# brctl show

bridge name bridge id STP enabled interfaces

br0 8000.0021cc6b6f2c no eth0

virbr0 8000.525400ac7ebe yes virbr0-nic

接口eth0通過br0進行橋接。birbr0-nic通過virbr0進行橋接,這個是默認的設置,當使用NAT時使用。

三 使用virt-install 工具安裝guest 系統(tǒng)

[root@vfeelit /]# virt-install --name=centos64 --ram 1024 --vcpus=2 --disk path=/var/lib/libvirt/images/centos64.img,size=10 --accelerate --cdrom /mnt/CentOS64.iso --graphics vnc,password=123456,port=5920 --network bridge=br0 --force --autostart

使用virt-install 工具,工具自動創(chuàng)建磁盤,默認是raw格式。

[root@vfeelit]# qemu-img info centos.img

image: centos.img

file format: raw

virtual size: 10G (10737418240 bytes)

disk size: 1.4G

1 可以通過virt-viewer查看安裝狀態(tài):

[root@vfeelit virtual]# virt-viewer name

2 使用virt-install 工具安裝虛擬機后,在目錄/etc/libvirt/qemu/下生成xml 配置文件。

[root@vfeelit ~]# cd /etc/libvirt/qemu

[root@vfeelit ~]# cat centos64.xml

虛擬機類型

centos 虛擬機名稱

54da30ed-150d-514e-9803-4dc01bd50488 uuid唯一標示

1048576 指定虛擬機內存大小,給出了單位

2 虛擬機占用虛擬cpu個數(shù),這里指物理cpu的核心數(shù)量

hvm 指定虛擬系統(tǒng)架構

啟動類型,從硬盤啟動

/usr/libexec/qemu-kvm 驅動程序,同上,使用的是qemu-kvm

指定磁盤類型

指定磁盤格式,這里是raw,也支持qcow2.

img文件路徑

磁盤文件標示,驅動類型

自動生成,可以手動指定。

橋接到哪一個接口

3 使用virsh工具管理生成的虛擬機

[root@vfeelit ~]# virsh start centos64 啟動虛擬機 reboot start shutdown

[root@vfeelit ~]# virsh list 列出當前運行的虛擬機

Id Name State

----------------------------------------------------

1 centos64 running

[root@vfeelit ~]# ll /var/lib/libvirt/qemu

total 12

srwxr-xr-x 1 root root 0 Aug 22 09:53 centos.monitor ##這里的文件,是libvirtd在重啟后,虛擬機也隨著自動重啟。

動態(tài)查詢kvm資源占用情況,每一臺VM,對應一個qemu-kvm進程

[root@vfeelit ~]# top -d 1 | grep kvm

4 截取的kvm進程信息

[root@vfeelit ~]# ps -aux | grep kvm

其他問題

1、圖形化配置:從菜單中啟動,或者運行virt-manager進入圖形管理界面,比較簡單,不過img的位置需要注意一下,kvm安裝后會有一個默認位置,不注意的話容易占滿空間。或者直接硬盤分區(qū)時單獨給/var分一個區(qū)。

2、虛擬機重新配置:

虛擬機的配置文件保存在/etc/libvirt/qemu目錄下,擴展名是xml。修改相應的文件即可重新配置虛擬機。

3、虛擬機備份及恢復:

備份:拷貝/etc/libvirt/qemu目錄下的xml配置文件,以及xml中設置的img文件。

恢復:進入virsh,執(zhí)行define 目錄下的xml文件路徑

virsh # define /etc/libvirt/qemu/winxp.xml

4、開機自動啟動虛擬機:

[root@vfeelit qemu]# virsh autostart Winxp

5、克隆KVM虛擬機:

[root@vfeelit ~]# virt-clone -o Winxp -n winxpclong -f /var/lib/libvirt/images/winxpclong.img

(-o 原始客體的名稱,-n新客戶端的名稱,-f作為新客戶端磁盤映像的新文件)

6、虛擬機意外關機報下述錯誤:

[root@vfeelit qemu]# virsh start winxp

錯誤:開始域 winxp 失敗

錯誤:Unable to read from monitor: Connection reset by peer

解決方法:virsh managedsave-remove winxp

Virsh語法參考:

Autostart 自動開始一個域

Create 從一個 XML 文件創(chuàng)建一個域

Define 從一個 XML 文件定義(但不開始)一個域

edit 編輯某個域的 XML 配置

shutdown 關閉一個域

start 開始一個(以前定義的)非活躍的域

reboot 重新啟動一個域

suspend 掛起一個域

resume 重新恢復一個域

vncdisplay vnc 顯示

使用save來備份當前虛擬機的狀態(tài):

[root@vfeelit images]# virsh save –bypass-cache RedHat /var/lib/libvirt/images/test.img –running

上面這個命令將RedHat的當前狀態(tài)保存到/opt/vm2_save文件中。–running參數(shù)表示下次restore回來的時候能夠自動啟動RedHat。

這個命令會導致RedHat被關閉。

現(xiàn)在還原:必須先關閉虛擬機

[root@vfeelit images]# virsh shutdown RedHat

[root@vfeelit images]# virsh restore /var/lib/libvirt/images/test.img –bypass-cache –running (還原時不要指定虛擬機名稱)

3、KVM自動部署及基本操作

隨著 IT 產業(yè)的不斷發(fā)展, IT 技術的不斷革新,近幾年虛擬化、云計算技術火熱,那我們今天來研究一下虛擬化技術,到底什么是虛擬化技術呢?我們?yōu)槭裁匆褂锰摂M化呢?

虛擬化 是指計算元件在虛擬的基礎上而不是真實的基礎上運行,是一個為了簡化管理,優(yōu)化資源的解決方案。

虛擬化技術 可以擴大硬件的容量,簡化 軟件 的重新配置過程。 CPU 的 虛擬化技術 可以單 CPU 模擬多 CPU 并行,允許一個平臺同時運行多個操作系統(tǒng),并且 應用程序 都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的工作效率。

目前主流的虛擬化技術主要有: KVM 、 Xen 、 VMware 、 VirtualBox ,虛擬化技術也越來越廣泛的應用在企業(yè)中,今天我們來研究和復習一下 KVM 虛擬化集群的搭建。

1、系統(tǒng)版本:

CentOS 6.4 x86_64

2、處理器需求:

需要一臺可以運行最新 linux 內核的 Intel 處理器(含 VT 虛擬化技術)或 AMD 處理器(含 SVM 安全虛擬機技術的 AMD 處理器,也叫 AMD-V )

[root@kvm~]# cat /etc/redhat-release

CentOSrelease 6.4 (Final)

3、CPU 支持需求 :

[root@localhost~]# egrep 'vmx|svm' /proc/cpuinfo

如果輸出的結果包含 VMX ,它是 Intel 處理器虛擬機技術標志:如果包含 SVM ,它是 AMD 處理器虛擬機技術的標志,如果你什么都沒有得到,那應你的系統(tǒng)并沒有支持虛擬化的處理,不能使用 KVM ,另處 linux 發(fā)行版本必須在 64bit 環(huán)境中才能使用 KVM 。

4、KVM正式安裝:

這里直接使用腳本,比較方便快捷,了解更多可以參官方網站。(僅供參考,后期不斷優(yōu)化)

#!/bin/sh

#Auto Make KVM Virtualization

#Author wugk 2013-12-06

#Defined Path

DAY_DIR=/data/backup/`date +%Y%m%d`

cat <

++++++++++++++++Welcome To Use Auto Install KVM Scripts ++++++++++++++++++

+++++++++++++++++++++++++This KVM Install Virtual ++++++++++++++++++++++++

+++++++++++++++++++++++++2013-12-06 Author wugk ++++++++++++++++++++++++++

EOF

KVM_SOFT=(

kvm python-virtinst libvirt bridge-utils virt-manager qemu-kvm-tools virt-viewer virt-v2v libguestfs-tools

)

NETWORK=(

HWADDR=`ifconfig eth0 |egrep "HWaddr|Bcast" |tr "\n" " "|awk '{print $5,$7,$NF}'|sed -e 's/addr://g' -e 's/Mask://g'|awk '{print

$1}'`

IPADDR=`ifconfig eth0 |egrep "HWaddr|Bcast" |tr "\n" " "|awk '{print $5,$7,$NF}'|sed -e 's/addr://g' -e 's/Mask://g'|awk '{print

$2}'`

NETMASK=`ifconfig eth0 |egrep "HWaddr|Bcast" |tr "\n" " "|awk '{print $5,$7,$NF}'|sed -e 's/addr://g' -e 's/Mask://g'|awk '{print

$3}'`

GATEWAY=`route -n|grep "UG"|awk '{print $2}'`

)

#Check whether the system supports virtualization

egrep 'vmx|svm' /proc/cpuinfo >>/dev/null

if

[ "$?" -eq "0" ];then

echo 'Congratulations, your system success supports virtualization !'

else

echo -e 'OH,your system does not support virtualization !\nPlease modify the BIOS virtualization options (Virtualization

Technology)'

exit 0

fi

if

[ -e /usr/bin/virsh ];then

echo "Virtualization is already installed ,Please exit ...." ;exit 0

fi

yum -y install ${KVM_SOFT[@]}

/sbin/modprobe kvm

lsmod | grep kvm >>/dev/null

if

[ "$?" -eq "0" ];then

echo 'KVM installation is successful !'

else

echo 'KVM installation is falis,Please check ......'

exit 1

fi

cd /etc/sysconfig/network-scripts/

mkdir -p $DAY_DIR

if [ ! -e $DAY_DIR/ifcfg-eth0 ];then

cp ifcfg-eth* $DAY_DIR/

fi

if

[ -e /etc/sysconfig/network-scripts/ifcfg-br0 ];then

echo "The ifcfg-br0 already exist ,Please wait exit ......"

exit 2

else

cat >ifcfg-eth0 <

DEVICE=eth0

BOOTPROTO=none

${NETWORK[0]}

NM_CONTROLLED=no

ONBOOT=yes

TYPE=Ethernet

BRIDGE="br0"

${NETWORK[1]}

${NETWORK[2]}

${NETWORK[3]}

USERCTL=no

EOF

cat >ifcfg-br0 <

DEVICE="br0"

BOOTPROTO=none

${NETWORK[0]}

IPV6INIT=no

NM_CONTROLLED=no

ONBOOT=yes

TYPE="Bridge"

${NETWORK[1]}

${NETWORK[2]}

${NETWORK[3]}

USERCTL=no

EOF

fi

echo 'Your can restart Ethernet Service: /etc/init.d/network restart !'

echo '---------------------------------------------------------'

sleep 1

echo 'Your can restart KVM Service : /etc/init.d/libvirtd restart !'

echo

echo -e "You can create a KVM virtual machine: \nvirt-install --name=centos01 --ram 512 --vcpus=1 --disk

path=/data/kvm/centos01.img,size=7,bus=virtio --accelerate --cdrom /data/iso/centos58.iso --vnc --vncport=5910 --vnclisten=0.0.0.0 --

network bridge=br0,model=virtio --noautoconsole"

自此KVM簡單安裝到此結束,安裝完畢,怎樣來創(chuàng)建一個虛擬機并且安裝呢,首先我們把需要安裝的系統(tǒng)ISO鏡像上傳到/data/iso目錄,然后新建/data/kvm虛擬機安裝目錄,然后啟動如下腳本:

virt-install --name=centos01 --ram 512 --vcpus=1 --disk path=/data/kvm/centos01.img,size=7,bus=virtio --accelerate --cdrom /data/iso/centos58.iso --vnc --vncport=5910 --vnclisten=0.0.0.0 --network bridge=br0,model=virtio

然后在客戶端(PC機)使用VNC客戶端連接KVM服務端5910端口,進行安裝系統(tǒng)即可。

當安裝完一臺后,如何快速啟動第二臺呢,這里只需要復制我們剛安裝的第一臺的兩個文件(/data/kvm/centos01.img /etc/libvirt/qemu/centos01.xml),然后做相應修改即可。

204720916.png

還可以使用命令克?。?/p>

nohup virt-clone -o centos01 -n centos02 -f /data/kvm/centos02.img &

這樣就配置完畢,怎樣重啟兩臺虛擬機呢?命令如下:

(參數(shù)主要有reboot、start、shutdown)

virsh reboot centos01 (重啟)

virsh reboot centos02 (重啟)

virsh start centos01 (啟動)

virsh start centos02 (啟動)

當我們啟動新克隆的兩臺虛擬機,我們會發(fā)現(xiàn)網卡無法啟動,原因是因為克隆改變新虛擬機的MAC地址,故eth0無法啟動,新的虛擬機后網卡變成了eth1,那我們怎樣修改為eth0呢,使用如下腳本,執(zhí)行,然后重啟網卡(或者重啟系統(tǒng))即可。

#!/bin/sh

#Auto Set Centos6.x eth1 MAC to eth0

NET=/etc/udev/rules.d/70-persistent-net.rules

ETH0=/etc/sysconfig/network-scripts/ifcfg-eth0

sed -i '/eth0/s/SUBSYSTEM/#SUBSYSTEM/g' $NET

HWADDR=`grep eth1 $NET|awk '{print $4}'|awk -F'==' '{print $2}'|sed 's/\,//g'`

sed -i "s/HWADDR.*/HWADDR=$HWADDR/g" $ETH0

sed -i -e '/^SUBSYSTEM/s/eth1/eth0/' -e '/#SUBSYSTEM/s/eth0/eth1/' -e 's/#SUBSYSTEM/SUBSYSTEM/' $NET

#This script applies only two NIC configuration

COUNT=`grep "SUBSYSTEM" $NET|awk '{print $NF}'|sed 's/[^0-9]//g'|awk 'NR==2'`

if

[ $COUNT == 0 ];then

echo 'The IP MAC Change Successfully !'

else

echo "The IP MAC Change Fails,Please rerun the Shell Scripts"

fi

KVM簡單操作就先介紹到這里,更多功能和維護在后期會更新。

本文參考如下文章,非常感謝:

http://koumm.blog.51cto.com/703525/1290191

http://g.51cto.com/netengineer/216414

4、KVM常見問題

1.error:no hypervisor options were found ofr this connection

this usually means that qemu or kvm is not installed on your machine,or the kvm kernel modules are not loaded.

解決方法:開啟bios虛擬化并加載modprobe kvm以及kvm_intel.

2.Unable to migrate guest: unsupported configuration: Domain requires KVM, but it is not available. Check that virtualization is enabled in the host BIOS, and host configuration is setup to load the kvm modules.

解決方法:方法同上.

3.Unable to migrate guest: Unable to allow access for disk path /img/musf-clone1-2-clone.img: No such file or directory

解決方法:遷移與被遷移主機的共享目錄一定要一樣.即server1目錄為/img server2目錄也要為/img.

4.Unable to migrate guest: unable to connect to server at 'kvm3:49153': Connection refused

解決方法:1.開啟防火墻上端口或關閉防火墻.

2.在virt-manager的遷移中添加遷移端口.

5.Unable to migrate guest: Timed out during operation: cannot acquire state change lock

解決方法:...求科普..而且是大部分虛擬機都可以遷移就一個不成..找不到北ing...

1.虛擬機起不來的情況下.使用kill -9 `ps -ef|grep 'libvirtd --daemon'|grep -v grep |awk '{print $2}'`殺死libvirt --daemon進程并重啟libvirtd --daemon

6.error: Unable to initialize network sockets. Check /var/log/messages or run without --daemon for more info.

事件還原:使用virtual host模式安裝完centos,并且yum安裝好vdsm之后,開啟vdsm不能,開啟libvirtd不能。顯示該錯誤如上。

解決方法:進入/etc/libvirt/libvirtd.conf修改listen_tls為0即可.

7.Host 25 installation failed. SSH command failed while executing at host 'root@192.168.20.25', refer to logs for further information。

事件還原:安裝vdsm之后從ovirt管理界面加入當前vdsm主機時出現(xiàn)錯誤。原因之一為vdsm-cli未安裝。安裝即可。

8.在ovirt-engine中添加data/nfs作為存儲域時并不能成功。

解決方法:1.可以試試查看一下將要共享的文件夾權限是否是vdsm:kvm。若不是使用chown -R命令即可。

authentication name

9.vdsm在加入ovirt時會使用sasl再次加密libvirt,所以使用virt-manager連接libvirt時需要輸入 authentication name & passowrd。

解決方法:使用saslpassword2 -a命令創(chuàng)建另一組認證名和密碼用于virt-manager對libvirt的訪問即可。

命令格式: saslpasswd2 -a libvirt 用戶名

10.部分主機創(chuàng)建虛擬機成功,開啟虛擬機時出現(xiàn)error...

VM CentOS6.3T is down. Exit message: internal error Process exited while reading console log output: bind(unix:/var/lib/libvirt/qemu/channels/CentOS6.3T.com.redhat.rhevm.vdsm): Permission denied chardev: opening backend "socket" failed

由于../channels這個文件夾的權限是vdsm qemu。root用戶可能不能讀取并創(chuàng)建其中的文件。我采用的方法是手動在qemu.conf中注釋掉.user = root 以及 group = root并重啟libvirtd。

之后出現(xiàn)錯誤:VM CentOS6.3T is down. Exit message: internal error client socket is closed.

還有VM test is down. Exit message: cannot open file '/rhev/data-center/78e07dee-36bc-439b-b71e-72cfd87a2bb3/f84e3679-281e-41d4-9ea9-b8221085fa7b/images/2e93290e-f1b5-42b2-bdf6-fad695de2ccb/ef334a97-e01b-4d7c-afb0-814ffbe537f0': Permission denied.

這兩個錯誤都是由于libvirt設置問題才報錯的.

我直接覆蓋了libvirtd.conf qemu.conf以及vdsm.conf文件.最近權限問題整的我焦頭爛額啊.以后再找具體錯誤.

1.系統(tǒng)(處理器)需求?

你將需要一臺運行最新Linux內核的Intel處理器(含VT虛擬化技術)或AMD處理器(含SVM安全虛擬機技術的AMD處理器, 也叫AMD-V)。

2.什么是Intel VT/AMD-V?

Intel VT和AMD’s AMD-V是一套與支持該技術的虛擬機監(jiān)視器相結合的硬件增強特性(指令集擴展)。kvm可在原始硬件速度下通過運行完全隔離的虛擬機來執(zhí)行任務。

3.如何確認處理器含有Intel VT或AMD-V技術?

在最新的Linux內核下運行: egrep ‘^flags.*(vmx|svm)’ /proc/CPUinfo

如有顯示,您的處理器具有VT功能。你也可以通過廠商網站查詢處理器型號的名稱(在/proc/cpuinfo)。

注:一些廠商禁止了機器BIOS中的VT選項, 這種方式下VT不能被重新打開。

./proc/cpuinfo僅從Linux 2.6.15(Intel)和Linux 2.6.16(AMD)開始顯示虛擬化方面的信息. 請使用uname -r命令查詢您的內核版本。

如有疑問, 請聯(lián)系硬件廠商。

4.kvm支持哪些用戶空間工具?

kvm使用稍改動的qemu程序來創(chuàng)建虛擬機. 一旦運行后, 虛擬機是一個標準的進程. 你可以使用top(1),kill(1),taskset(1)和類似的工具來管理虛擬機。

5.kvm支持哪些虛擬磁盤格式?

kvm從qemu繼承了豐富的磁盤格式, 包括裸映象(raw images), 原始qemu格式(qcow), VMware格式和更多。

6.kvm和Xen有何區(qū)別?

Xen是一個外部的hypervisor程序(虛擬機管理程序);它能夠控制虛擬機和給多個客戶機分配資源. 另一方面, kvm是linux的一部分, 可使用通常的linux調度器和內存管理. 這意味著kvm更小更易使用。

另一方面, Xen同時支持全虛擬化和半虛擬化(修改過的客戶機能有更好的性能). kvm當前不支持半虛擬化。

7.kvm和VMware有何區(qū)別?

VMware是一個專利產品. kvm是一個遵守GPL的自由(開源)軟件。

8.kvm和QEMU有何區(qū)別?

Qemu使用模擬器; kvm使用處理器擴展實現(xiàn)虛擬化。

Array.kvm有Windows上的版本嗎?

當前沒有。

10.kvm支持哪些內核版本?

kvm可以運行在最新的內核版本下(2.6.16或更高, 最好是用最新的內核)

11.我需要多什么RAM(內存)才能運行kvm?

你需要足夠的內存在主機上運行單個或多個虛擬機. 建議主機內存至少1GB。

12.KVM上的虛擬機支持哪些操作系統(tǒng)?

我們已經測試了Linux(32/64位)和Windows(32位), 其它也許能夠運行或不能運行。不支持64位的Windows操作系統(tǒng), 該問題會在qemu-0.83發(fā)布和整合后修復。

Intel處理器上幾個Linux發(fā)行版在啟動時候會掛起。工作區(qū)需要取消grub中的splashscreen選項。

13.KVM支持動態(tài)遷移功能嗎(在不離線的情況下把虛擬機從一個主機移到另一個主機上)?

現(xiàn)在kvm支持非動態(tài)遷移,當內存數(shù)據(jù)需轉移的時候,系統(tǒng)需要停止。動態(tài)遷移功能正在開發(fā)當中。

14.kvm能夠在64為主機上運行32位的客戶機嗎? 什么是PAE?

kvm支持在64位主機上運行32位客戶機, 也可以是任何PAE或非PAE客戶機和主機組合。但不支持在32位主機上運行64位客戶機。

15.如果我對一個VM進程使用kill -Array將會發(fā)生什么?

從客戶機的角度來看,就如你猛地把電源線從主機上拔出一樣。從主機的角度來看,進程被殺掉,進程占用的所有資源被施放。

16.kvm支持SMP主機嗎?

支持。

17.如何安裝windows客戶機?

當前Windows客戶機安裝存在一點問題,問題在APIC的實現(xiàn)上?,F(xiàn)在APIC由qemu來模擬, 而qemu還沒有完全整合到kvm虛擬cpu中。我們正加緊在kvm中實現(xiàn)APIC功能。

到現(xiàn)在, 啟動qemu請使用-no-acpi參數(shù),如果你的客戶機需使用APIC HAL,建議參考下面步驟:

1. 關閉kvm運行客戶機(-no-kvm)

My Computer -> PropertIEs -> Hardware -> Device Manager -> [Whatever under Computer] -> Properties -> Update Driver -> Not at this time -> Next -> Install from a list -> Next -> Don’t search -> Next -> Standard PC -> Next.

“Standard PC”是無acpi支持的HAL.

18.Qumranet提供哪些產品?

umranet是一家由Qequoia Capital和Norwest Venture Partners (NVP)投資的初創(chuàng)公司,當前公司處于準備運營當中(正在加緊開發(fā)公司的產品)。(T002)

5、KVM使用經驗

虛擬化技術已經成為未來計算機技術的一個重要的發(fā)展方向。linux在虛擬化方面已經有了很多中解決方案: VMware、 VirtualBox、Xen和KVM。KVM是一個全虛擬化的解決方案。可以在x86架構的計算機上實現(xiàn)虛擬化功能。但KVM需要CPU中虛擬化功能的支持,只可在具有虛擬化支持的CPU上運行。Xen也是Linux下的一個虛擬化解決方案,也將很快被編入內核中。Xen的實現(xiàn)方法是,運行支持Xen功能的kernel……

一.KVM簡介

虛擬化技術已經成為未來計算機技術的一個重要的發(fā)展方向.linux在虛擬化方面已經有了很多中解決方案,:VMware,VirtualBox,Xen和KVM。

KVM是一個全虛擬化的解決方案??梢栽趚86架構的計算機上實現(xiàn)虛擬化功能。但KVM需要CPU中虛擬化功能的支持,只可在具有虛擬化支持的CPU上運行,即具有VT功能的Intel CPU和具有AMD-V功能的AMD CPU。

Xen與KVM的比較

Xen也是Linux下的一個虛擬化解決方案,也將很快被編入內核中。Xen的實現(xiàn)方法是,運行支持Xen功能的kernel,這個kernel是工作在Xen的控制之下,叫做Domain0,使用這個kernel啟動機器后,你可以在這個機器上使用qemu軟件,虛擬出多個系統(tǒng)。Xen的缺點是,如果你需要更新Xen的版本,你需要重新編譯整個內核,而且,稍有設置不慎,系統(tǒng)就無法啟動。

相比較,KVM就簡化的多了。它不需要重新編譯內核,也不需要對當前kernel做任何修改,它只是幾個可以動態(tài)加載的.ko模塊。它結構更加精簡,代碼量更小,所以,出錯的可能性更小。并且在某些方面,性能比Xen更勝一籌。

二.KVM的使用

現(xiàn)在以Turbolinux 11版本為基礎,介紹KVM的使用方法。

在安裝之前,你需要先確認,你的CPU是否支持虛擬化技術,執(zhí)行:

# egrep '^flags.*(vmx|svm)' /proc/cpuinfo

如果有輸出返回,則表示,你的CPU支持虛擬化技術。

1.KVM的安裝

從官方網站下載KVM源碼包:http://kvm.qumranet.com/

我們使用KVM-33版本

# tar zxf kvm-33.tar.gz

# cd kvm-33

# ./configure --prefix=/usr/local/kvm-33

# make

# make install

make install后,kvm的模塊會安裝到/lib/modules/$KernelVersion/extra/目錄下.其他相關文件會安裝到/usr/local/kvm-33/目錄下。

將kvm相關目錄連接到系統(tǒng)目錄中

# ln -s /usr/local/kvm-33/bin/* /usr/bin/

# ln -s /usr/local/kvm-33/lib/* /usr/lib/

(若為x86_64系統(tǒng),則執(zhí)行: ln -s /usr/local/kvm-33/lib64/* /usr/lib64/)

# ln -s /usr/local/kvm-33/include/kvmctl.h /usr/include/

# ln -s /usr/local/kvm-33/include/linux/* /usr/include/linux/

# ln -s /usr/local/kvm-33/share/qemu /usr/share/

2.KVM的使用

a.你需要先建立一個映像文件,作為虛擬系統(tǒng)的硬盤

# mkdir /images

# cd /images

# /usr/bin/qemu-img -f qcow gtes11.img 20G

b.創(chuàng)建網絡配置腳本

# echo '/sbin/ifconfig $1 10.0.1.1 netmask 255.255.255.0' > /etc/qemu-ifup

c.加載KVM模塊

Intel CPU使用:

# modprobe kvm-intel

AMD CPU使用:

# modprobe kvm-amd

d.安裝虛擬系統(tǒng)

# /usr/bin/qemu-i386 -m 512 -k en-us -M pc -hda /images/gtes11.img -cdrom /iso/zuma-SP3-rc3-6-

disc1-20061031.iso -net nic,vlan=1,model=rtl8139,macaddr=00:00:00:00:99:01 -net tap,vlan=1,ifname=tap0,

script=/etc/qemu-ifup -vnc localhost:1 -boot d

在另一個終端執(zhí)行:

# vncviewer localhost:1

參數(shù)分析:

我們?yōu)樘摂M系統(tǒng)分配512MB內存.使用gtes11.img作為它的第一塊硬盤,使用Turbolinux10.5的disc1作為它的光盤。

并從光盤引導.它有一塊rtl8139的網卡,MAC地址為:00:00:00:00:99:01,并把這個網卡與主機的tap0接口連接。

tap0接口使用/etc/qemu-ifup腳本進行初始化.虛擬系統(tǒng)的輸出作為一個vnc服務器,綁定在主機的localhost:1上。

注:

1.若為x86_64系統(tǒng),則使用/usr/bin/qemu-system-x86_64 代替qemu-i386

2.在64位系統(tǒng)上,可以安裝32位和64位的虛擬系統(tǒng).但在32位系統(tǒng)上,只能安裝32位的虛擬系統(tǒng)。

qemu參數(shù)介紹:

-da 映像文件: 使用映像文件作為虛擬系統(tǒng)的第一塊硬盤.同樣還可以使用hdb,hdc,hdd指定第2,3,4塊硬盤。

-drom 光盤映像文件: 使用光盤映像文件作為虛擬系統(tǒng)的光盤。

-oot [a|c|d|n]: 設置虛擬系統(tǒng)的引導順序,a為軟驅,c為硬盤,d為光驅,n為網絡。

- 內存大小: 設置虛擬系統(tǒng)使用的內存大小,單位為MB。

- 語言: 設置虛擬系統(tǒng)鍵盤類型。

-et nic[,vlan=n][,macaddr=addr][,model=type]

建立一個虛擬網卡,并把它連接到VLAN的n端口上。

-net tap[,vlan=n][,fd=h][,ifname=name][,script=file]

把主機的TAP網絡接口連接到VLAN的n端口上,并使用script指定的腳本進行初始化。

6、VNC Viewer 連接成功后閃退的解決方法

2013年12月3日Linux技術VNCVNC ViewerVNC閃退1 Comment

VNC是個不錯的工具,今天掏出VNC Viewer來連接一臺N久沒登陸的服務器看看,輸入密碼連上后直接閃退,可能是ColourLevel的問題。

依次點Option-->Advanced-->Expert找到ColourLevel,默認值是pal8,修改為rgb222或full。

重新連接,沒有問題了。

yum grouplist 檢查已安裝的組

yum groupinstall "X Window System"

yum groupinstall "GNOME Desktop Environment"

startX

7、CentOS用yum安裝X Window

安裝CentOS 5.6系統(tǒng)的時候我沒有先裝任何組件,現(xiàn)在用X Window,需要再安裝X Window,就可以啟動圖形界面了,但是默認的圖形界面是很簡陋的界面,可以根據(jù)需要再安裝GNOME或KDE桌面環(huán)境

安裝X圖形界面

#可查詢哪些組件是否已經安裝(可用來對照組件名稱)

yum grouplist

#安裝X圖形界面系統(tǒng)

yum list 列出所有可安裝的軟件包 可以通過 yum grouplist 來查看可能批量安裝哪些列表 比如 #yum groupinstall "DNS Name Server" //安裝 bind 及 bind-chroot 套件

yum groupinstall "X Window System" -y

#安裝GNOME桌面環(huán)境

yum groupinstall "GNOME Desktop Environment" -y

#安裝KDE桌面環(huán)境

yum groupinstall "KDE (K Desktop Environment)"

卸載

卸載GNOME桌面環(huán)境

yum groupremove GNOME Desktop Environment'

卸載KDE桌面環(huán)境

yum groupremove 'K Desktop Environment'

啟動X圖形界面的方法

1、startx

2、設置開機自動啟動,修改/etc/inittab

id:3:initdefault: ------> id:5:initdefault:

3、init 5

默認桌面環(huán)境選擇

一、設置GNOME或者KDE為默認的啟動桌面環(huán)境

方法1:修改/etc/sysconfig/desktop,根據(jù)需要將“DESKTOP”后面的參數(shù)設置為KDE或GNOME。

方法2:在當前用戶目錄下建立“.xinitrc”這個文件,文件的內容就一行startkde或gnome-session。

二、GNOME和KDE的切換

1、如果需要切換到GNOME:

#switchdesk gnome

2、如果需要切換到KDE:

#switchdesk kde

2、如果需要切換到KDE:

#startkde

圖形界面與字符界面的切換

在Linux中是有多控制臺的,其中前6個是字符界面,第七個是圖形界面。

如果你需要切換到字符界面,可以使用CTRL+ALT+Fn來實現(xiàn),其中Fn是F1-F6中的任何一個,

當然如果你是在字符界面之間互相切換就沒必要CTRL了,直接ALT Fn

8、安裝VNC

yum -y install vnc *vnc-server*

vim /etc/sysconfig/vncservers

vncpasswd

/etc/init.d/vncserver start

9、vCPU數(shù)量配置

vCPU,顧名思義,是虛擬CPU。 創(chuàng)建虛擬機時,需要配置vCPU資源。 因此vCPU是虛擬機的部件。 因此脫離VM,談論vCPU是沒有意義的。

虛擬化管理系統(tǒng)如何調度vCPU,取決于系統(tǒng)內的虛擬機數(shù)目以及虛擬機配置的vCPU的情況。

大致的情況如下:

1、當系統(tǒng)內VM所需的vCPU總數(shù)少于物理CPU的核數(shù)(包括超線程Core)時,虛擬化管理系統(tǒng)為vCPU分配的資源不超過一個物理CPU核。 vCPU與物理核的分配關系可以是綁定的,也可能是動態(tài)的。

比如服務器有20個核心,你創(chuàng)建了2個VM,每個VM 4個vCPU,那么這兩個VM最多能夠使用服務器的8個核心。

2、當系統(tǒng)內的VM所需要的vCPU核大于物理CPU核數(shù)時,虛擬化管理系統(tǒng)首先按照時間片輪流調度一遍,然后如果還有剩余的CPU資源,則給所需要的vCPU。 比如系統(tǒng)配置了40個vCPU,只有20個物理核。那么平均每個vCPU獲取一個核心50%的資源。由于一些VM忙,一些VM空閑,虛擬化系統(tǒng)會在一個調度周期內,劃分出若干時間片,輪流給每個vCPU使用。忙的vCPU可以使用完整個時間片,而閑的vCPU用不完整個時間片,會提前釋放資源。這樣在一個調度周期內,對每個vCPU都調度一遍后還有空閑的時間,調度器會把用這剩余的資源去調度忙的vCPU。 這樣兼顧公平和效率。 這中調度算法具體下來,大致是如下效果:系統(tǒng)有1個CPU 2.0 Ghz,兩個VM,分配1個vCPU。 如果VM1 和 VM2都忙,那么各自相當于擁有一個1.0 Ghz的CPU。 如果VM1很忙,VM1只需要 500Mhz的處理能力,那么在VM1看來,相當于暫時獲得了 1.5Ghz的處理器。

3、通過對Xen的測試,系統(tǒng)所有虛擬機的vCPU的總數(shù)目小于和等于CPU核數(shù)時,VM的性能是比較穩(wěn)定的。 VM的vCPU基本上綁定到了一個CPU核。 當vCPU數(shù)目大于物理核數(shù)時,VM的性能穩(wěn)定性變差。


本文版權歸黑馬程序員云計算大數(shù)據(jù)學院所有,歡迎轉載,轉載請注明作者出處。謝謝!


作者:黑馬程序員云計算大數(shù)據(jù)培訓學院


首發(fā):http://cloud.itheima.com/


分享到:
在線咨詢 我要報名
和我們在線交談!