更新時間:2017-12-18 來源:黑馬程序員 瀏覽量:
1、Xen、KVM、VMware、hyper-v等虛擬化技術(shù)的比較,xen和kvm,是開源免費(fèi)的虛擬化軟件。
vmware是付費(fèi)的虛擬化軟件。
hyper-v比較特別,是微軟windows 2008 R2附帶的虛擬化組件,如果你買了足夠的授權(quán),hyper-v(包括hyper-v 2008 core)都可以免費(fèi)使用。
如果是vmware或hyper-v虛擬windows系統(tǒng),不管是虛擬化軟件本身,還是其中的子系統(tǒng),都要支付許可費(fèi)用。
如果是vmware或hyper-v虛擬linux,虛擬化軟件本身要支付許可費(fèi)用,子系統(tǒng)可以用linux來節(jié)省成本。
如果是xen或kvm虛擬windows,其中的子系統(tǒng)要支付許可費(fèi)用。
如果是xen或kvm虛擬linux,那么虛擬化軟件本身和其中的子系統(tǒng)無需產(chǎn)生任何費(fèi)用。
從性能上來講,虛擬windows,如果都能得到廠商的支持,那么,性能優(yōu)化可以不用擔(dān)心。這幾款軟件全都能達(dá)到主系統(tǒng)至少80%以上的性能(磁盤,CPU,網(wǎng)絡(luò),內(nèi)存),這時建議使用hyper-v來虛擬windows,微軟自身的產(chǎn)品,虛擬windows是絕對有優(yōu)勢的。
如果是虛擬linux,建議首先使用xen,支持linux的半虛擬化,可以直接使用主系統(tǒng)的cpu和磁盤及網(wǎng)絡(luò)資源,達(dá)到較少的虛擬化調(diào)度操作,可以達(dá)到非常高的性能,但xen操作復(fù)雜,維護(hù)成本較高。其次我們推薦kvm來虛擬linux,linux本身支持kvm的virtio技術(shù),可以達(dá)到少量的虛擬化調(diào)度操作,得到較高的系統(tǒng)性能。
不推薦使用hyper-v來虛擬linux,太多的不兼容性導(dǎo)致linux基本無法在hyper-v上跑。
如果以上產(chǎn)品我們不打算買廠商支持,其中vmware和hyper-v,是不建議使用的,主要是授權(quán)問題。
這時就剩下kvm和xen了,如果虛擬windows,建議使用kvm,我們可以從redhat那里免費(fèi)拿到針對windows優(yōu)化過的磁盤和網(wǎng)絡(luò)的驅(qū)動程序,可以達(dá)到較高的性能(幾乎與hyper-v性能持平)。而xen的windows優(yōu)化驅(qū)動不是那么容易就能拿到的(由于redhat以后不支持xen了,看看novell是否放水了,呵呵,就開放程度上來講,redhat要好于novell)。
綜上所述, 在有授權(quán)的情況下,虛擬windows,建議使用hyper-v 在有授權(quán)的情況下,虛擬linux,建議使用xen,如考慮到需要降低管理維護(hù)和學(xué)習(xí)成本,建議使用kvm。
在沒有授權(quán)的情況下,虛擬windows,建議使用KVM
2、KVM基本介紹
在2010年4月發(fā)布的RHEL6.0版本中,去掉了XEN,這也許是第一個不包含Xen Hypervisor的知名linux發(fā)行版。KVM是指基于Linux內(nèi)核的虛擬機(jī)(Kernel-base Virtual Machine),增加到Linux內(nèi)核是Linux發(fā)展的一個重要里程碑,這也是第一個整合到Linux主線內(nèi)核的虛擬化技術(shù)。在KVM模型中,每一個虛擬機(jī)都是一個由Linux調(diào)度程序管理的標(biāo)準(zhǔn)進(jìn)程,你可以在用戶空間啟動客戶機(jī)操作系統(tǒng),一個普通的Linux進(jìn)程有兩種運(yùn)行模式:內(nèi)核和用戶,KVM增加了第三種模式:客戶模式(有自己的內(nèi)核和用戶模式)。
1 KVM虛擬機(jī)的管理工具
準(zhǔn)確的來說,KVM僅僅是Linux內(nèi)核的一個模塊,管理和創(chuàng)建完整的KVM虛擬機(jī),需要更多的輔助工具。
QEMU-KVM:在Linux系統(tǒng)中,首先我們可以用modprobe命令加載KVM模塊,如果用RPM安裝KVM軟件包,系統(tǒng)會在啟動時自動加載模塊,QEMU是一個強(qiáng)大的虛擬軟件,它可以虛擬不同的構(gòu)架。
Virt-manager:盡管QEMU-KVM工具可以創(chuàng)建和管理KVM虛擬機(jī),RedHat為KVM開發(fā)了更多的輔助工具,比如 libvirt libguestfs等,原因是QEMU工具效率不高,不易于使用。
2 安裝配置KVM相關(guān)軟件
2.1系統(tǒng)要求:
處理器需求:需要一臺可以運(yùn)行最新linux內(nèi)核的Intel處理器(含VT虛擬化技術(shù))或AMD處理器(含SVM安全虛擬機(jī)技術(shù)的AMD處理器,也叫AMD-V)
[root@vfeelit ~]# cat /etc/redhat-release
CentOS release 6.4 (Final)
2.2檢查CPU:
[root@vfeelit ~]# egrep ‘vmx|svm’ /proc/cpuinfo
如果輸出的結(jié)果包含VMX,它是Intel處理器虛擬機(jī)技術(shù)標(biāo)志:如果包含SVM,它是AMD處理器虛擬機(jī)技術(shù)的標(biāo)志,如果你什么都沒有得到,那應(yīng)你的系統(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 重啟后確認(rèn)libvirtd是否正常啟動
[root@vfeelit ~]# /etc/init.d/libvirtd restart
正在關(guān)閉 libvirtd 守護(hù)進(jìn)程: [確定]
啟動 libvirtd 守護(hù)進(jìn)程: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': 未知的名稱或服務(wù)
[確定]
6 檢查KVM是否加載成功
顯示結(jié)果如下表示kvm模塊已經(jīng)加載,如果沒有輸出信息,則表示沒有加載成功:
[root@vfeelit ~]# lsmod | grep kvm
kvm_intel 53484 0
kvm 316506 1 kvm_intel
7 檢查KVM是否成功安裝
[root@vfeelit ~]# virsh list --all ##--all關(guān)閉的也會顯示
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)聽端口
二 配置網(wǎng)絡(luò)橋接
參考:http://www.techotopia.com/index.php/Creating_an_RHEL_6_KVM_Networked_Bridge_Interface
1 安裝tunctl:
yum install -y tunctl
2 禁用網(wǎng)絡(luò)管理器:
chkconfig NetworkManager off ##和橋接有沖突,要關(guān)閉
service NetworkManager stop
3 修改eth0為物理網(wǎng)口,br0為橋接網(wǎng)口配置文件:
[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
附加說明:這里配置成橋接方式,實際上本機(jī)的數(shù)據(jù)包發(fā)送是通過br0發(fā)送的,br0的TYPE是Bridge,其它的信息跟配置一個物理網(wǎng)卡一樣,本機(jī)的eth0通過橋接到br0(通過BRIDGE指定)進(jìn)行通信,它根本不需要配置IP信息,實際上數(shù)據(jù)發(fā)送還是通過本機(jī)的物理網(wǎng)卡。
4 最后重啟網(wǎng)絡(luò)
[root@vfeelit network-scripts]# service network restart
5 查看橋接網(wǎng)絡(luò)
[root@vfeelit ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.0021cc6b6f2c no eth0
virbr0 8000.525400ac7ebe yes virbr0-nic
接口eth0通過br0進(jìn)行橋接。birbr0-nic通過virbr0進(jìn)行橋接,這個是默認(rèn)的設(shè)置,當(dāng)使用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)建磁盤,默認(rèn)是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 工具安裝虛擬機(jī)后,在目錄/etc/libvirt/qemu/下生成xml 配置文件。
[root@vfeelit ~]# cd /etc/libvirt/qemu
[root@vfeelit ~]# cat centos64.xml
虛擬機(jī)類型
centos 虛擬機(jī)名稱
54da30ed-150d-514e-9803-4dc01bd50488 uuid唯一標(biāo)示
1048576 指定虛擬機(jī)內(nèi)存大小,給出了單位
2 虛擬機(jī)占用虛擬cpu個數(shù),這里指物理cpu的核心數(shù)量
hvm 指定虛擬系統(tǒng)架構(gòu)
啟動類型,從硬盤啟動
/usr/libexec/qemu-kvm 驅(qū)動程序,同上,使用的是qemu-kvm
指定磁盤類型
指定磁盤格式,這里是raw,也支持qcow2.
img文件路徑
磁盤文件標(biāo)示,驅(qū)動類型
自動生成,可以手動指定。
橋接到哪一個接口
3 使用virsh工具管理生成的虛擬機(jī)
[root@vfeelit ~]# virsh start centos64 啟動虛擬機(jī) reboot start shutdown
[root@vfeelit ~]# virsh list 列出當(dāng)前運(yùn)行的虛擬機(jī)
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在重啟后,虛擬機(jī)也隨著自動重啟。
動態(tài)查詢kvm資源占用情況,每一臺VM,對應(yīng)一個qemu-kvm進(jìn)程
[root@vfeelit ~]# top -d 1 | grep kvm
4 截取的kvm進(jìn)程信息
[root@vfeelit ~]# ps -aux | grep kvm
其他問題
1、圖形化配置:從菜單中啟動,或者運(yùn)行virt-manager進(jìn)入圖形管理界面,比較簡單,不過img的位置需要注意一下,kvm安裝后會有一個默認(rèn)位置,不注意的話容易占滿空間。或者直接硬盤分區(qū)時單獨給/var分一個區(qū)。
2、虛擬機(jī)重新配置:
虛擬機(jī)的配置文件保存在/etc/libvirt/qemu目錄下,擴(kuò)展名是xml。修改相應(yīng)的文件即可重新配置虛擬機(jī)。
3、虛擬機(jī)備份及恢復(fù):
備份:拷貝/etc/libvirt/qemu目錄下的xml配置文件,以及xml中設(shè)置的img文件。
恢復(fù):進(jìn)入virsh,執(zhí)行define 目錄下的xml文件路徑
virsh # define /etc/libvirt/qemu/winxp.xml
4、開機(jī)自動啟動虛擬機(jī):
[root@vfeelit qemu]# virsh autostart Winxp
5、克隆KVM虛擬機(jī):
[root@vfeelit ~]# virt-clone -o Winxp -n winxpclong -f /var/lib/libvirt/images/winxpclong.img
(-o 原始客體的名稱,-n新客戶端的名稱,-f作為新客戶端磁盤映像的新文件)
6、虛擬機(jī)意外關(guān)機(jī)報下述錯誤:
[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 關(guān)閉一個域
start 開始一個(以前定義的)非活躍的域
reboot 重新啟動一個域
suspend 掛起一個域
resume 重新恢復(fù)一個域
vncdisplay vnc 顯示
使用save來備份當(dāng)前虛擬機(jī)的狀態(tài):
[root@vfeelit images]# virsh save –bypass-cache RedHat /var/lib/libvirt/images/test.img –running
上面這個命令將RedHat的當(dāng)前狀態(tài)保存到/opt/vm2_save文件中。–running參數(shù)表示下次restore回來的時候能夠自動啟動RedHat。
這個命令會導(dǎo)致RedHat被關(guān)閉。
現(xiàn)在還原:必須先關(guān)閉虛擬機(jī)
[root@vfeelit images]# virsh shutdown RedHat
[root@vfeelit images]# virsh restore /var/lib/libvirt/images/test.img –bypass-cache –running (還原時不要指定虛擬機(jī)名稱)
3、KVM自動部署及基本操作
隨著 IT 產(chǎn)業(yè)的不斷發(fā)展, IT 技術(shù)的不斷革新,近幾年虛擬化、云計算技術(shù)火熱,那我們今天來研究一下虛擬化技術(shù),到底什么是虛擬化技術(shù)呢?我們?yōu)槭裁匆褂锰摂M化呢?
虛擬化 是指計算元件在虛擬的基礎(chǔ)上而不是真實的基礎(chǔ)上運(yùn)行,是一個為了簡化管理,優(yōu)化資源的解決方案。
虛擬化技術(shù) 可以擴(kuò)大硬件的容量,簡化 軟件 的重新配置過程。 CPU 的 虛擬化技術(shù) 可以單 CPU 模擬多 CPU 并行,允許一個平臺同時運(yùn)行多個操作系統(tǒng),并且 應(yīng)用程序 都可以在相互獨立的空間內(nèi)運(yùn)行而互不影響,從而顯著提高計算機(jī)的工作效率。
目前主流的虛擬化技術(shù)主要有: KVM 、 Xen 、 VMware 、 VirtualBox ,虛擬化技術(shù)也越來越廣泛的應(yīng)用在企業(yè)中,今天我們來研究和復(fù)習(xí)一下 KVM 虛擬化集群的搭建。
1、系統(tǒng)版本:
CentOS 6.4 x86_64
2、處理器需求:
需要一臺可以運(yùn)行最新 linux 內(nèi)核的 Intel 處理器(含 VT 虛擬化技術(shù))或 AMD 處理器(含 SVM 安全虛擬機(jī)技術(shù)的 AMD 處理器,也叫 AMD-V )
[root@kvm~]# cat /etc/redhat-release
CentOSrelease 6.4 (Final)
3、CPU 支持需求 :
[root@localhost~]# egrep 'vmx|svm' /proc/cpuinfo
如果輸出的結(jié)果包含 VMX ,它是 Intel 處理器虛擬機(jī)技術(shù)標(biāo)志:如果包含 SVM ,它是 AMD 處理器虛擬機(jī)技術(shù)的標(biāo)志,如果你什么都沒有得到,那應(yīng)你的系統(tǒng)并沒有支持虛擬化的處理,不能使用 KVM ,另處 linux 發(fā)行版本必須在 64bit 環(huán)境中才能使用 KVM 。
4、KVM正式安裝:
這里直接使用腳本,比較方便快捷,了解更多可以參官方網(wǎng)站。(僅供參考,后期不斷優(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簡單安裝到此結(jié)束,安裝完畢,怎樣來創(chuàng)建一個虛擬機(jī)并且安裝呢,首先我們把需要安裝的系統(tǒng)ISO鏡像上傳到/data/iso目錄,然后新建/data/kvm虛擬機(jī)安裝目錄,然后啟動如下腳本:
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機(jī))使用VNC客戶端連接KVM服務(wù)端5910端口,進(jìn)行安裝系統(tǒng)即可。
當(dāng)安裝完一臺后,如何快速啟動第二臺呢,這里只需要復(fù)制我們剛安裝的第一臺的兩個文件(/data/kvm/centos01.img /etc/libvirt/qemu/centos01.xml),然后做相應(yīng)修改即可。
204720916.png
還可以使用命令克隆:
nohup virt-clone -o centos01 -n centos02 -f /data/kvm/centos02.img &
這樣就配置完畢,怎樣重啟兩臺虛擬機(jī)呢?命令如下:
(參數(shù)主要有reboot、start、shutdown)
virsh reboot centos01 (重啟)
virsh reboot centos02 (重啟)
virsh start centos01 (啟動)
virsh start centos02 (啟動)
當(dāng)我們啟動新克隆的兩臺虛擬機(jī),我們會發(fā)現(xiàn)網(wǎng)卡無法啟動,原因是因為克隆改變新虛擬機(jī)的MAC地址,故eth0無法啟動,新的虛擬機(jī)后網(wǎng)卡變成了eth1,那我們怎樣修改為eth0呢,使用如下腳本,執(zhí)行,然后重啟網(wǎng)卡(或者重啟系統(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簡單操作就先介紹到這里,更多功能和維護(hù)在后期會更新。
本文參考如下文章,非常感謝:
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
解決方法:遷移與被遷移主機(jī)的共享目錄一定要一樣.即server1目錄為/img server2目錄也要為/img.
4.Unable to migrate guest: unable to connect to server at 'kvm3:49153': Connection refused
解決方法:1.開啟防火墻上端口或關(guān)閉防火墻.
2.在virt-manager的遷移中添加遷移端口.
5.Unable to migrate guest: Timed out during operation: cannot acquire state change lock
解決方法:...求科普..而且是大部分虛擬機(jī)都可以遷移就一個不成..找不到北ing...
1.虛擬機(jī)起不來的情況下.使用kill -9 `ps -ef|grep 'libvirtd --daemon'|grep -v grep |awk '{print $2}'`殺死libvirt --daemon進(jìn)程并重啟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不能。顯示該錯誤如上。
解決方法:進(jìn)入/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管理界面加入當(dāng)前vdsm主機(jī)時出現(xiàn)錯誤。原因之一為vdsm-cli未安裝。安裝即可。
8.在ovirt-engine中添加data/nfs作為存儲域時并不能成功。
解決方法:1.可以試試查看一下將要共享的文件夾權(quán)限是否是vdsm:kvm。若不是使用chown -R命令即可。
authentication name
9.vdsm在加入ovirt時會使用sasl再次加密libvirt,所以使用virt-manager連接libvirt時需要輸入 authentication name & passowrd。
解決方法:使用saslpassword2 -a命令創(chuàng)建另一組認(rèn)證名和密碼用于virt-manager對libvirt的訪問即可。
命令格式: saslpasswd2 -a libvirt 用戶名
10.部分主機(jī)創(chuàng)建虛擬機(jī)成功,開啟虛擬機(jī)時出現(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這個文件夾的權(quán)限是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設(shè)置問題才報錯的.
我直接覆蓋了libvirtd.conf qemu.conf以及vdsm.conf文件.最近權(quán)限問題整的我焦頭爛額啊.以后再找具體錯誤.
1.系統(tǒng)(處理器)需求?
你將需要一臺運(yùn)行最新Linux內(nèi)核的Intel處理器(含VT虛擬化技術(shù))或AMD處理器(含SVM安全虛擬機(jī)技術(shù)的AMD處理器, 也叫AMD-V)。
2.什么是Intel VT/AMD-V?
Intel VT和AMD’s AMD-V是一套與支持該技術(shù)的虛擬機(jī)監(jiān)視器相結(jié)合的硬件增強(qiáng)特性(指令集擴(kuò)展)。kvm可在原始硬件速度下通過運(yùn)行完全隔離的虛擬機(jī)來執(zhí)行任務(wù)。
3.如何確認(rèn)處理器含有Intel VT或AMD-V技術(shù)?
在最新的Linux內(nèi)核下運(yùn)行: egrep ‘^flags.*(vmx|svm)’ /proc/CPUinfo
如有顯示,您的處理器具有VT功能。你也可以通過廠商網(wǎng)站查詢處理器型號的名稱(在/proc/cpuinfo)。
注:一些廠商禁止了機(jī)器BIOS中的VT選項, 這種方式下VT不能被重新打開。
./proc/cpuinfo僅從Linux 2.6.15(Intel)和Linux 2.6.16(AMD)開始顯示虛擬化方面的信息. 請使用uname -r命令查詢您的內(nèi)核版本。
如有疑問, 請聯(lián)系硬件廠商。
4.kvm支持哪些用戶空間工具?
kvm使用稍改動的qemu程序來創(chuàng)建虛擬機(jī). 一旦運(yùn)行后, 虛擬機(jī)是一個標(biāo)準(zhǔn)的進(jìn)程. 你可以使用top(1),kill(1),taskset(1)和類似的工具來管理虛擬機(jī)。
5.kvm支持哪些虛擬磁盤格式?
kvm從qemu繼承了豐富的磁盤格式, 包括裸映象(raw images), 原始qemu格式(qcow), VMware格式和更多。
6.kvm和Xen有何區(qū)別?
Xen是一個外部的hypervisor程序(虛擬機(jī)管理程序);它能夠控制虛擬機(jī)和給多個客戶機(jī)分配資源. 另一方面, kvm是linux的一部分, 可使用通常的linux調(diào)度器和內(nèi)存管理. 這意味著kvm更小更易使用。
另一方面, Xen同時支持全虛擬化和半虛擬化(修改過的客戶機(jī)能有更好的性能). kvm當(dāng)前不支持半虛擬化。
7.kvm和VMware有何區(qū)別?
VMware是一個專利產(chǎn)品. kvm是一個遵守GPL的自由(開源)軟件。
8.kvm和QEMU有何區(qū)別?
Qemu使用模擬器; kvm使用處理器擴(kuò)展實現(xiàn)虛擬化。
Array.kvm有Windows上的版本嗎?
當(dāng)前沒有。
10.kvm支持哪些內(nèi)核版本?
kvm可以運(yùn)行在最新的內(nèi)核版本下(2.6.16或更高, 最好是用最新的內(nèi)核)
11.我需要多什么RAM(內(nèi)存)才能運(yùn)行kvm?
你需要足夠的內(nèi)存在主機(jī)上運(yùn)行單個或多個虛擬機(jī). 建議主機(jī)內(nèi)存至少1GB。
12.KVM上的虛擬機(jī)支持哪些操作系統(tǒng)?
我們已經(jīng)測試了Linux(32/64位)和Windows(32位), 其它也許能夠運(yùn)行或不能運(yùn)行。不支持64位的Windows操作系統(tǒng), 該問題會在qemu-0.83發(fā)布和整合后修復(fù)。
Intel處理器上幾個Linux發(fā)行版在啟動時候會掛起。工作區(qū)需要取消grub中的splashscreen選項。
13.KVM支持動態(tài)遷移功能嗎(在不離線的情況下把虛擬機(jī)從一個主機(jī)移到另一個主機(jī)上)?
現(xiàn)在kvm支持非動態(tài)遷移,當(dāng)內(nèi)存數(shù)據(jù)需轉(zhuǎn)移的時候,系統(tǒng)需要停止。動態(tài)遷移功能正在開發(fā)當(dāng)中。
14.kvm能夠在64為主機(jī)上運(yùn)行32位的客戶機(jī)嗎? 什么是PAE?
kvm支持在64位主機(jī)上運(yùn)行32位客戶機(jī), 也可以是任何PAE或非PAE客戶機(jī)和主機(jī)組合。但不支持在32位主機(jī)上運(yùn)行64位客戶機(jī)。
15.如果我對一個VM進(jìn)程使用kill -Array將會發(fā)生什么?
從客戶機(jī)的角度來看,就如你猛地把電源線從主機(jī)上拔出一樣。從主機(jī)的角度來看,進(jìn)程被殺掉,進(jìn)程占用的所有資源被施放。
16.kvm支持SMP主機(jī)嗎?
支持。
17.如何安裝windows客戶機(jī)?
當(dāng)前Windows客戶機(jī)安裝存在一點問題,問題在APIC的實現(xiàn)上?,F(xiàn)在APIC由qemu來模擬, 而qemu還沒有完全整合到kvm虛擬cpu中。我們正加緊在kvm中實現(xiàn)APIC功能。
到現(xiàn)在, 啟動qemu請使用-no-acpi參數(shù),如果你的客戶機(jī)需使用APIC HAL,建議參考下面步驟:
1. 關(guān)閉kvm運(yùn)行客戶機(jī)(-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提供哪些產(chǎn)品?
umranet是一家由Qequoia Capital和Norwest Venture Partners (NVP)投資的初創(chuàng)公司,當(dāng)前公司處于準(zhǔn)備運(yùn)營當(dāng)中(正在加緊開發(fā)公司的產(chǎn)品)。(T002)
5、KVM使用經(jīng)驗
虛擬化技術(shù)已經(jīng)成為未來計算機(jī)技術(shù)的一個重要的發(fā)展方向。linux在虛擬化方面已經(jīng)有了很多中解決方案: VMware、 VirtualBox、Xen和KVM。KVM是一個全虛擬化的解決方案??梢栽趚86架構(gòu)的計算機(jī)上實現(xiàn)虛擬化功能。但KVM需要CPU中虛擬化功能的支持,只可在具有虛擬化支持的CPU上運(yùn)行。Xen也是Linux下的一個虛擬化解決方案,也將很快被編入內(nèi)核中。Xen的實現(xiàn)方法是,運(yùn)行支持Xen功能的kernel……
一.KVM簡介
虛擬化技術(shù)已經(jīng)成為未來計算機(jī)技術(shù)的一個重要的發(fā)展方向.linux在虛擬化方面已經(jīng)有了很多中解決方案,:VMware,VirtualBox,Xen和KVM。
KVM是一個全虛擬化的解決方案??梢栽趚86架構(gòu)的計算機(jī)上實現(xiàn)虛擬化功能。但KVM需要CPU中虛擬化功能的支持,只可在具有虛擬化支持的CPU上運(yùn)行,即具有VT功能的Intel CPU和具有AMD-V功能的AMD CPU。
Xen與KVM的比較
Xen也是Linux下的一個虛擬化解決方案,也將很快被編入內(nèi)核中。Xen的實現(xiàn)方法是,運(yùn)行支持Xen功能的kernel,這個kernel是工作在Xen的控制之下,叫做Domain0,使用這個kernel啟動機(jī)器后,你可以在這個機(jī)器上使用qemu軟件,虛擬出多個系統(tǒng)。Xen的缺點是,如果你需要更新Xen的版本,你需要重新編譯整個內(nèi)核,而且,稍有設(shè)置不慎,系統(tǒng)就無法啟動。
相比較,KVM就簡化的多了。它不需要重新編譯內(nèi)核,也不需要對當(dāng)前kernel做任何修改,它只是幾個可以動態(tài)加載的.ko模塊。它結(jié)構(gòu)更加精簡,代碼量更小,所以,出錯的可能性更小。并且在某些方面,性能比Xen更勝一籌。
二.KVM的使用
現(xiàn)在以Turbolinux 11版本為基礎(chǔ),介紹KVM的使用方法。
在安裝之前,你需要先確認(rèn),你的CPU是否支持虛擬化技術(shù),執(zhí)行:
# egrep '^flags.*(vmx|svm)' /proc/cpuinfo
如果有輸出返回,則表示,你的CPU支持虛擬化技術(shù)。
1.KVM的安裝
從官方網(wǎng)站下載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/目錄下.其他相關(guān)文件會安裝到/usr/local/kvm-33/目錄下。
將kvm相關(guān)目錄連接到系統(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)建網(wǎng)絡(luò)配置腳本
# 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內(nèi)存.使用gtes11.img作為它的第一塊硬盤,使用Turbolinux10.5的disc1作為它的光盤。
并從光盤引導(dǎo).它有一塊rtl8139的網(wǎng)卡,MAC地址為:00:00:00:00:99:01,并把這個網(wǎng)卡與主機(jī)的tap0接口連接。
tap0接口使用/etc/qemu-ifup腳本進(jìn)行初始化.虛擬系統(tǒng)的輸出作為一個vnc服務(wù)器,綁定在主機(jī)的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]: 設(shè)置虛擬系統(tǒng)的引導(dǎo)順序,a為軟驅(qū),c為硬盤,d為光驅(qū),n為網(wǎng)絡(luò)。
- 內(nèi)存大小: 設(shè)置虛擬系統(tǒng)使用的內(nèi)存大小,單位為MB。
- 語言: 設(shè)置虛擬系統(tǒng)鍵盤類型。
-et nic[,vlan=n][,macaddr=addr][,model=type]
建立一個虛擬網(wǎng)卡,并把它連接到VLAN的n端口上。
-net tap[,vlan=n][,fd=h][,ifname=name][,script=file]
把主機(jī)的TAP網(wǎng)絡(luò)接口連接到VLAN的n端口上,并使用script指定的腳本進(jìn)行初始化。
6、VNC Viewer 連接成功后閃退的解決方法
2013年12月3日Linux技術(shù)VNCVNC ViewerVNC閃退1 Comment
VNC是個不錯的工具,今天掏出VNC Viewer來連接一臺N久沒登陸的服務(wù)器看看,輸入密碼連上后直接閃退,可能是ColourLevel的問題。
依次點Option-->Advanced-->Expert找到ColourLevel,默認(rèn)值是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,就可以啟動圖形界面了,但是默認(rèn)的圖形界面是很簡陋的界面,可以根據(jù)需要再安裝GNOME或KDE桌面環(huán)境
安裝X圖形界面
#可查詢哪些組件是否已經(jīng)安裝(可用來對照組件名稱)
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、設(shè)置開機(jī)自動啟動,修改/etc/inittab
id:3:initdefault: ------> id:5:initdefault:
3、init 5
默認(rèn)桌面環(huán)境選擇
一、設(shè)置GNOME或者KDE為默認(rèn)的啟動桌面環(huán)境
方法1:修改/etc/sysconfig/desktop,根據(jù)需要將“DESKTOP”后面的參數(shù)設(shè)置為KDE或GNOME。
方法2:在當(dāng)前用戶目錄下建立“.xinitrc”這個文件,文件的內(nèi)容就一行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中的任何一個,
當(dāng)然如果你是在字符界面之間互相切換就沒必要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)建虛擬機(jī)時,需要配置vCPU資源。 因此vCPU是虛擬機(jī)的部件。 因此脫離VM,談?wù)搗CPU是沒有意義的。
虛擬化管理系統(tǒng)如何調(diào)度vCPU,取決于系統(tǒng)內(nèi)的虛擬機(jī)數(shù)目以及虛擬機(jī)配置的vCPU的情況。
大致的情況如下:
1、當(dāng)系統(tǒng)內(nèi)VM所需的vCPU總數(shù)少于物理CPU的核數(shù)(包括超線程Core)時,虛擬化管理系統(tǒng)為vCPU分配的資源不超過一個物理CPU核。 vCPU與物理核的分配關(guān)系可以是綁定的,也可能是動態(tài)的。
比如服務(wù)器有20個核心,你創(chuàng)建了2個VM,每個VM 4個vCPU,那么這兩個VM最多能夠使用服務(wù)器的8個核心。
2、當(dāng)系統(tǒng)內(nèi)的VM所需要的vCPU核大于物理CPU核數(shù)時,虛擬化管理系統(tǒng)首先按照時間片輪流調(diào)度一遍,然后如果還有剩余的CPU資源,則給所需要的vCPU。 比如系統(tǒng)配置了40個vCPU,只有20個物理核。那么平均每個vCPU獲取一個核心50%的資源。由于一些VM忙,一些VM空閑,虛擬化系統(tǒng)會在一個調(diào)度周期內(nèi),劃分出若干時間片,輪流給每個vCPU使用。忙的vCPU可以使用完整個時間片,而閑的vCPU用不完整個時間片,會提前釋放資源。這樣在一個調(diào)度周期內(nèi),對每個vCPU都調(diào)度一遍后還有空閑的時間,調(diào)度器會把用這剩余的資源去調(diào)度忙的vCPU。 這樣兼顧公平和效率。 這中調(diào)度算法具體下來,大致是如下效果:系統(tǒng)有1個CPU 2.0 Ghz,兩個VM,分配1個vCPU。 如果VM1 和 VM2都忙,那么各自相當(dāng)于擁有一個1.0 Ghz的CPU。 如果VM1很忙,VM1只需要 500Mhz的處理能力,那么在VM1看來,相當(dāng)于暫時獲得了 1.5Ghz的處理器。
3、通過對Xen的測試,系統(tǒng)所有虛擬機(jī)的vCPU的總數(shù)目小于和等于CPU核數(shù)時,VM的性能是比較穩(wěn)定的。 VM的vCPU基本上綁定到了一個CPU核。 當(dāng)vCPU數(shù)目大于物理核數(shù)時,VM的性能穩(wěn)定性變差。
本文版權(quán)歸黑馬程序員云計算大數(shù)據(jù)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!
作者:黑馬程序員云計算大數(shù)據(jù)培訓(xùn)學(xué)院
首發(fā):http://cloud.itheima.com/
云計算大數(shù)據(jù)之FTP文件上傳規(guī)范
2017-12-18云計算大數(shù)據(jù):ELK技術(shù)棧介紹
2017-12-18云計算大數(shù)據(jù)培訓(xùn)之大數(shù)據(jù)Hadoop生態(tài)圈:Pig(2)
2017-09-01云計算大數(shù)據(jù)培訓(xùn)之大數(shù)據(jù)Hadoop生態(tài)圈:Pig(1)
2017-09-01云計算大數(shù)據(jù)培訓(xùn)之Spark調(diào)優(yōu)(4)
2017-09-01云計算大數(shù)據(jù)培訓(xùn)之Spark調(diào)優(yōu)(3)
2017-09-01