1. 程式人生 > >玩轉KVM:一招完成vm在線遷移

玩轉KVM:一招完成vm在線遷移

移動 fec word list linux 系統 光纖 通道 tfs mail

下篇預告: 玩轉KVM:淺談虛擬機lifecycle

前言

上篇一招打開vm的console口,讓你輕輕松松管理vm。下面講虛擬機是如何在kvm集群中來去自如。

為什麽要遷移

遷移描述了將虛擬機從一臺主機物理機移動到另一臺主機的過程。
虛擬機遷移可以分為:冷遷移(offline migration)和熱遷移(live migration/online migration)

為什麽要遷移呢?

1.負載平衡 - 當主機物理機器過載或其他主機物理機器未充分利用時,可將客戶機虛擬機移動到主機物理機器,使用率較低。
2.硬件獨立性 - 當我們需要在主機物理機上升級,添加或刪除硬件設備時,我們可以安全地將虛擬機重定位到其他主機物理機。這意味著虛擬機不會遇到硬件改進的停機時間。

3.節能 - 客戶虛擬機可以重新分配到其他主機物理機器,因此可以關閉電源以節省能源並在低使用率期間降低成本。
4.地理遷移 - 可以將虛擬機移動到其他位置,以降低延遲或在嚴重情況下使用。

遷移的要求

共享存儲

虛擬機遷移要求是虛擬機存放在KVM集群的共享存儲中。
如下:
基於光纖通道的LUN
iSCSI的
FCoE的
NFS
GFS2
CEPH RBD
SCSI RDMA協議(SCSI RCP):Infiniband和10GbE iWARP適配器中使用的塊導出協議
技術分享圖片

# 虛擬機的管理工具

KVM 僅僅是 Linux 內核的一個模塊。管理和創建完整的 KVM 虛擬機,需要更多的輔助工具。

QEMU-KVM:在 Linux 系統中,首先我們可以用 modprobe 系統工具去加載 KVM 模塊,如果用 RPM 安裝 KVM 軟件包,系統會在啟動時自動加載模塊。加載了模塊後,才能進一步通過其他工具創建虛擬機。

Libvirt、virsh、virt-manager:盡管 QEMU-KVM 工具可以創建和管理 KVM 虛擬機,RedHat 為 KVM 開發了更多的輔助工具,比如 libvirt、libguestfs 等。原因是 QEMU 工具效率不高,不易於使用。使用 libvirt,你只需要通過 libvirt 提供的函數連接到 KVM 或 Xen 宿主機,便可以用同樣的命令控制不同的虛擬機了。Libvirt自帶一套基於文本的管理虛擬機的命令—— virsh,你可以通過使用 virsh 命令來使用 libvirt 的全部功能。 virt-manager是一套用 python 編寫的虛擬機管理圖形界面,用戶可以通過它直觀地操作不同的虛擬機。

遷移實戰

虛擬機冷遷移:

源物理主機:

確定虛擬機關閉狀態
[[email protected] ~]# virsh list --all

準備遷移test虛擬機,查看該虛擬機的磁盤文件
[[email protected] ~]# virsh domblklist test

導入虛擬機配置文件
[[email protected] ~]# virsh dumpxml test > /root/test.xml

拷貝配置文件到目標虛擬主機上。
[[email protected] ~]# scp /root/test.yml 10.10.10.10:/etc/libvirt/qemu/test.yml

目標物理主機:

查看目標主機KVM環境
[[email protected] ~]# virsh list

查看虛擬機描述文件
[[email protected] ~]# ls -l /root

查看虛擬機磁盤文件,目錄結構與源虛擬主機一致。
[[email protected] ~]# virsh domblklist test --輸出需要與源主機一樣

定義註冊虛擬主機
[[email protected] ~]# virsh define /etc/libvirt/qemu/test.yml

啟動虛擬主機並確認
[[email protected] ~]# virsh start test
[[email protected] ~]# virsh list

# 虛擬機熱遷移:
共享存儲可以用以上羅列的方式

準備NFS存儲,全部節點掛載nfs目錄
[[email protected] ~]# mount -t nfs 10.10.10.200:/data /data -o rw,rsize=12768,wsize=12768,hard

節點1虛擬機狀態,test虛擬機開機狀態
[[email protected] ~]# virsh list

節點2虛擬機狀態,無虛擬機運行
[[email protected] ~]# virsh list
在主機1上執行遷移命令
[[email protected]~]#virsh migrate --live --verbose test? qemu+ssh://10.10.10.10/system tcp://10.10.10.10br/>[email protected]‘spassword:

遷移過程:客戶機一直ping查看遷移,可以看到中間有兩個包的中斷,基本上沒有太大影響。

節點2上,可以看到虛擬機test已經啟動了,進入虛擬機觀察
[[email protected] ~]# virsh list
[[email protected] ~]# virsh console test
技術分享圖片

玩轉KVM:一招完成vm在線遷移