溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解決Linux系統(tǒng)中關(guān)于KVM虛擬機遷移出現(xiàn)的問題

發(fā)布時間:2021-09-27 10:00:37 來源:億速云 閱讀:164 作者:iii 欄目:系統(tǒng)運維

這篇文章主要介紹“如何解決Linux系統(tǒng)中關(guān)于KVM虛擬機遷移出現(xiàn)的問題”,在日常操作中,相信很多人在如何解決Linux系統(tǒng)中關(guān)于KVM虛擬機遷移出現(xiàn)的問題問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何解決Linux系統(tǒng)中關(guān)于KVM虛擬機遷移出現(xiàn)的問題”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

廢話不多說,直入正題(被遷移的機器成為:sourceVM,所在服務器:source,目標服務器:target,#后是shell命令)
實驗環(huán)境:
RedHat 6.2

代碼如下:

# virsh version
Compiled against library: libvir 0.9.4
Using library: libvir 0.9.4
Using API: QEMU 0.9.4
Running hypervisor: QEMU 0.12.1

主要用兩種方式,命令行virsh migrate 和圖形界面 virt-mamge
命令行比較簡單:

代碼如下:

#virsh migrate sourceVM qemu+ssh://target/system --live

 
(如果ssh的端口不是默認22,可以寫為 qemu+ssh://target:port/system)
No.1 Question::
error: internal error hostname on destination resolved to localhost, but migration requires an FQDN

解決辦法很簡單,因為默認情況下hostname 是 localhost,我們需要把目標的hostname修改一下,臨時的也可以。

代碼如下:

#hostname target

No.2 Question:
error: internal error Attempt to migrate guest to the same host 00020003-0004-0005-0006-000700080009
這個mail list 里有大牛說是服務器提供商的問題
你可以用#dmidecode -s system-uuid 查看一下這個ID,理論上是#virsh sysinfo | grep uuid 及# virsh capabilities | grep uuid
這三個ID是一樣的。(之前看論壇里發(fā)的解決方法是需要下載一個dmidecode 命令的文件去替換系統(tǒng)的,達到修改的目的,不過今天我只是修改了libvirt的配置文件就可以了,可能是版本的問題)
我們修改一下libvirtd的配置文件

代碼如下:

#sed -i "/#host_uuid/ahost_uuid = \"`uuidgen`\"" /etc/libvirt/libvirtd.conf

 
重啟一下libvirtd 服務

代碼如下:

# /etc/init.d/libvirtd restart

 
然后再查看一下

代碼如下:

# virsh capabilities | grep uuid

No.3 Question:
error: unable to set user and group to '107:107' on '/image/sourceVM/disk.img': No such file or directory
如果順利進入到這步的話,就很簡單了,沒有directory 直接創(chuàng)建一個就可以
注:創(chuàng)建的磁盤應該和源虛擬機的磁盤是一樣的大?。ǜ髴撌强梢裕┖透袷剑╮aw還是qcow2)

No.4 Question::
error: Unable to resolve address 'target' service '49155': Name or service not known
《《Name or service not known》》這個相信大家都知道如何解決,/etc/hosts ...略過

再次執(zhí)行遷移命令的時候,就基本不會報錯了,我的實驗環(huán)境是,如果你還有其他問題,請貼圖回復,謝謝

虛擬機遷移和網(wǎng)絡的帶寬、虛擬機鏡像的大小有直接關(guān)系,但是在線遷移最關(guān)心的應該是宕機時間,我測試的方法是一直ping target 服務器,大概停頓1s。

圖形就比較簡單了,處理上邊所說的相同的FQDN,相同的UUID以外,就是建立連接時的ssh認證問題。

我這邊的環(huán)境是必須要在使用virt-manage遠程連接的時候添加ssh的認證,而且還要在終端登陸一次,使服務器的信息記錄到目標機器的~/.ssh/knows 下(其實就是有一個yes/no的界面 輸入yes即可)
建立連接以后,選中機器右鍵有一個Migrate的選項

彈出遷移的目標服務器,選擇目標服務器,點擊Migrate即可

遷移的問題大概就這么多。
剩下的是一些有關(guān)于遷移和其他的小細節(jié):
在設置vnc監(jiān)聽端口時基本上有3種,
127.0.0.1 (默認):只有本機能訪問,也就是virt-mange和virt-view
host_ip :除了本機的所有機器都可以訪問
0.0.0.0: 以上兩種的合集
在遷移時,需要把監(jiān)聽地址改為0.0.0.0,端口為-1 自動分配,因為如果不出意外的話,指定的端口會沖突?。。?/p>

如果沒有.ssh/這個目錄,可能做不了免認證(沒有真實環(huán)境,不知道原因),沒關(guān)系,我們可以用tcp代替ssh連接到目標服務器上。
方法如下:
1 修改/etc/libvirt/libvirtd.conf中
[/code]  listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
auth_tcp = "sasl"[/code] 
2 去掉/etc/sysconfig/libvirtd 中LIBVIRTD_ARGS="--listen" 的注釋
3 修改/etc/libvirt/qemu.conf 中l(wèi)isten 為0.0.0.0 ,去掉password注釋
4 運行以下命令可以添加用戶

代碼如下:

# saslpasswd2 -a libvirt admin
Password: xxxxxx
Again (for verification): xxxxxx

 
通過以下命令可以查看已經(jīng)創(chuàng)建的用戶

代碼如下:

# sasldblistusers2 -f /etc/libvirt/passwd.db
fred@t60wlan.home.berrange.com: userPassword

 
5 重啟libvirtd 服務 ok!
原文引用:xiaoli110 的BLOG

在的ssh的位置選擇tcp,如果端口沒有修改可以不填端口
測試連接的時候可以用 #virsh -c qemu+tcp://target/system list

還有一個問題是,遷移的時候可以拉服務器嗎?正常的遷移時大多是推過去的,就想scp 和rsync一樣,以拉虛擬機的方式遷移是可以的

遷移虛擬機對服務器的要求,之前看必須是兩個相同的Cpu才可以,今天我測試的時候是發(fā)現(xiàn)可以從source遷移到target,回來就出問題了,發(fā)現(xiàn)時 sourcce 少了一些指令集,所以可以說不通的cpu也是可以做遷移的,只是目標服務器必須包含源服務器cpu的所有指令集。

到此,關(guān)于“如何解決Linux系統(tǒng)中關(guān)于KVM虛擬機遷移出現(xiàn)的問題”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI