KVM通俗的說就是一臺服務器當多臺用,詳細介紹去百度和谷歌。
首先查看服務器是否支持虛擬化
[root@KVM~]# grep -E '(vmx|svm)' /proc/cpuinfo --color
反饋如下:
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov p at pse36 clflush dts acpi mmx fxsr sse sse2ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tscaperfmperf pni pcl mulqdq dtes64monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse 4_2 x2apic popcnt tsc_deadline_timer aesxsave avx f16c rdrand lahf_lm arat epb xsave opt pln pts dts tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms
備註:如果是使用VMware測試搭建,需要開啓虛擬化支持:右擊虛擬機-設置-處理器-虛擬化引擎首選模式爲Intel VT-x/EPT 或 AMD-V/RVI,並勾選虛擬化"Intel VT-x/EPT 或AMD-V/RVI",之後內存最好大於2G,CPU最好大於2.
安裝阿里雲源
wget -O /etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-6.repo
yum clean all
yum makecache
安裝KVM並檢查模塊
yuminstallqemu-kvm -y
[root@KVM~]# lsmod | grep kvm
kvm_intel 54285 0
kvm 333172 1 kvm_intel
安裝管理工具
yuminstallvirt-manager python-virtinst qemu-kvm-tools -y
yuminstalllibvirt libvirt-python -y
物理機配置橋接網卡
[root@KVMnetwork-scripts]# catifcfg-br0
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none(也可以設置成dhcp,按需配置)
DNS2=114.114.114.114
DNS1=202.106.0.20
IPADDR=172.16.10.189
NETMASK=255.255.255.0
GATEWAY=172.16.10.1
[root@KVMnetwork-scripts]# catifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
BRIDGE=br0
重啓網絡服務
servicenetwork restart
開啓路由轉發
查看完成後網絡配置
[root@KVM~]# ifconfig
br0 Link encap:Ethernet HWaddr 70:E2:84:08:EB:AE
inet addr:172.16.10.189 Bcast:172.16.10.255 Mask:255.255.255.0
inet6 addr:fe80::72e2:84ff:fe08:ebae/64Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:143000 errors:0dropped:0overruns:0frame:0
TX packets:44349 errors:0dropped:0overruns:0carrier:0
collisions:0 txqueuelen:0
RX bytes:10882563 (10.3MiB) TX bytes:16649590 (15.8MiB)
eth0 Link encap:Ethernet HWaddr 70:E2:84:08:EB:AE
inet6 addr: fe80::72e2:84ff:fe08:ebae/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:189220 errors:0dropped:0overruns:0frame:0
TX packets:77679 errors:0dropped:0overruns:0carrier:0
collisions:0 txqueuelen:1000
RX bytes:71695893 (68.3MiB) TX bytes:19745769 (18.8MiB)
Memory:fbe20000-fbe40000
創建空硬盤,相當於物理機的硬盤(公司常用的qcow2格式)
# /home/kvm需要手動創建,一般存放在較大空間目錄下,自行修改
[root@KVM~]# qemu-img create -f qcow2 /home/kvm/kvm-demo2.qcow2 100G
Formatting'/home/kvm/kvm-demo2.qcow2', fmt=qcow2 size=107374182400 encryption=off cluster_size=65536
上傳磁盤鏡像/home/kvm/CentOS-6.5.iso(可使用winscp上傳,這個是裝機用的光盤,因爲配置了橋接網卡,同樣可以使用PXE或者cobbler進行裝系統)
啓動libvirt
/etc/init.d/libvirtdstart
創建一個新的虛擬機
virt-install --virt-type kvm --name kvm-demo --boot network,cdrom,menu=on--ram 512 --cdrom=/home/kvm/CentOS-6.5.iso --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=rhel6 --accelerate--disk path=/home/kvm/kvm-demo.qcow2,size=5,format=qcow2,bus=virtio --bridge=br0,model=virtio --autostart
解釋:
--virt-type kvm 類型
--name 名字
--ram 內存
--cdrom=/home/kvm/CentOS-6.5.iso 安裝使用的鏡像
--network 使用的網絡
--diskpath=/home/kvm/kvm-demo.qcow2 指定磁盤(之前創建的)
virsh setvcpus kvm-test --maximum 8 --config
添加cpu會用到這條命令
通過virshlist --all查看虛擬機狀態
[root@KVM~]# virsh list --all
Id Name State
----------------------------------------------------
12 kvm-demo running
使用VNC登錄查看,並進行裝機(VNC端口默認是從5900開始)
登錄上去以後即可進行裝機。
裝機完成以後再次進行連接,界面如下
登錄到系統查看IP
至此KVM虛擬機搭建完成,可以使用Xshell連接上去,之後就和普通服務器沒什麼大的區別了。
常用virsh指令
1)virsh list 列出當前虛擬機列表,不包括未啓動的
2)virsh list --all 列出所有虛擬機,包括所有已經定義的虛擬機
3)virsh destroy vm-name 關閉虛擬機
4)virsh start vm-name 啓動虛擬機
5)virsh edit vm-name 編輯虛擬機xml文件
6)virsh undefine vm-name 刪除虛擬機
7)virsh shutdown vm-name 停止虛擬機
8)virsh reboot vm-name 重啓虛擬機
9)virsh autostart vm-name 虛擬機隨宿主機啓動
++++++++++++++++++++++++++++++創建和拍攝快照++++++++++++++++++++++++++++++++++
KVM快照方法常用的是qemu-img snapshot 和virsh snapshot
經過我多次試驗qemu-imgsnapshot -c 快照名 域名,此種方法已經不能再百分百成功創建快照,創建後可能導致虛擬機無法啓動,報Filetoo large的錯誤,並且未找到解決辦法。下面將介紹virsh snapshot創建還原快照的方法。
查看KVM虛擬機運行狀態
[root@KVM~]# virsh list
Id 名稱 狀態
----------------------------------------------------
5 kvm-test running
首先創建一個純淨版的快照,沒有安裝任何服務
[root@KVM~]#virsh snapshot-create-as --domain kvm-test --name kvm_clean
Domainsnapshot kvm_clean created
domain是虛擬機的名字 name是快照的名字
備註:創建快照的速度根據服務器的配置會有所不同,在創建快照的同時,KVM虛擬機會處於暫時暫停的狀態(創建快照完成後會自動轉換爲running),如果是線上服務器,請自行定奪。
查看創建的快照
[root@KVM~]# virsh snapshot-list kvm-test
名稱 Creation Time 狀態
------------------------------------------------------------
kvm_clean 2016-01-2515:07:14 +0800 running
登錄到kvm虛擬機 kvm-test中
安裝Apache服務並啓動
yuminstallhttpd -y ; echo"Test KVM snapshot">> /var/www/html/index.html ; /etc/init.d/httpd restart
訪問測試
[root@kvm-test~]# curl 127.0.0.1
TestKVM snapshot
再次創建快照
[root@KVM~]# virsh snapshot-create-as --domain kvm-test --name kvm_httpd
Domainsnapshot kvm_httpd created
再次查看快照
[root@KVM~]# virsh snapshot-list kvm-test
名稱 Creation Time 狀態
------------------------------------------------------------
kvm_clean 2016-01-2515:07:14 +0800 running
kvm_httpd 2016-01-2516:03:52 +0800 running
還原測試:
首先還原至純淨版,未安裝Apache服務
關閉虛擬機(也可開機還原,不建議)
[root@KVM ~]# virsh snapshot-revertkvm-test kvm_clean
登錄到虛擬機查看能否訪問httpd服務
[root@kvm-test ~]# curl 127.0.0.1
curl: (7) couldn't connect to host
無法訪問,說明還原成功,再次還原到已安裝httpd服務的狀態
[root@KVM ~]# virsh snapshot-revertkvm-test kvm_httpd
訪問測試
[root@kvm-test ~]# curl 127.0.0.1
Test KVM snapshot
還原成功。
+++++++++++++++++++++++++++++++在線增加CPU個數+++++++++++++++++++++++++++++++
查看爲增加之前的邏輯CPU個數
[root@kvm-test~]# cat /proc/cpuinfo | grep process | wc -l
2
增加CPU一條命令即可
[root@KVM~]# virsh setvcpus kvm-test 3
再次查看
[root@kvm-test~]# cat /proc/cpuinfo | grep process | wc -l
3
+++++++++++++++++++++++++++++++在線增加內存+++++++++++++++++++++++++++++++++++
查看現有的內存
[root@kvm-test~]# free -m | grep Mem | awk'{print $2}'
628
增加內存至1024M同樣一條命令
[root@KVM~]# virsh setmem kvm-test 1024M
再次查看
[root@kvm-test~]# free -m | grep Mem | awk'{print $2}'
852
Over