環境:
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 (取消註釋BOOTPROTO, BROADCAST, IPADDR, NETMASK, 和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。沒詳細研究過。