一.kvm虛擬化環境搭建准備
1.硬件環境
kvm只能部署在物理機上面。
2.BIOS開啟VT
Virtualization Tech [Enabled]
3.查看cpu 是否支持kvm 全虛擬化
# grep "flags" /proc/cpuinfo|uniq
flags : fpu vme de pse tsc msr pae mce cx8 apic sepmtrr pge mca cmov pat
pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tmsyscall nx pdpe1gb rdtscp lm
constant_tsc nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16xtpr sse4_1 sse4_2 popcnt lahf_lm
如果輸出的結果包含VMX,它是Intel 處理器虛擬機技術標志,如果包含SVM,它是AMD 處
理器虛擬機技術的標志,看到VMX 或SVM,說明支持全虛擬化。另處linux 發行版本必須在64bit 環境中才能使用KVM。
二.虛擬化環境部署
1.安裝kvm 和虛擬化管理軟件包
yum -y install kvm virt-* libvirts bridge-utils qemu-img
kvm 軟件包。kvm 軟件包中含有 KVM 內核模塊,它可在默認 Linux 內核中
提供 KVM 管理程序。
libvirts 安裝虛擬機管理工具,使用virsh 等命令來管理和控制虛擬機
bridge-utils 安裝網絡支持,設置橋接
virt-* 創建、克隆虛擬機等命令,以及圖形化管理工具virt-manager
qemu-img 安裝qemu 組件,使用qemu 命令來創建磁盤等
2.加載kvm 模塊
# modprobe kvm-intel
3.查看kvm 模塊是否被加載
# lsmod |grep kvm
kvm_intel 85256 0
kvm225952 1 kvm_intel
4.reboot 並確認
確認kvm 模塊是否被加載
# lsmod |grep kvm
kvm_intel 85256 0
kvm 225952 2 ksm,kvm_intel
#如出現以上內容,說明kvm 模塊正確加載
kvm 相關模塊的路徑
# cd /lib/modules/2.6.18-348.1.1.el5/weak-updates/kmod-kvm/
# pwd
/lib/modules/2.6.18-348.1.1.el5/weak-updates/kmod-kvm
[root@wg-vm-s2 kmod-kvm]# ls
ksm.ko kvm-amd.ko kvm-intel.kokvm.ko
5.檢查物理主機虛擬化完成情況
# virsh list
Id Name State
----------------------------------
#如出現以上提示說明虛擬化被正確安裝
6.關閉防火牆和selinux
由於防火牆和selinux會阻止libvirt為虛擬機創建網絡設備。
關閉防火牆
# /etc/init.d/iptables stop
關閉selinux
[root@test22~]# cat /etc/selinux/config
#This file controls the state of SELinux on the system.
#SELINUX= can take one of these three values:
# enforcing - SELinux security policy isenforced.
# permissive - SELinux prints warningsinstead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled #更改為disabled
#SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes areprotected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
然后命令行執行:setenforce0
7.配置網絡橋接
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# Broadcom Corporation NetXtreme BCM5720 GigabitEthernet PCIe
DEVICE=eth0
HWADDR=90:B1:1C:2A:A4:40
ONBOOT=yes
BOOTPROTO=none
TYPE=Ethernet
BRIDGE=br0
#注意不要寫錯。
# cat /etc/sysconfig/network-scripts/ifcfg-br0
# Broadcom Corporation NetXtreme BCM5720 GigabitEthernet PCIe
DEVICE=br0
#HWADDR=90:B1:1C:2A:A4:40
ONBOOT=yes
BOOTPROTO=static
TYPE=Bridge
IPADDR=192.168.3.200
NETMASK=255.255.255.0
GATEWAY=192.168.3.254
配置完eth0 和br0 重啟網卡:serivce network restart
查看已有橋接:
# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.90b11c2aa440 no eth0 (配置正確的橋接是有mac地址的)
br1 8000.90b11c2aa441 no eth1
錯誤橋接:
# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000000000000 no eth0
8.修改vnc 監聽端口
# cd /etc/libvirt/
# ls
libvirtd.conf nwfilter qemu qemu.conf
# cp qemu.conf qemu.conf.panglu-$(date +%F)
# vi qemu.conf+12
11 #
12 # vnc_listen ="0.0.0.0" #把前面的#注釋去掉,開啟vnc 監聽
13
14
15 # Enable use of TLS encryption on the VNC server.This requires
16 # a VNC client which supports the VeNCryptprotocol extension.
17 # Examples include vinagre, virt-viewer,virt-manager and vencrypt
9.開啟相應的服務
# /etc/init.d/messagebusstart #linux ICP 服務
Starting system message bus:[ OK ]
# /etc/init.d/libvirtd restart#啟動virbr0
libvirtd (pid 3665) is running...
添加到開機啟動
# chkconfig messagebus on
echo “/etc/init.d/libvirtdstart”>>/etc/rc.local
到此,kvm 服務端安裝完成。
三.安裝虛擬機
1.創建虛擬機磁盤目錄
#mkdir /data/vmdisk -p
2.創建iso文件目錄
#mkdir /iso
把光盤放入到光驅,dd 命令把iso 文件拷貝到/iso目錄下
# dd if=/dev/cdromof=/iso/centos5.iso
3.創建虛擬磁盤文件
qemu-img create -f qcow2 -opreallocation=metadata dev_5931.img 300G
重要參數:-opreallocation=metadata 預分配磁盤,硬盤空間不會立即占用
注意:ext3不支持此參數,ext4支持。
4.安裝虛擬機命令及參數
virt-install --name=dev_5934_44 --ram 8192--vcpus=2 -f dev_5934_44.img --cdrom../iso/CentOS-6.4-x86_64-bin-DVD1to2/CentOS-6.4-x86_64-bin-DVD1.iso --graphics vnc,listen=0.0.0.0,port=5934, --force --autostart
注意端口號設定值,用vnc連接時需要用。
5.接下來客戶端vnc去連接。
#192.168.3.200 是宿主機IP,5900 是安裝命令指定的vnc 端口
##vnc viewer連接閃退解決方法
只需修改vnc option里面Advanced–>expert–>ColourLevel的值為“rgb222” or “full”即可。
四. 虛擬機硬件配置更改篇
1.解決kvm環境下可以使用shutdown命令讓虛擬機關機,但不生效。
進入不能關機的虛擬機中:
[root@localhost ~]# yum -y installacpid ;安裝acpid服務
[root@localhost ~]# service acpid restart ;啟動服務
[root@localhost ~]# chkconfig acpid on ;加入開機啟動
通過以上步驟后就可以讓虛擬機響應shutdown 和reboot命令了
2.修改kvm中虛擬機的內存大小及cpu數量。
a.查看虛擬機
virsh # list --all
Id 名稱 狀態
----------------------------------------------------
2 test_centos running
4 qishi running
13 qishi2 running
14 cloud_monitor_5921 running
20 test22 running
- test33 關閉
b.更改要修改的配置文件
[root@nfs ~]# virsh edittest22 ##注意vi直接編輯不生效
<domain type='kvm'>
<name>test22</name>
<uuid>eb342f67-e70c-194b-5291-e91010ed996f</uuid>
<memory unit='KiB'>5120000</memory>
<currentMemory unit='KiB'>5120000</currentMemory> #512000à為內存大小,單位為K 修改此數字,例如要調整為8G 則設置為8192000
<vcpu placement='static'>4</vcpu> #4à為cpu數量,更改為5個則將4修改為5
<os>
<type arch='x86_64'machine='rhel6.5.0'>hvm</type>
<boot dev='hd'/>
</os>
修改完保存à關閉虛擬機à啟動虛擬機(注意直接重啟不生效)
[root@nfs ~]# virsh shutdown test22
Domain vm01 is being shutdown
[root@nfs ~]# virsh start test22
檢查:
啟動后登錄虛擬機,查看內存及cpu,發現已經更改。
查看內存:# free -m
查看cpu數量 # cat/proc/cpuinfo
3.虛擬機網卡mac沖突的解決辦法:
a.連接上虛擬機。
b.關掉沖突主機。
#ifdown eth0
c.修改eth0的mac
#sbin/ifconfig eth0 hw ether 00:AA:BB:CC:11:22 ##-->分一個盡量不易出現的mac
d.修改eth0配置文件中的mac
vi /etc/sysconfig/network-scripts/ifcfg-eth0
Hwaddr: 00:AA:BB:CC:11:22
e.重啟網卡
service network restart
f.我們用命令行更改的mac在當前生效,重啟后失效,所以需要加入到開機啟動。
echo “ifdown eth0”>>/etc/rc.local
echo “sbin/ifconfig eth0 hw ether 00:AA:BB:CC:11:22”
echo “ifup eth0”
好了,網卡mac沖突解決了!
4.給虛擬機增加硬盤。
1、給當前磁盤擴容
a.找到需要擴容的磁盤文件。
[root@qishi_test qemu]# cd /data/VHOST/
[root@qishi_test VHOST]# ll
總用量 318393772
-rw-r--r-- 1 qemu qemu322171961344 6月 2 12:33 cloud_monitor_5921.img
-rw-r--r-- 1 root root 32212254720 5月 30 16:54 jia_qishi2.img
-rw-r--r-- 1 qemu qemu 64432963584 6月 2 12:33 test2.img
-rwxr-xr-x 1 root root 53695545344 6月 2 10:05 test33.img
-rw-r--r-- 1 qemu qemu 21474836480 5月 30 18:53 test_jia.img
b.我們現在給test22增加10G空間,他的磁盤文件對應的test2.img。
qemu-img resize test2 +10G
c.關閉虛擬機test22à啟動虛擬機test22(注意:重啟不生效)
檢查:
登陸虛擬機,fdisk -l 發現磁盤增加了10G的空間,我們可以對其進行分區掛載等操作了。
2、給虛擬機添加一塊磁盤。
a.創建文件硬盤的鏡像
qemu-img create -f raw /disk/sdb6/c1d6.img 10G #指定路徑、名稱、及大小。
Formatting '/disk/sdb6/c1d6.img', fmt=raw size=10737418240
b.打開虛擬機列表
virsh # list --all
Id 名稱 狀態
----------------------------------------------------
2 test_centos running
4 qishi running
13 qishi2 running
14 cloud_monitor_5921 running
20 test22 running
- test33 關閉
c.在此test22硬盤擴容
virsh # edit test22
#找到硬盤配置(原來的系統硬盤)
<disk type='file' device='disk'>
<driver name='qemu'type='raw' cache='none'/>
<sourcefile='/data/VHOST/test2.img'/>
<target dev='hda' bus='ide'/>
<address type='drive'controller='0' bus='0'target='0' unit='0'/>
</disk>
#新加磁盤配置
<disk type='block'device='cdrom'>
<driver name='qemu'type='raw'/>
<target dev='hdc' bus='ide'/>
<readonly/>
<address type='drive'controller='0' bus='1'target='0' unit='0'/>
</disk>
注意:dev 名稱設定不能一樣。 bus不能一樣。一般源為“0”則加一個數字+1,即1,2,3….
#保存退出
d.關閉虛擬機à啟動虛擬機(注意:重啟不能生效)
[root@nfs ~]# virsh shutdown test22
Domain vm01 is being shutdown
[root@nfs ~]# virsh start test22
檢查:
虛擬機啟動后,登陸進去使用命令#fdisk -l 查看新加的磁盤。
五 centos 6.0 克隆虛擬機步驟
宿主機:192.168.3.100
模版機web-1:192.168.3.102
克隆機web-5:192.168.3.110
1) 關閉/暫停模版虛擬機進行克隆,(注意新克隆的虛擬磁盤文件的名字不能與模版機相同)
virt-clone -o web-1 -n web-5 -f /data/vmdisk/web-5.qcow2
2)然后手動更改xml 配置文件的vnc 端口。
vi /etc/libvirt/qemu/web-5.xml
3)重啟libvirtd 服務使更改的端口生效。
/etc/init.d/libvirtd restart
4)啟動新克隆的虛擬機
virsh start web-5
5)然后客戶端vnc 去連。
6)更改web-5 的eth0 的ip
7)重啟network服務
六拷貝xml 文件方式安裝新虛擬機
安裝新虛機web-10
1)制作虛擬機鏡像
cd /data/vmdisk/
cp web-1.qcow2web-10.qcow2
2)創建xml 文件
Cd/etc/libvirt/qemu
cp web-1.xmlweb-10.xml
修改相應的參數
uuid mac vnc 硬盤文件位置 虛擬機名字
uuid:隨意更改,保證唯一
mac:隨意更改,保證唯一
vnc:指定端口號,別和其他虛擬機沖突
虛擬磁盤文件位置:/data/vmdisk/web-10.qcow2
#<sourcefile='/data/vmdisk/web-10.qcow2'/>
虛擬機名字:web-10
vi web-10.xml
:%S/web-1/web-10/g
3)創建虛擬機
virsh defineweb-10.xml
4)啟動虛擬機
virsh start web-10
七 設置虛擬機自啟動
#virsh autostart 虛擬機名(例如web-1)
在/etc/libvirt/qemu/network/autostart目錄下會出現 web-1.xml
此時,如果重啟宿主機,web-1 虛擬機是不會自動啟動的,需要重啟libvirtd 服務
所以記得把libvirtd 服務設置成開機自啟動,這樣宿主機重啟,虛擬機就會自啟動。