詳解基于本地存儲(chǔ)的kvm虛擬機(jī)在線遷移
kvm虛擬機(jī)遷移分為4種
(1)熱遷移基于共享存儲(chǔ)
(2)熱遷移基于本地存儲(chǔ)
(3)冷遷移基于共享存儲(chǔ)
(4)冷遷移基于本地存儲(chǔ)
這里介紹的是基于本地存儲(chǔ)的熱遷移
動(dòng)態(tài)塊遷移版本要求
qemu版本要求 大于或等于0.12.1(centos6.7或以上都沒問題)
rpm -qa|grep qemu qemu-kvm-0.12.1.2-2.491.el6_8.1.x86_64 qemu-kvm-tools-0.12.1.2-2.491.el6_8.1.x86_64
目標(biāo)宿主機(jī):192.168.1.24 機(jī)器名:CQ-KVM01
源宿主機(jī):192.168.1.26 機(jī)器名:CQ-KVM02
遷移使用tcp認(rèn)證方式
kvm虛擬機(jī)名稱,是一臺(tái)跑nginx的虛擬機(jī):CQ-NGINX01
1、配置libvirtd服務(wù) 源宿主機(jī)和目標(biāo)宿主機(jī)都要執(zhí)行
vi /etc/libvirt/libvirtd.conf listen_tls = 0 listen_tcp = 1 tcp_port = "16509" listen_addr = "0.0.0.0" auth_tcp = "none" mdns_adv = 0
解釋
- listen_tls:關(guān)閉tls,默認(rèn)是開啟的
- listen_tcp :開啟tcp認(rèn)證
- tcp_port:tcp端口配置,默認(rèn)端口是16509
- auth_tcp:配置是否開啟口令認(rèn)證,默認(rèn)不開啟
- mdns_adv:是否開啟mdns組播,默認(rèn)關(guān)閉
sed -i 's/^#listen_tls = 0/listen_tls = 0/' /etc/libvirt/libvirtd.conf sed -i 's/^#listen_tcp = 1/listen_tcp = 1/' /etc/libvirt/libvirtd.conf sed -i 's/^#tcp_port = \"16509\"/tcp_port = \"16509\"/' /etc/libvirt/libvirtd.conf sed -i 's/^#listen_addr = \"192.168.0.1\"/listen_addr = \"0.0.0.0\"/' /etc/libvirt/libvirtd.conf sed -i 's/^#auth_tcp = \"sasl\"/auth_tcp = \"none\"/' /etc/libvirt/libvirtd.conf sed -i 's/^#mdns_adv = 1/mdns_adv = 0/' /etc/libvirt/libvirtd.conf
cat libvirtd.conf |grep -iE "listen_tls" cat libvirtd.conf |grep -iE "listen_tcp" cat libvirtd.conf |grep -iE "tcp_port" cat libvirtd.conf |grep -iE "listen_addr" cat libvirtd.conf |grep -iE "auth_tcp" cat libvirtd.conf |grep -iE "mdns_adv"
2、配置libvirtd監(jiān)聽方式,無論是tcp,ssh,tls認(rèn)證方式都需要配置 , 源宿主機(jī)和目標(biāo)宿主機(jī)都要執(zhí)行
vi /etc/sysconfig/libvirtd LIBVIRTD_ARGS="--listen"
3、編輯/etc/libvirt/qemu.conf文件 源宿主機(jī)和目標(biāo)宿主機(jī)都要執(zhí)行
vi /etc/libvirt/qemu.conf vnc_listen = "0.0.0.0"
解釋
- vnc_listen:使虛擬機(jī)帶外VNC默認(rèn)監(jiān)聽.0.0.0.0
4、重啟libvirtd服務(wù),使配置生效, 源宿主機(jī)和目標(biāo)宿主機(jī)都要執(zhí)行
/etc/init.d/libvirtd restart
5、檢查端口和進(jìn)程,libvirtd是否監(jiān)聽16509端口, 源宿主機(jī)和目標(biāo)宿主機(jī)都要執(zhí)行
netstat -lntp | grep libvirtd
tcp 0 0 0.0.0.0:16509 0.0.0.0:* LISTEN 48825/libvirtd
修改iptables腳本,放行16509端口和49152端口
#ACCESS kvm iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 5900:5909 -j ACCEPT iptables -A INPUT -p tcp --dport 16509 -j ACCEPT iptables -A INPUT -p tcp --dport 49152 -j ACCEPT
6、在源宿主機(jī)和目標(biāo)宿主機(jī)加上IP和主機(jī)的解析
#24機(jī)器上 echo "192.168.1.26 CQ-KVM02" >> /etc/hosts #26機(jī)器上 echo "192.168.1.24 CQ-KVM01" >> /etc/hosts
7、在源宿主機(jī)連接目標(biāo)宿主機(jī)的libvirtd并查看虛擬機(jī)信息
virsh -c qemu+tcp://root@192.168.1.26:16509/system virsh -c qemu+tcp://root@192.168.1.24:16509/system
8、在目標(biāo)宿主機(jī)創(chuàng)建同樣大小的鏡像文件,路徑、名稱也要一樣
要加上preallocation=metadata,否則使用virt-install命令安裝完成后虛擬機(jī)磁盤鏡像會(huì)變?yōu)閞aw格式
qemu-img create -f qcow2 -o preallocation=metadata /data/kvmimg/CQ-NGINX01.qcow2 100G
9、遷移 ,192.168.1.26為目標(biāo)宿主機(jī)的內(nèi)網(wǎng)IP,tcp認(rèn)證方式,遷移時(shí)間有點(diǎn)長需要開一個(gè)screen窗口,不需要cd 到鏡像文件所在目錄
screen -S migratekvm virsh migrate --live --copy-storage-all --unsafe --persistent CQ-NGINX01 qemu+tcp://root@192.168.1.26:16509/system
10、在目標(biāo)宿主機(jī)執(zhí)行,會(huì)顯示paused狀態(tài) 即是suspended狀態(tài)
watch virsh list --all
11、在目標(biāo)宿主機(jī)執(zhí)行,顯示遷移進(jìn)度
tailf /var/log/libvirt/qemu/CQ-NGINX01.log
12、在目標(biāo)宿主機(jī)執(zhí)行,鏡像文件目錄為/data/kvmimg/,顯示虛擬機(jī)鏡像的大小,會(huì)看到虛擬機(jī)鏡像會(huì)不斷增大表示數(shù)據(jù)已經(jīng)在遷移過來
注意創(chuàng)建鏡像文件的時(shí)候要使用preallocation=metadata
cd /data/kvmimg/ watch du -h *
13、虛擬機(jī)遷移完成后,源宿主機(jī)為關(guān)機(jī)狀態(tài),目標(biāo)宿主機(jī)變?yōu)閞unning狀態(tài)
virsh list --all #源宿主機(jī) virsh list --all #目標(biāo)宿主機(jī)
14、源宿主機(jī)刪除xml配置文件
virsh destroy CQ-NGINX01 virsh undefine CQ-NGINX01
注意:
遷移過程中ping會(huì)有卡頓,有時(shí)會(huì)丟幾個(gè)包,如果虛擬機(jī)中有部署數(shù)據(jù)庫,應(yīng)用程序最好有重連機(jī)制
回遷方法
建議不要?jiǎng)h除源宿主機(jī)上的鏡像文件,保留鏡像文件
#在目標(biāo)宿主機(jī)上執(zhí)行 ,回遷到源宿主機(jī)
virsh dumpxml CQ-NGINX01 >~/CQ-NGINX01.xml virsh migrate --live --copy-storage-all --unsafe --persistent CQ-NGINX01 qemu+tcp://root@192.168.1.24:16509/system
注意:
源宿主機(jī)和目標(biāo)宿主機(jī)最好要保持硬件一致 ,這樣遷移和回遷出問題的幾率才能降到最低!
遷移速度和成功率和網(wǎng)絡(luò)有很大關(guān)系,宿主機(jī)的網(wǎng)絡(luò)盡量是萬兆或千兆多網(wǎng)卡綁定,可以提高遷移速度和成功率
#限制遷移速度 為600M/s virsh migrate-setspeed CQ-NGINX01 600
--------------------------------------------------------------------------------
在線遷移問題匯總
(如果ssh的端口不是默認(rèn)22,可以寫為 qemu+ssh://target:port/system)
Question 1:
error: internal error hostname on destination resolved to localhost, but migration requires an FQDN
解決辦法很簡單,因?yàn)槟J(rèn)情況下hostname 是 localhost,我們需要把目標(biāo)的hostname修改一下,臨時(shí)的也可以。
#hostname target
Question 2:
error: internal error Attempt to migrate guest to the same host 00020003-0004-0005-0006-000700080009
這個(gè)在mail list 中有大牛說是服務(wù)器提供商的問題,你可以用#dmidecode -s system-uuid 查看一下這個(gè)ID,理論上是#virsh sysinfo | grep uuid 及# virsh capabilities | grep uuid
這三個(gè)ID是一樣的。(之前看論壇里發(fā)的解決方法是需要下載一個(gè)dmidecode 命令的文件去替換系統(tǒng)的,達(dá)到修改的目的,不過我只是修改了libvirt的配置文件就可以了,可能是版本的問題)
我們修改一下libvirtd的配置文件
#sed -i "/#host_uuid/ahost_uuid = \"`uuidgen`\"" /etc/libvirt/libvirtd.conf
重啟一下libvirtd 服務(wù)
# /etc/init.d/libvirtd restart
然后再查看一下
# virsh capabilities | grep uuid
Question 3:
error: unable to set user and group to '107:107' on '/image/vmtest/disk.img': No such file or directory
如果順利進(jìn)入到這步的話,就很簡單了,沒有directory 直接創(chuàng)建一個(gè)就可以,沒有disk.img 直接create一個(gè)
注:創(chuàng)建的磁盤應(yīng)該和源虛擬機(jī)的磁盤是一樣的大?。ǜ髴?yīng)該是可以)和格式(raw還是qcow2)
qemu-img create /image/vmtest/disk.img +sizeG
Question 4:
error: Unable to resolve address 'target' service '49155': Name or service not known
《《Name or service not known》》在/etc/hosts 添加解析的ip和target的域名即可
Question 5:
virsh migrate --live --copy-storage-all --unsafe --persistent CQ-NGINX01 qemu+tcp://root@192.168.1.24:16509/system
error: Unable to read from monitor: Connection reset by peer
可能目標(biāo)宿主機(jī)和源宿主機(jī)內(nèi)存不夠
建議:目標(biāo)宿主機(jī)和源宿主機(jī)上都關(guān)閉一些不必要的虛擬機(jī)把內(nèi)存騰出來
也可以清空cache把內(nèi)存騰出來
#清除cache 首先執(zhí)行sync命令
sync echo 3 > /proc/sys/vm/drop_caches
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
CentOS?8?安裝調(diào)試KVM的詳細(xì)步驟
這篇文章主要介紹了CentOS?8?KVM?的安裝調(diào)試,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04詳解kvm部署三個(gè)虛擬機(jī)實(shí)現(xiàn) WordPress 實(shí)驗(yàn)
這篇文章主要介紹了詳解kvm部署三個(gè)虛擬機(jī)實(shí)現(xiàn) WordPress 實(shí)驗(yàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-11-11