--
虛擬化
KVM (kernel-based virtual machine)
xen kvm vmare esx openVZ Oracle VM VirtualBox vsphere
企業(yè)級(jí)應(yīng)用:非本地的
分兩部分:一,host虛擬機(jī)
二,management端
最早的虛擬化: 分時(shí)操作系統(tǒng) 單核CPU 同一時(shí)間點(diǎn)只能做一個(gè)任務(wù) 運(yùn)行多個(gè)進(jìn)程或線程就是一種虛擬化
cpu運(yùn)行一個(gè)進(jìn)程,中斷,再運(yùn)行另一個(gè),因?yàn)镃PU運(yùn)行速度快,所以用戶感覺不到這種切換,這種切換叫上下文切換
常見的虛擬化場(chǎng)景: 游戲模擬器:如使用X86的CPU模擬PSP或街機(jī)的CPU,使用X86的硬件模擬PSP或街機(jī)的硬件
vmware workstation的虛擬結(jié)構(gòu)圖:
OS1 OS2
vmware workstation
OS(內(nèi)核)
硬件:CPU,mem,hd等
--上面的結(jié)構(gòu):OS1和OS2的操作,需要通過vmware來轉(zhuǎn)化為進(jìn)程對(duì)OS的請(qǐng)求,再由OS轉(zhuǎn)化為對(duì)硬件的請(qǐng)求;
如果這里OS里跑的其它程序如果占用和資源多,那么必然會(huì)造成vmware的資源占用少,性能就會(huì)不太好,因?yàn)関mware的進(jìn)程和其它進(jìn)程是同級(jí)的
--如何把性能提高:跳過OS這一層
或者虛擬化和os同級(jí)
或者硬件本身支持虛擬化
所以就發(fā)展成下面這幾種虛擬情況:
半(準(zhǔn))虛擬化:
完全虛擬化:
半(準(zhǔn))虛擬化:
客戶機(jī)器操作系統(tǒng)必須是修改過的,才能使用半虛擬化。
硬件虛擬化技術(shù)。
典型代表: Xen
citrix: xen
xen半虛擬化結(jié)構(gòu)圖:
domain0 domain1 domain2 ...
xen
硬件:CPU,MEM,HD等
--上面的結(jié)構(gòu): xend取代了OS,domain0是用來控制xen的一個(gè)控制器(跑hypervisor),domain1,domain2...就是虛擬的操作系統(tǒng);這樣轉(zhuǎn)化的效率就會(huì)高很多
但要注意的是:上層的domain1,domain2等的內(nèi)核接口必須要與xen對(duì)應(yīng)才可以;
xen要使用支持xen的專有內(nèi)核才可以,原有的內(nèi)核不行,原有的內(nèi)核是直接與硬件進(jìn)行通訊的;
開源的linux,freebsd都可以修改,但windows卻不行;
xen已經(jīng)加入到linux內(nèi)核里去了,從2.6.18之后的內(nèi)核就有xen
citrix把xen買下來了,所以redhat不再繼續(xù)開發(fā)xen,就買了另一家kvm;并且citrix是微軟的白金級(jí)合作伙伴,它可以要求MS去修改源代碼支持xen,所以只有citrix的xen支持windows
Hypervisor——一種運(yùn)行在基礎(chǔ)物理服務(wù)器和操作系統(tǒng)之間的中間軟件層,可允許多個(gè)操作系統(tǒng)和應(yīng)用共享硬件。也可叫做VMM( virtual machine monitor ),即虛擬機(jī)監(jiān)視器。
Hypervisors是一種在虛擬環(huán)境中的“元”操作系統(tǒng)。他們可以訪問服務(wù)器上包括磁盤和內(nèi)存在內(nèi)的所有物理設(shè)備。
Hypervisors不但協(xié)調(diào)著這些硬件資源的訪問,也同時(shí)在各個(gè)虛擬機(jī)之間施加防護(hù)。
當(dāng)服務(wù)器啟動(dòng)并執(zhí)行Hypervisor時(shí),它會(huì)加載所有虛擬機(jī)客戶端的操作系統(tǒng)同時(shí)會(huì)分配給每一臺(tái)虛擬機(jī)適量的內(nèi)存,CPU,網(wǎng)絡(luò)和磁盤。
全虛擬化:
必須cpu支持硬件虛擬化。
客戶機(jī)器不需要修改內(nèi)核,原則上可以安裝任何的操作系統(tǒng)。
Intel # cat /proc/cpuinfo | grep vmx
AMD : svm
典型代表: kvm , VMware ESXi
KVM 完全虛擬化結(jié)構(gòu)圖:
OS1 OS2
KVM os
硬件:CPU,MEM,HD等
要求操作系統(tǒng)廠商按照它的虛擬化標(biāo)準(zhǔn)和規(guī)則編寫
=============================================================
紅帽官檔下載路徑
docs.redhat.com
https://access.redhat.com/documentation/en-US/
KVM官方安裝文檔(english)
Red_Hat_Enterprise_Linux-6-Virtualization_Host_Configuration_and_Guest_Installation_Guide-en-US.pdf
在宿主機(jī)安裝kvm
1,配置好yum
# vim /etc/yum.repos.d/rhel-source.repo
[rhel-source]
name=rhel6.5
baseurl=file:///yum/
enabled=1
gpgcheck=0
# yum groupinstall "Virtualization"
# yum groupinstall "Virtualization Client"
# yum groupinstall "Virtualization Platform"
# yum groupinstall "Virtualization Tools"
# service libvirtd restart
# chkconfig libvirtd on
# cat /proc/cpuinfo |grep -E "vmx|svm" --查看CPU是否支持intel或AMD的虛擬技術(shù)
vmx ---intel
svm ---AMD
# modprobe kvm
# modprobe kvm_intel --如果不支持vmx指令,則加載不支持
# lsmod |grep kvm
kvm_intel 52570 0
kvm 314739 1 kvm_intel
開始安裝kvm
1,圖形安裝
# virt-manager --和xen一樣的命令,打開虛擬機(jī)管理器
安裝名:kvm1 --名字隨意
安裝方式: --我這里選擇第一個(gè),使用iso直接安裝
安裝路徑:/share/soft/rhel-server-6.5-x86_64-dvd.iso --寫上iso的路徑
OS type: linux
red hat enterprise linux 6
內(nèi)存大小: 1024M -- 內(nèi)存如果較小,安裝時(shí)無法使用圖形安裝方式,只能使用文本安裝方式
cpu個(gè)數(shù):2 --不能大于宿主機(jī)器的cpu核數(shù)
硬盤大小: 12 G --我這里定義12G大小,不馬上分配;它的默認(rèn)路徑會(huì)在/var/lib/libvirt/p_w_picpaths/kvm1.img;也可以自定義路徑
第五步:網(wǎng)絡(luò)現(xiàn)在只能選擇default --這是一個(gè)nat網(wǎng)絡(luò)(私有網(wǎng)絡(luò)),橋接網(wǎng)絡(luò)不能選,需要后面單獨(dú)配置后才能選擇
2,命令行交互式安裝
[root@li ~]# virt-install --prompt
What is the name of your virtual machine?
kvm2
How much RAM should be allocated (in megabytes)?
800
What would you like to use as the disk (file path)?
/var/lib/libvirt/p_w_picpaths/kvm2.img
How large would you like the disk (/var/lib/libvirt/p_w_picpaths/kvm2.img) to be (in gigabytes)?
12
What is the install CD-ROM/ISO or URL?
/share/soft/rhel-server-6.5-x86_64-dvd.iso
3,直接使用命令行來安裝
# virt-install --hvm -n "kvm3" -r 800 --vcpus 2 --os-type="linux" --os-variant="rhel6" --disk path=/var/lib/libvirt/p_w_picpaths/kvm3.img,size=12 -l /share/soft/rhel-server-6.5-x86_64-dvd.iso --network bridge=virbr0
hvm是指全虛擬化
p是指半虛擬化
4,使用kc.cfg自動(dòng)安裝
# virt-install --vnc --noautoconsole --arch=x86_64 --hvm -n "kvm3" -r 800 --vcpus 2 --os-type="linux" --os-variant="rhel6" --disk path=/var/lib/libvirt/p_w_picpaths/kvm3.img,size=12 --location=ftp://172.16.2.9/ --extra-args="ks=nfs:172.16.2.9:/ks/ks.cfg" --network bridge=virbr0
# virt-install --vnc --noautoconsole --arch=x86_64 --hvm -n "kvm3" -r 800 --vcpus 2 --os-type="linux" --os-variant="rhel6" --disk path=/var/lib/libvirt/p_w_picpaths/kvm3.img,size=12 --location=ftp://172.16.2.9/ --extra-args="ks=http://172.16.2.9/ks.cfg" --network bridge=virbr0
virt-install --help
幫助手冊(cè)
[root@i ~]# virt-install --vnc --noautoconsole --arch=x86_64 --hvm -n "kvm4" -r 800 --vcpus 1 --os-type="linux" --os-variant="rhel6" --disk /var/lib/libvirt/p_w_picpaths/kvm4.img,size=9 --location=ftp://192.168.0.254/pub/rhel6/dvd --extra-args="ks=ftp://192.168.0.254/kvm.cfg" --network bridge=virbr0
==========================================================
主要的管理命令:
virsh help
virsh help domain
virsh help network
virsh help monitor --因?yàn)閰?shù)很多,可以用象domain,network,monitor這種關(guān)鍵字,只查看與關(guān)鍵字有關(guān)的參數(shù)幫助
......
# virsh list
Id Name State
----------------------------------------------------
1 kvm1 running
# virsh list --all
Id Name State
----------------------------------------------------
1 kvm1 running
- kvm2 shut off
# virsh start kvm1 --啟動(dòng)一個(gè)虛擬機(jī)
# virsh shutdown kvm1 --正常在一分鐘后關(guān)閉一個(gè)虛擬機(jī)(如果都沒有登錄進(jìn)去,則會(huì)馬上關(guān)閉)
# virsh reboot kvm1 --正常重啟一個(gè)虛擬機(jī),一樣會(huì)在關(guān)閉時(shí)要一分鐘
# virsh destroy kvm1 --強(qiáng)制關(guān)閉一個(gè)虛擬機(jī),類似斷電,可以瞬間關(guān)閉虛擬機(jī)
# virsh save kvm1 /etc/libvirt/qemu/kvm1.save --把kvm1關(guān)閉,并把當(dāng)前狀態(tài)保存為一個(gè)文件 <開啟狀態(tài)>
# virsh restore /etc/libvirt/qemu/kvm1.save --通過保存的文件,恢復(fù)當(dāng)時(shí)save時(shí)的狀態(tài) <關(guān)閉狀態(tài)>
# virsh suspend kvm1 --暫停kvm1的狀態(tài)
# virsh resume kvm1 --由暫停切換為繼續(xù)的狀態(tài)
# virt-viewer kvm1 --連接一個(gè)已經(jīng)啟動(dòng)的虛擬機(jī),并使用圖形查看
# virsh console kvm1 --字符連接一個(gè)虛擬機(jī),但是現(xiàn)在連接不了;因?yàn)樾枰粋€(gè)串口的授權(quán)才可以;下面的例8會(huì)說明
--這里要注意,console連接會(huì)卡死在那;只能殺進(jìn)程退出;但其實(shí)是有快捷鍵的;是ctrl+ ] (也就是右中框號(hào)的這個(gè)鍵)來退出
虛擬機(jī)相關(guān)的文件:
以kvm1為例:
配置文件在:/etc/libvirt/qemu/kvm1.xml
磁盤文件默認(rèn)在:/var/lib/libvirt/p_w_picpaths/kvm1.img
命令刪除一個(gè)虛擬機(jī)的做法(假設(shè)為kvm3)
virsh destroy kvm3
virsh undefine kvm3
rm -rf /var/lib/libvirt/p_w_picpaths/kvm3.img
=====================================================================
網(wǎng)絡(luò)管理
console連接
克隆
添加或刪除硬件
遠(yuǎn)程虛擬機(jī)管理
遷移
快照
================================================================
kvm 網(wǎng)絡(luò)管理
# virsh help network --只查看與網(wǎng)絡(luò)有關(guān)的幫助參數(shù)
# virsh net-list --all
Name State Autostart
-----------------------------------------
default active yes --這是一個(gè)NAT網(wǎng)絡(luò),私有網(wǎng)絡(luò)
# virsh net-info default
Name default
UUID 704eb1b7-3feb-4a38-8642-9c3fe2f023bb
Active: yes
Persistent: yes
Autostart: yes
Bridge: virbr0
default網(wǎng)段的配置文件的路徑為:
/etc/libvirt/qemu/networks/default.xml
virsh net-destroy default --停掉default網(wǎng)絡(luò),由virsh net-list --all去查看,狀態(tài)變?yōu)閕nactive
virsh net-start default --啟動(dòng)default網(wǎng)絡(luò),狀態(tài)變?yōu)閍ctive
-----------------------------------------------------
例一:圖形增加私有網(wǎng)絡(luò)
virt-manager打開圖形--》edit --》connections details --》 virtual networks--》點(diǎn)左下角的+號(hào)增加一個(gè)私有網(wǎng)絡(luò)(選擇名字,網(wǎng)絡(luò)分配地址范圍,dhcp的分配范圍)
--注意:這里最后一步有三種網(wǎng)絡(luò):
1,isolated 相當(dāng)vmware的hostonly,沒有NAT,也沒有網(wǎng)關(guān)
2,NAT 有網(wǎng)關(guān),有NAT,可以通過宿主上外網(wǎng)
3,routed 也是相當(dāng)于hostonly,在isolated的基礎(chǔ)上就是加了一個(gè)網(wǎng)關(guān)
把上面的步驟做完后,直接在宿主機(jī)用ifconfig或virsh net-list --all,就可以看到新加的網(wǎng)絡(luò)了
例二:手動(dòng)加一個(gè)私有網(wǎng)絡(luò)
1,# cp /etc/libvirt/qemu/networks/default1.xml /etc/libvirt/qemu/networks/default2.xml
# vim /etc/libvirt/qemu/networks/default2.xml
2,# virsh net-define /etc/libvirt/qemu/networks/default2.xml --定義一下,然后你可以使用virsh net-list --all去查看,狀態(tài)為inactive,autostart的狀態(tài)為no
3,# virsh net-start default2 --啟動(dòng)
4,# ifconfig virbr2 |head -2 --查看就有了
virbr2 Link encap:Ethernet HWaddr 52:54:00:AF:27:25
inet addr:192.168.101.1 Bcast:192.168.101.255 Mask:255.255.255.0
# ls /etc/libvirt/qemu/networks/autostart/
default1.xml default.xml
5,# virsh net-autostart default2 --讓他開機(jī)自動(dòng)啟動(dòng)
# ls /etc/libvirt/qemu/networks/autostart/ --這里就會(huì)多了default2.xml了,其實(shí)都是網(wǎng)絡(luò)配置文件的軟鏈接
default1.xml default2.xml default.xml
剛加的網(wǎng)絡(luò)配置文件都在下面的目錄
# ls /etc/libvirt/qemu/networks
autostart default1.xml default2.xml default.xml
例三:修改一個(gè)網(wǎng)絡(luò)
1,# vim /etc/libvirt/qemu/networks/default2.xml
保存后,使用ifconfig virbr1 查看,還是192.168.102.1,沒有改變
需要做下面三步:
2,# virsh net-define /etc/libvirt/qemu/networks/default2.xml --定義一個(gè)網(wǎng)絡(luò),使你的修改被他知道
Network default2 defined from /etc/libvirt/qemu/networks/default3.xml
3,# virsh net-destroy default2 --停一下這個(gè)網(wǎng)絡(luò)
Network default2 destroyed
4,# virsh net-start default2 --再啟這個(gè)網(wǎng)絡(luò)
Network default2 started
ifconfig virbr2查看,成功修改成192.168.102.1
上面的第一步和第二步可以統(tǒng)一成一步來做:
# virsh net-edit default2 --使用這個(gè)命令打開,修改,然后就直接net-destroy和net-start,不需要去net-define
例四:
圖形刪除一個(gè)網(wǎng)絡(luò)
virt-manager打開圖形--》edit --》connections details --》 virtual networks--》選擇你要?jiǎng)h除的網(wǎng)絡(luò),然后左下角,先停,再刪除就可以了
用命令刪除一個(gè)網(wǎng)絡(luò)
# virsh net-destroy default2 --停掉要?jiǎng)h除的網(wǎng)絡(luò),用virsh net-list --all命令去查就變成了inactive狀態(tài)
# virsh net-undefine default2 --這下就刪除了這個(gè)網(wǎng)絡(luò)定義了,并且物理上的配置文件也沒了
例五:增加一個(gè)橋接網(wǎng)絡(luò):
把物理網(wǎng)卡eth0橋接到br0(這個(gè)名字是自己定義的)
在rhel6里有一個(gè)networkmanger這個(gè)服務(wù),可以圖形管理所有的網(wǎng)絡(luò)鏈接。但這個(gè)服務(wù)不支持kvm的橋接,所以要關(guān)掉這個(gè)服務(wù),或者在eth0的配置文件里加上NM_CONTROLLED="no",讓eth0不受networkmanger服務(wù)的控制
1,在宿主機(jī)上創(chuàng)建一個(gè)橋接網(wǎng)絡(luò)
# /etc/init.d/NetworkManager stop
# chkconfig NetworkManager off
# vim /etc/sysconfig/network-scripts/ifcfg-br0 --此文件不存在,br0這個(gè)名字是自定義的
DEVICE=br0 --名字對(duì)應(yīng)好
TYPE=Bridge --這里的Birdge,B要大寫,后面的irdge要小寫
BOOTPROTO=static
IPADDR=172.16.2.9
NETMASK=255.255.0.0
GATEWAY=172.16.1.1
ONBOOT=yes
2,把一個(gè)物理網(wǎng)卡加到一個(gè)橋接網(wǎng)絡(luò)里,我這里是把eth0加到br0
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BRIDGE=br0 --這句就是把eth0橋接到br0
NM_CONTROLLED="no" --這句就是讓eth0不受networkmanager的控制
ONBOOT="YES"
[root@li ~]# brctl show --重啟網(wǎng)絡(luò)前的情況
bridge name bridge id STP enabled interfaces
virbr0 8000.5254004e4c3f yes virbr0-nic
virbr1 8000.5254004cf4e4 yes virbr1-nic
3,重啟網(wǎng)絡(luò) /etc/init.d/network restart
# brctl show --重啟網(wǎng)絡(luò)后查看的情況
bridge name bridge id STP enabled interfaces
br0 8000.0030677653f7 no eth0
virbr0 8000.5254004e4c3f yes virbr0-nic
virbr1 8000.5254004cf4e4 yes virbr1-nic
有了上面這些網(wǎng)絡(luò),如果你再建立虛擬機(jī),就會(huì)有多種網(wǎng)絡(luò)可選
在宿主機(jī)上ifconfig 查看就會(huì)有br0這個(gè)網(wǎng)卡,有IP;而eth0網(wǎng)卡也有,但沒有IP;這是正常的
例六:圖形修改一個(gè)虛擬機(jī)網(wǎng)卡鏈接
virt-manager打開圖形,雙擊你要修改的虛擬機(jī) --》點(diǎn)擊左上的一個(gè)!號(hào)按鈕show hardware detail-->>找個(gè)網(wǎng)卡,修改成你想要改的網(wǎng)絡(luò)(但這里報(bào)需要重啟虛擬機(jī)才能生效)
# virsh shutdown kvm1
# virsh start kvm1 --重啟后,就改成了你想要的虛擬網(wǎng)絡(luò)了
--問題:可能有些人在圖形選擇時(shí)看不到br0,但是brctl show能查看到,那么你在選擇時(shí)選擇specify shared device name,然后再下面手動(dòng)在bridge name后寫br0
例七:文本修改一個(gè)虛擬機(jī)的網(wǎng)卡連接
1,# vim /etc/libvirt/qemu/kvm1.xml --直接打開修改
2,# virsh define /etc/libvirt/qemu/kvm1.xml --vim修改后要define一下
# virsh edit kvm1 --或者使用edit命令打開修改,就可以替代前面的1,2步
40
41
42 --把原來默認(rèn)的network改成bridge,把原來的網(wǎng)絡(luò)default改成br0
43
44
# virsh shutdown kvm1
# virsh start kvm1 --重啟后,虛擬機(jī)就是橋接網(wǎng)絡(luò)了
--KVM現(xiàn)在修改一個(gè)網(wǎng)卡的類型(比如NAT改橋接),需要重啟才能生效;但如果你是加網(wǎng)卡或者刪網(wǎng)卡,是不需要重啟生效的(rhel6.5環(huán)境下測(cè)試為,圖形加或刪網(wǎng)卡不用重啟,但命令加或刪網(wǎng)卡要重啟)
======================================================================
例八:解決virsh console kvm1 連接不上去的錯(cuò)誤
1,在kvm1虛擬機(jī)里操作
vim /boot/grub/grub.conf
kernel /vmlinuz-2.6.32-279.el6.x86_64 ro root=UUID=f900cbb3-c0cf-440c-94f6-0c208f1da6e0 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet console=ttyS0,115200 --在內(nèi)核參數(shù)這里加上console=ttyS0,115200,表示這個(gè)串口以115200的波特率可以連接;注意ttyS0里的S一定要大寫;
如果小寫會(huì)造成這個(gè)虛擬機(jī)啟動(dòng)不了,解決方法:
1,挽救模式進(jìn)去修改
2,用虛擬化的一個(gè)交互編輯工具
# yum install libguestfs-tools
# virt-edit -a /var/lib/libvirt/p_w_picpaths/kvm1.img /boot/grub/grub.conf去修改;
同理這個(gè)工具也可以用于完全沒有圖形的宿主機(jī)上無法通過virt-viewer或者ssh(因?yàn)檎也坏教摂M機(jī)的IP)或者virsh console來連接虛擬機(jī)的情況;
可以先用virt-edit來修改加上上面的console=ttyS0,115200;再用virsh console去連接
--如果上面的virt-edit打不開,可以使用# libguestfs-test-tool來調(diào)試錯(cuò)誤(我這里以前講庫(kù)的時(shí)候做了一個(gè)小實(shí)驗(yàn),把/lib64/libselinux.so.1改名成了/lib64/libselinux.so.1.bak,然后用軟鏈接鏈接回來。但在這里就會(huì)造成錯(cuò)誤。解決方法:mv /lib64/libselinux.so.1.bak /lib64/libselinux.so.1)
2,重啟kvm1
# virsh reboot kvm1 --直接destroy再start,可能無法生效,建議這樣重啟
3,再在宿主機(jī)上
# virsh console kvm1 --然后回車就可以直接連你本地的這個(gè)虛擬機(jī)了;虛擬機(jī)沒有IP一樣可以連
4,退出的方式
exit只是退出登錄的用戶而已
要完全退出這個(gè)console連接,需要使用的是ctrl+ ] (也就是右中框號(hào)的這個(gè)鍵)
========================================
kvm 的克隆
--注意:克隆都需要源虛擬機(jī)器是關(guān)閉或暫停狀態(tài)
例九:圖形克隆
1,先關(guān)閉kvm1或 virsh suspend kvm1暫停kvm1(使用virsh resume kvm1恢復(fù))
2,virt-manager--》右鍵點(diǎn)kvm1--》選擇clone-->修改克隆后的名字或其它參數(shù)--》點(diǎn)clone
例十:文本克隆
1,拷貝配置文件和磁盤文件
# cp /etc/libvirt/qemu/kvm1.xml /etc/libvirt/qemu/kvm3.xml
# cp /var/lib/libvirt/p_w_picpaths/kvm1.img /var/lib/libvirt/p_w_picpaths/kvm3.img
2,修改拷貝的配置文件
# vim /etc/libvirt/qemu/kvm3.xml
--磁盤路徑改成kvm3.img的路徑
3,保存后,使用virsh list --all查看不到的,需要define一下
# virsh define /etc/libvirt/qemu/kvm3.xml
# virsh list --all --再查就可以查看到kvm3
Id Name State
----------------------------------------------------
- kvm1 shut off
- kvm1-clone shut off
- kvm2 shut off
- kvm3 shut off
# virsh start kvm3 --可以啟動(dòng)克隆的機(jī)器了
例十一:命令克隆
# virt-clone -o kvm1 -n kvm4 -f /var/lib/libvirt/p_w_picpaths/kvm4.img
Allocating kvm4.img 7% [- ] 34 MB/s | 957 MB 05:29 ETA
--把kvm1克隆成kvm4,指定磁盤路徑為/var/lib/libvirt/p_w_picpaths/kvm4.img;如果kvm1有多個(gè)硬盤,那么克隆時(shí)也要對(duì)應(yīng)的克隆成多個(gè)路徑
========================================
例十二:添加網(wǎng)卡或硬盤
virt-manager--》 雙擊打開kvm1--》點(diǎn)左上角的!號(hào)show hardware details --》點(diǎn)左下角add devices 直接添加,并寫上相關(guān)參數(shù)就可以(注意參數(shù),device type都選擇virtio,不需要重啟虛擬機(jī),可以直接生效,并且磁盤名叫vda,vdb,vdc...;如果你第一次加硬盤選擇IDE disk,需要重啟,并且磁盤名叫sda,sdb,sdc...)
--注意:當(dāng)虛擬機(jī)(非宿主機(jī))為文本模式的情況,在宿主機(jī)上用上面的圖形模式加的設(shè)備,在虛擬機(jī)的配置文件里沒有加上,需要手動(dòng)再加上,才可以
例十三:直接用命令來添加一個(gè)硬盤設(shè)備
1,使用dd命令創(chuàng)建一個(gè)磁盤文件
# dd if=/dev/zero of=/var/lib/libvirt/p_w_picpaths/kvm2-2.img bs=1M count=1 seek=4000000
--seek是指跳過多少個(gè)BS塊,這里就是產(chǎn)生一個(gè)4T大小的文件(實(shí)際大小只1M)
2,編輯虛擬機(jī)的配置文件
# virsh edit kvm2
--名字改成kvm1-2.img
--slot也改一下,我這里是把0x09改成0x10
3,重啟虛擬機(jī)
# virsh define /etc/libvirt/qemu/kvm2.xml
# virsh reboot kvm2
======================================================================
kvm 的遠(yuǎn)程管理
例:在192.168.0.254上管理192.168.0.252
1,先在/etc/hosts里綁定對(duì)方(被管理的宿主機(jī)器)的主機(jī)名
2,做ssh等效性
# ssh-keygen --直接三次回車
# ssh-add /root/.ssh/id_rsa --加入自己的私鑰
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
# scp /root/.ssh/id_rsa.pub 172.16.1.65:/root/.ssh/authorized_keys
--把自己的公鑰scp傳給對(duì)方
3,所有的被管理客戶端宿主機(jī),需要啟動(dòng)libvirtd服務(wù)
4,virt-manager--》file--》add connection--》填上要遠(yuǎn)程連接的主機(jī)IP(或主機(jī)名,但要求/etc/hosts綁定)
5,連接上去之后,就可以看到有遠(yuǎn)程的虛擬客戶機(jī),雙擊就可以遠(yuǎn)程調(diào)取他們的圖形了
--或者用命令的方式去連接
# virt-viewer -c qemu+ssh://root@192.168.0.1/system kvm1
--表示使用root用戶(當(dāng)然前面你做的ssh等效性需要是root用戶)去訪問192.168.0.1上叫kvm1的虛擬機(jī)
=================================================================
遷移:
冷遷移: 這個(gè)和克隆還是有區(qū)別的:克隆是把源虛擬機(jī)關(guān)閉,那么內(nèi)存的數(shù)據(jù)都沒了;而遷移是遷過去成功,然后打開后,還保持原來的內(nèi)存數(shù)據(jù)
熱遷移:
冷遷移過程:
1,虛擬機(jī)kvm1是開啟狀態(tài)
2,保存當(dāng)前的運(yùn)行狀態(tài)
# virsh save kvm1 /etc/libvirt/qemu/kvm1.xml.save
Domain kvm1 saved to /etc/libvirt/qemu/kvm1.xml.save
3,scp或者rsync把相關(guān)的文件都拷貝到被遷移的宿主機(jī)
# scp /etc/libvirt/qemu/kvm1.xml.save 172.16.1.65:/etc/libvirt/qemu/
# scp /etc/libvirt/qemu/kvm1.xml 172.16.1.65:/etc/libvirt/qemu/
# scp /var/lib/libvirt/p_w_picpaths/kvm1.img 172.16.1.65:/var/lib/libvirt/p_w_picpaths/
4,到192.168.0.1(也就是遷移的目標(biāo)宿主機(jī))上操作
# virsh define /etc/libvirt/qemu/kvm1.xml --define一下,然后就可以用virsh list --all查看到
5,# virsh restore /etc/libvirt/qemu/kvm1.xml.save
熱遷移過程:
1,做熱遷移需要使用共享存儲(chǔ)(也就是說這些虛擬機(jī)都安裝在宿主機(jī)的共享存儲(chǔ)設(shè)備上);我們這里只能使用nfs來替代
remote01 remote02
\ /
\ /
\ /
storage(0.254)
2,在源宿主機(jī)器上把虛擬機(jī)的磁盤文件路徑用nfs導(dǎo)出
# vim /etc/exports
/var/lib/libvirt/p_w_picpaths *(rw,no_root_squash,sync)
# /etc/init.d/nfs restart --rhel6.x已經(jīng)沒有portmap服務(wù)了(代替的是rpcbind服務(wù)),直接啟動(dòng)nfs服務(wù)就可以
3,在目標(biāo)宿主機(jī)器上把源共享的目錄掛載,保證路徑一致
# mount -t nfs -o vers=3 172.16.2.9:/var/lib/libvirt/p_w_picpaths/ /var/lib/libvirt/p_w_picpaths/
4,進(jìn)行遷移,下面的操作是在源172.16.2.9上的操作(注意檢查一下防火墻和selinux要關(guān)閉)
命令遷
# virsh migrate --live kvm1 qemu+ssh://172.16.1.65/system
--(可能會(huì)有很多問題:如kvm1有橋接網(wǎng)絡(luò),但172.16.1.65那邊沒有,會(huì)報(bào)錯(cuò):或者kvm1內(nèi)存較大,172.16.1.65那邊沒有足夠的內(nèi)存分配,則也會(huì)報(bào)錯(cuò)等等;還有可能是因?yàn)榫W(wǎng)絡(luò)的問題,造成一次不成功;畢竟我們是實(shí)驗(yàn)環(huán)境@_@多試幾次看看)
圖形遷
virt-manager --》右鍵點(diǎn)kvm1-->點(diǎn)遷移
--遷移過程中,源虛擬機(jī)還是可以繼續(xù)運(yùn)行,幾乎感覺不到停;遷移完成后,則源會(huì)關(guān)閉(源已經(jīng)沒有用了),而目標(biāo)172.16.1.65,就已經(jīng)無縫接管了源虛擬機(jī)的狀態(tài)了
熱遷移時(shí),如果報(bào)下面的錯(cuò)誤
libvirtError: internal error Attempt to migrate guest to the same host
解決方法:在目標(biāo)端172.16.1.65上操作
# uuidgen --產(chǎn)生一個(gè)新的uuid
596b0eb8-3a15-48da-bbba-11e136b7c893
# vi /etc/libvirt/libvirtd.conf --此配置文件里加上下面一行,注意id一定要用雙引號(hào)引起來
host_uuid = "596b0eb8-3a15-48da-bbba-11e136b7c893"
# /etc/init.d/libvirtd restart --重啟服務(wù)
=======================================================================
kvm快照
# virsh shutdown kvm1
# qemu-img info /var/lib/libvirt/p_w_picpaths/kvm1.img
p_w_picpath: /var/lib/libvirt/p_w_picpaths/kvm1.img
file format: raw
virtual size: 12G (12884901888 bytes)
disk size: 3.2G
# cd /var/lib/libvirt/p_w_picpaths/
# qemu-img convert -f raw -O qcow2 kvm1.img kvm1.qcow2.img
--把磁盤格式由raw轉(zhuǎn)換為qcow2
# ll -h kvm1* --qcow2格式占用空間小
-rw------- 1 root root 12G Dec 7 17:11 kvm1.img
-rw-r--r-- 1 root root 3.1G Dec 7 17:21 kvm1.qcow2.img
# virsh edit kvm1 --編輯kvm1虛擬的主配置文件,把raw磁盤換成qcow2磁盤
--把路徑也改成轉(zhuǎn)換為qcow2格式的文件路徑
# virsh start kvm1 --再啟動(dòng),使他生效
# rm -rf /var/lib/libvirt/p_w_picpaths/kvm1.img --可以把原來的raw格式的磁盤文件給刪除掉
# virsh help snapshot --查看和快照操作有關(guān)的命令
# virsh snapshot-list kvm1 --列快照,默認(rèn)沒有
Name Creation Time State
------------------------------------------------------------
# virsh snapshot-create-as --domain kvm1 snap1 --description "my first test snapshot" --對(duì)kvm1創(chuàng)建一個(gè)叫snap1的快照
Domain snapshot snap created
# ll -h kvm1.qcow2.img --在建快照的過程中看到此文件在增大
-rw-r--r-- 1 qemu qemu 3.6G Dec 7 17:48 kvm1.qcow2.img
# virsh snapshot-list kvm1
Name Creation Time State
------------------------------------------------------------
snap1 2013-12-07 17:52:42 +0800 running
查看幫助
virsh help snapshot
查看快照配置
virsh snapshot-current kvm1
恢復(fù)快照
virsh snapshot-revert kvm1 snap1
刪除快照
virsh snapshot-delete kvm1 snap1
--恢復(fù)快照時(shí)報(bào)錯(cuò):error: revert requires force: Target controller type ide does not match source usb
表示kvm不能在線恢復(fù),需要關(guān)閉虛擬機(jī),再恢復(fù)快照。如果你要在線恢復(fù)快照,需要加一個(gè)--force的參數(shù)
寫法如:
virsh snapshot-revert kvm1 snap1 --force
恢復(fù)快照的時(shí)間較長(zhǎng),恢復(fù)完后,鍵盤操作會(huì)有些問題,可以把它重啟一下
virsh destroy kvm1
virsh start kvm1
===============================================================
練習(xí),準(zhǔn)備一個(gè)qcow2格式的新kvm虛擬機(jī),并安裝好操作系統(tǒng)(并做基本優(yōu)化,配yum,關(guān)閉iptables和selinux等),并做好快照。以后要用多臺(tái)的話,就按照這臺(tái)來克隆就可以
站在用戶的角度思考問題,與客戶深入溝通,找到黃龍網(wǎng)站設(shè)計(jì)與黃龍網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:做網(wǎng)站、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國(guó)際域名空間、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋黃龍地區(qū)。