linux 虛擬化實戰 --kvm (基於內核的虛擬機)

 

環境:

 

CentOS5.5  桌面環境:CentOS5.5(可以爲Ubuntu桌面)

2安裝 KVM

CentOS 5.2 KVM主機:

運行

system-config-securitylevel

並且開啓SELinux(如果你的SELinux被禁用,virt-install將不會正常工作)。

然後檢查CPU是否支持硬件虛擬化-運行命令

egrep ‘(vmx|svm)’ –color=always /proc/cpuinfo

應該會顯示如下信息:

[root@server1 ~]# 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
[root@server1 ~]#

如果什麼也沒有顯示的話,就說明你的處理器不支持硬件虛擬化技術,下面的內容就不適合你了。

下面我們爲軟件包導入GPG key

rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY*

然後安裝KVM和virtinst(一個創建虛擬機的工具),我們運行

yum install kvm kmod-kvm qemu libvirt python-virtinst

然後重新啓動系統:

reboot

啓動過後, KVM的內核模塊將會被加載:

lsmod | grep kvm

[root@server1 ~]# lsmod | grep kvm
kvm_amd                50452  0
kvm                   109264  1 kvm_amd
[root@server1 ~]#

(這個輸出結果是一臺擁有AMD-V處理器的系統,如果你的電腦使用的是Intel VT的CPU,將會顯示類似kvm_intel字符)

使用下列命令檢查KVM是否成功安裝

virsh -c qemu:///system list

將會顯示如下結果:

[root@server1 ~]# virsh -c qemu:///system list
Id Name                 State
———————————-

[root@server1 ~]#

 

如果在這裏顯示的是一個錯誤的信息,說明有些東西出現了問題。

下面我們需要在我們的服務器上設置一個網橋,就可以使我們的虛擬機從其他主機中讀取數據。

要做到這一點,我們安裝bridge-utils工具。。。。。。

yum install bridge-utils

… 並且配置一個網橋從/etc/sysconfig/network-scripts/ifcfg-eth0參考BOOTPROTO, BROADCAST, IPADDR, NETMASK和NETWORK等值來創建文件/etc/sysconfig/network-scripts/ifcfg-br0 :

vi /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE=br0

TYPE=Bridge

BOOTPROTO=static

BROADCAST=192.168.0.255

IPADDR=192.168.0.100

NETMASK=255.255.255.0

NETWORK=192.168.0.0

ONBOOT=yes

修改/etc/sysconfig/network-scripts/ifcfg-eth0 as follows (取消註釋BOOTPROTOBROADCASTIPADDRNETMASK, 和NETWORK 最後添加 BRIDGE=br0):

vi /etc/sysconfig/network-scripts/ifcfg-eth0

# Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+

DEVICE=eth0

#BOOTPROTO=static

#BROADCAST=192.168.0.255

HWADDR=00:10:A7:05:AF:EB

#IPADDR=192.168.0.100

#NETMASK=255.255.255.0

#NETWORK=192.168.0.0

ONBOOT=yes

BRIDGE=br0

重新啓動網絡…

/etc/init.d/network restart

… 運行

ifconfig

現在應該顯示網橋(br0):

[root@server1 ~]# ifconfig
br0       Link encap:Ethernet  HWaddr 00:10:A7:05:AF:EB
inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0
inet6 addr: fe80::210:a7ff:fe05:afeb/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:17 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:1160 (1.1 KiB)  TX bytes:14875 (14.5 KiB)

eth0      Link encap:Ethernet  HWaddr 00:10:A7:05:AF:EB
inet6 addr: fe80::210:a7ff:fe05:afeb/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:13662 errors:7 dropped:160 overruns:4 frame:0
TX packets:11646 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:15144608 (14.4 MiB)  TX bytes:1379942 (1.3 MiB)
Interrupt:74 Base address:0xcc00

lo        Link encap:Local Loopback
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:16436  Metric:1
RX packets:38 errors:0 dropped:0 overruns:0 frame:0
TX packets:38 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4308 (4.2 KiB)  TX bytes:4308 (4.2 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
inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:35 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b)  TX bytes:9987 (9.7 KiB)

[root@server1 ~]#

 

3 創建虛擬機:(kvm ,img based)

 

首先wget 下載你想要安裝的鏡像

下載下來後,執行安裝,利用virt-install 指令:

 

