CentOS 5.6下創建KVM虛擬機

【51CTO專家投稿】RedHat 的下一代旗艦產品RedHat Enterprise Linux 6只包含 KVM,這一點 RedHat 官方已經在很久以前、在不同場合都確認過。KVM 發展很快,穩定性有了很大提高,隨着 RHEL 6 的正式到來,KVM 應用到生產環境的日子應該不遠了。目前 KVM 應用比較少,一個是根據一些測試和學術論文顯示,KVM在網絡性能、擴展和穩定性方面和Xen還有差距,另一個原因就是對硬件要求高(CPU 需要 Intel VT 或 AMD SVM 的支持)。不過現在硬件發展速度很快,以後應該不會有這個問題。

我們可以用KVM做什麼

由於 KVM 支持全虛擬,所以可以在上面安裝各類操作系統,再加上它跟FreeBSD的jail一樣,屬於系統自帶的,我們可以用其搭建屬於自己的開發展測試環境。

安裝前的準備工作,我們先看看硬件配置情況,CPU和內存:

1001560.jpg
圖 這個配置玩虛擬化足夠了

強烈建議以下操作在真實服務器上進行,全虛擬化對CPU負載還是比較大的。如果學習的話可以拿臺式機代替。

以下步驟將在CentOS 5.6上搭建起你的KVM虛擬機。

首先要保證你的CPU支持虛擬化。執行以下命令查看CPU的flag信息,裏面包含svm的flag就說明支持虛擬化:

[root@localhost ~]# egrep '(vmx|svm)' --color=always /proc/cpuinfo
flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy misalignsse
flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy misalignsse

安裝KVM運行所需要的軟件包:

yum install kvm kmod-kvm qemu kvm-qemu-img virt-viewer virt-manager ibvirt libvirt-python python-virtinst

或者用下面這句也行:

yum groupinstall KVM

另外,如果後面想用virt-manager圖形化安裝和管理虛擬機的話,CentOS 5.6需要作一些配置和改動。由於我在安裝前就選擇了gnome圖形化界面,所以我想用Xmanager 3.0圖形化管理此機器,過程如下:

一、添加XDMCP協議支持,讓服務器打開177端口

我們可以更改/etc/gdm/custom.conf文件,在

[xdmcp]項下添加

Enable=1

二、服務器自身關閉iptables及SElinux

三、保證服務器以圖形化界面啓動,即運行在5模式下

這個我們可以能過更改/etc/inittab文件來實現,參考Linux運行級概述

做完這些後重啓服務器即可,然後我們就可以通過Xmanager 3的X-browser來遠程管理CentOS 5.6的桌面了。

相關閱讀:Xmanager 3.0企業版實用技巧集錦

當然了,如果要用root登錄,對於GDM添加:

vi /etc/gdm/custom.conf [security] AllowRemoteRoot=true

#vim /etc/securetty 結尾增加

pts/0 pts/1 pts/2 pts/3 pts/4

以下是更改CentOS 5.6的認證模塊

vim /etc/pam.d/login 註釋第一行 #auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so vim /etc/pam.d/remote 註釋第一行 #auth    required   pam_securetty.so

重新啓動服務器即可,可用lsof -i:177命令查看端口是否開放。

在服務器上增加一個br0網橋設備,方便與虛擬機直連,步驟如下:

一、首先修改網卡文件,vim /etc/sysconfig/network-scripts/ifcfg-eth0,作如下修改:

DEVICE=eth0
#BOOTPROTO=static
#BROADCAST=192.168.1.255
HWADDR=00:E0:62:12:7B:65
#IPADDR=192.168.1.101
#NETMASK=255.255.255.0
#NETWORK=192.168.1.0
ONBOOT=yes
BRIDGE=br0

二、增加網橋設備的文件,如vim /etc/sysconfig/network-scripts/ifcfg-br0,代碼如下:

DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
BROADCAST=192.168.0.255
IPADDR=192.168.1.101
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes

修改完畢後重啓網絡

service network restart

或者

/etc/init.d/network restart

查看一下網絡設置是否生效:

[root@localhost ~0m]# ifconfig 
br0       Link encap:Ethernet  HWaddr 00:E0:62:12:7B:65  
          inet addr:192.168.1.101  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:29 errors:0 dropped:0 overruns:0 frame:0
          TX packets:53 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2034 (1.9 KiB)  TX bytes:10052 (9.8 KiB)

eth0      Link encap:Ethernet  HWaddr 00:E0:62:12:7B:65  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:494 errors:0 dropped:0 overruns:0 frame:0
          TX packets:554 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:43921 (42.8 KiB)  TX bytes:67020 (65.4 KiB)
          Interrupt:50 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:16 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:3208 (3.1 KiB)  TX bytes:3208 (3.1 KiB)

virbr0    Link encap:Ethernet  HWaddr 00:00:00:00:00:00  
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:26 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:4094 (3.9 KiB)

接下來的話,我們就可以直接在服務器上用圖形化命令Virt-manager來創建一個CentOS 5.6的虛擬機了。由於要用到物理機本身的光驅,所以這裏需要掛載下:

mount /dev/cdrom /mnt

記得將CentOS 5.6的DVD光盤放進光驅裏。

然後在終端下執行命令virt-manager創建虛擬機,由於操作與vmware server類似,都是基於圖形化的操作。過程比較簡單,我這裏也不用文字詳細說明了,相關說明可以參考RHEL 6上搭建KVM虛擬機一文。virt-manager效果圖如下:

1001561.jpg

創建第一臺虛擬機的圖如下:

1001562.jpg

我們成功創建完第一個虛擬機後,我由於測試的需要,還需要創建三個虛擬機,我們可以在終端下依次輸入命令,複製虛擬機:

virt-clone --connect=qemu:///system -o centos1 -n centos2 -f /datata/kvm/centos2.img
virt-clone --connect=qemu:///system -o centos1 -n centos3 -f /datata/kvm/centos3.img
virt-clone --connect=qemu:///system -o centos1 -n centos4 -f /datata/kvm/centos4.img

-o表示舊的虛擬機名稱,-n表示新的虛擬機名稱,-f表示新的虛擬機路徑。

我們全部運行後,可以看下virt-manager的效果圖,如下:

1001563.jpg

系統穩定運行一段時間後,我們可以通過uptime命令觀測系統負載,它們不是特別大。

[root@kvm centos10m]# uptime
00:43:08 up 2:04, 1 user, load average: 0.92, 0.77, 0.81

這樣的話,我們就在這臺服務器上成功運行了四臺64bit CentOS 5.6的機器,KVM環境搭建成功。

作者簡介:餘洪春(博客),網名撫琴煮酒,英文名Andrew.Yu,武漢某外企高級Linux/Unix系統管理員、項目實施工程師,紅帽RHCE講師,擅長負載均衡高可用和中小型證券類和商務網站架構,目前關注網站架構研究及網絡安全。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章