virt-install qemu:///system --name CentOS --ram 512 --cpuset=1,3,5 and 7 --accelerate 
--disk path=/docin/VirtualCentOS/CentOS.img,size=50 
--network bridge:br0 
--cdrom /home/houzhaowei/centosISO/CentOS-5.5-x86_64-bin-DVD-1of2.iso --vnc
 

 

其中都有哪些指令 輸入man virt-install 可查看,說的非常清楚。

如果用光盤安裝, 把 --cdrom 指向cdrom 即可。

 

輸出結果如下所示:

[root@server1 ~]# virt-install –connect qemu:///system -n vm10 -r 512 –vcpus=2 -f ~/vm10.qcow2 -s 12 -c ~/debian-500-amd64-netinst.iso –vnc –noautoconsole –os-type linux –os-variant generic26 –accelerate –network=bridge:br0 –hvm

Starting install…
Creating storage file…  100% |=========================|  50 GB    00:00
Creating domain…                                                 0 B 00:00
Domain installation still in progress.  You can reconnect to
the console to complete the installation process.
[root@server1 ~]#

表示鏡像和域創建完畢,可以準備安裝。

此時問題就出來了:本機linux 沒有圖形界面,該怎麼進行安裝?解決方案是:用另一臺圖形化機器的virt-manager 來連接客戶機的kvm。

 

4 在你的CentOS Desktop上安裝virt-manager

 

如果你安裝了qemu 和libvirt 則執行:

virt-manager

會出現

選擇文件->新建連接

選擇qemu 並在主機名上輸入你想連接主機的ip。

連接上後會發現有一個主機在running 然後在上面點右鍵選擇“打開”

 

會看到控制檯:

會出現安裝界面(由於我的已經安裝完了,所以進去的直接是系統界面。)

從概況  和 硬件  選項中可以看到當前虛擬機的信息。

okay 圖形出來了 ,接着就按照安裝CentOS的圖形界面提示進行安裝吧(和真實機安裝一樣。)

 

5 管理KVM客戶機

CentOS 5.5 KVM 主機:

可以通過 virsh命令管理KVM客戶機,”virtual shell”。連接到virtual shell,運行

virsh –connect qemu:///system

下面就是virtual shell的顯示界面:

[root@server1 ~]# virsh –connect qemu:///system
Welcome to virsh, the virtualization interactive terminal.

Type:  ’help’ for help with commands
‘quit’ to quit

virsh #

現在你可以在virtual shell中輸入命令來管理你的客戶機,運行:

help

獲得更多的命令:

virsh # help

 

會出現命令列表,很通俗易懂。

virsh #

list

顯示所有正在運行的客戶機;

list –all

顯示所有客戶機,正在運行的和沒有運行的:

virsh # list –all
Id Name                 State
———————————-
2 CentOS               running

virsh #

如果你修改了一個客戶機的xml文件(位於/etc/libvirt/qemu/ 目錄),你必須重新定義客戶機:

define /etc/libvirt/qemu/vm10.xml

請注意,無論你何時在/etc/libvirt/qemu/ 中修改了客戶機的XML文件,你必須重新運行define 命令!

啓動和停止客戶機,運行:

start CentOS

停止一個客戶機,運行

shutdown CentOS

立即中斷一個客戶機(類似直接關電源),運行

destroy CentOS

掛起一個客戶機:

suspend CentOS

恢復客戶機:

resume CentOS

 

編輯客戶機:

edit CentOS  會出席那關於該虛擬機配置的xml 文件,在裏面可以修改所有屬性,cpu,內存等。。。 保存後重啓虛擬機即可。

 

這些都是最重要的命令.

輸入

quit

退出virtual shell.

 

 

 

6 複製虛擬機

 

此時產生了個新需求,需要在多臺服務器上搭建虛擬的Centos 怎麼辦?都重新安裝一遍?

答案是:不用。

 

把本機器已經安裝好的CentOS.img copy 到另一臺服務器,當然這臺機器上必須已經安裝好了kvm  qemu和libvirt。

 

然後在新服務器上執行:

 

 

virt-install qemu:///system --name CentOS1 --ram 4096 --cpuset=1,3,5 and 7 --accelerate 
--disk path=/docin/VirtualCentOS/CentOS.img --import 
--network bridge:br0 
 

注意 ,這裏使用了 --import 

具體描述 可以用 virt-install -h 來查看 --import 的作用。

 

ps: 有一個virt-clone 指令,貌似只能本機clone。沒詳細研究過。

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