1. 程式人生 > >遷移ESX虛擬機器到KVM

遷移ESX虛擬機器到KVM

遷移ESX虛擬機器到KVM

本文詳細介紹瞭如何在CentOS上使用virt-v2v開源工具將在VMware ESX軟體上的Linux虛擬機器遷移到基於KVM的虛擬機器。

virt-v2v 遷移 VMware/Xen/KVM虛擬機器示意圖如下所示:

                          ┌────────────┐  ┌─────────▶ -o null
 -i disk ────────────┐    │            │ ─┘┌───────▶ -o local
 -i ova  ──────────┐ └──▶ │ virt-v2v   │ ──┘┌───────▶ -o qemu
                   └────▶ │ conversion │ ───┘┌────────────┐
 VMware─▶┌────────────┐   │ server     │ ────▶ -o libvirt │─▶ KVM
 Xen ───▶│ -i libvirt ──▶ │            │     │  (default) │
 ... ───▶│  (default) │   │            │ ──┐ └────────────┘
         └────────────┘   │            │ ─┐└──────▶ -o glance
 -i libvirtxml ─────────▶ │            │ ┐└─────────▶ -o rhev
                          └────────────┘ └──────────▶ -o vdsm

在遷移前的環境設定如下:我們採用的KVM主機安裝CentOS6u5作業系統。這樣,最基本的支援KVM虛擬機器的軟體qemu-kvmlibvirt、和virt-v2v工具都在發行版中安裝了,若沒有,通過yuminstall安裝之。

[[email protected] ~]# rpm -qa qemu-kvm

qemu-kvm-0.12.1.2-2.479.el6.x86_64

[[email protected] ~]# rpm -qa libvirt

libvirt-0.10.2-54.el6.x86_64

[[email protected] ~]# rpm -qa virt-v2v

virt-v2v-0.9.1-5.el6_5.x86_64

下面直接上步驟:

1. 由於一般物理機磁碟都很大,我們需要專門規劃一個地方儲存它們,可以使用NFS掛載的方式:配置NFSserver,並掛在到KVM主機上

# showmount -e $NFS_SERVER_IP

Export list for $NFS_SERVER_IP:

/root/p2v *

# mount -t nfs $NFS_SERVER_IP:/root/p2v /mnt/p2v

# mount
$NFS_SERVER_IP:/root/p2v on /mnt/p2v type nfs(rw,v3,addr=$NFS_SERVER_IP)

2. 建立 KVM主機儲存域

virt-v2v在遷移虛擬機器的過程中,需要拷貝被遷移虛擬機器到KVM主機預先定義的儲存池中。儲存池可以用libvirt工具virsh建立。

# virsh pool-define-as p2v dir --target /mnt/p2v/

# virsh pool-autostart p2v

# virsh pool-start p2v

# virsh pool-dumpxml p2v
<pooltype='dir'>
<name>p2v</name>
<uuid>ff76d124-3593-925e-c2f5-95d43f25948c</uuid>
<capacityunit='bytes'>1934015594496</capacity>
<allocationunit='bytes'>929471676416</allocation>
<availableunit='bytes'>1004543918080</available>
<source>
</source>
<target>
<path>/mnt/p2v</path>
<permissions>
<mode>0755</mode>
<owner>-1</owner>
<group>-1</group>
</permissions>
</target>
</pool>

3. 為自動登入 VMwareESX 伺服器建立.netrc檔案。VMwareESX伺服器的連線需要授權,virt-v2v支援密碼方式的授權連線,可以從$HOME/.netrc檔案中讀取密碼並自動登入。如果主機系統沒有這個檔案,就手動建立它。並且.netrc檔案需要0600許可權,使virt-v2v工具可以正確讀取它。

.netrc檔案的格式設定如下:

machine esx.example.com login root password xxxxxx

4. 建立配置檔案virt-v2v.conf

virt-v2v.conf檔案中設定virt-v2v遷移的規則,包括網路介面遷移後的對映,遷移的方式,儲存的位置,輸出的格式等等。這些規則也能以命令列引數的方式輸入,如- - network-o-os-of等,我們使用預設的配置即可。

5. VMwareESX 上停止等待遷移的虛擬機器,因為virt-v2v只支援靜態遷移

6. 使用 virt-v2v命令進行遷移,由於VMwareESX伺服器採用HTTPS連線方式,連線時需要配置SSL證書,本文通過新增'?no_verify=1';VMware伺服器的URI連線中,來關閉證書檢查。

virt-v2v遷移命令及引數

# virt-v2v -ic esx://esx.example.com/?no_verify=1 -os p2v --network default esxvm-name

注:esx.example.com–ESX伺服器主機名或IPAddress

p2v –本地主機儲存池,用來儲存映象

default –本地主機網路名字,用來連線遷移後的虛擬機器網路

esxvm-name – ESX上等待遷移的虛擬機器名字

此遷移時間長度視ESX虛擬機器磁碟的大小而定,280G大約需要10小時;

7. 遷移成功後,虛擬機器出現在libvirt管理的虛擬機器列表中,通過virsh工具啟動虛擬機器。

檢查遷移後的磁碟:

# ll /path/to/pool/dir/

-rw-r--r--. 1 root root    526385152 Mar 26 07:49 p2v-rhel-sda
-rw-r--r--. 1 root root 298917560320 Mar 26 08:13 p2v-rhel-sdb

# qemu-img info p2v-rhel-sda
image: p2v-rhel-sda
file format: raw
virtual size: 502M (526385152 bytes)
disk size: 93M

檢查遷移後的虛擬機器(virt-v2v會在libvirt管理的虛擬機器中新建一個名字與原虛擬機器一樣的VM)

# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     p2v-rhel                       shut off

通過virsh start p2v-rhel你可能會遇到兩個問題:

(1)p2v-rhel的xml中定義了<source bridge='VM Network'/>,此bridge在主機中不存在,解決方法如下:

通過virsh editp2v-rhel'VM Network'換成'virbr0';

(2)volume permission denied的問題,原因是被centos中selinux相關的策略擋住了,解決方法如下:

a.在qemu.conf中將security的driver設定為none,修改/etc/libvirt/qemu.conf,新增

security_driver = "none"

並重啟libvirtd服務:service libvirtd restart

b.將image所在路徑的所有父目錄(即從根目錄至當前目錄)許可權全部改成755:

chmod -R 755 /path/to/pool/dir/images

c.將image檔案的context改成unconfined_u:object_r:virt_image_t:s0:

chcon -Rv --type=virt_image_t /path/to/pool/dir/images

# ll -Z
-rw-r--r--. root root unconfined_u:object_r:virt_image_t:s0 p2v-rhel-sda
-rw-r--r--. root root unconfined_u:object_r:virt_image_t:s0 p2v-rhel-sdb

注意:若使用nfs mount的路徑建立的pool,你還可能需要設定selinux允許virt使用nfs:

# getsebool virt_use_nfs
virt_use_nfs --> off

# setsebool virt_use_nfs on
# getsebool virt_use_nfs
virt_use_nfs --> on

8. 虛擬機器成功開機後,檢查遷移後的虛擬機器的裝置驅動,如果需要,重新安裝虛擬裝置驅動。

9. 驗證遷移後的虛擬機器的配置和系統是否和遷移之前一致。

注:在CentOS7u2上遷移ESX上的虛擬機器至KVMCentOS6u5有所不同,因為經過大版本修改,virt-v2v的實現有較大的改動,必須使用vCenter管理ESXESX上的虛擬機器才能被遷移:

#rpm -qa virt-v2v

virt-v2v-1.28.1-1.55.el7.centos.x86_64

命令列變化如下:

# virt-v2v -ic vpx://vsphere.local%[email protected]$vCenter_IP/$DATACENTER_NAME/$ESX_IP/?no_verify=1-os p2v --network default esxvm-name

然後輸入兩次vCenter的登陸密碼即可。

注意:vsphere.local%5cadministratorvCenter伺服器的登入名,%5c'\'的轉義字元,這是唯一正確的輸入方式,否則你會一直遇到使用者名稱或密碼錯誤;另外需要export libguestfs的環境變數:export LIBGUESTFS_BACKEND=direct。

列印輸出log以便除錯的方法:

# LIBGUESTFS_TRACE=1 LIBGUESTFS_DEBUG=1 virt-v2v -i libvirtxml -os pool --bridge bridge_name guest_name.xml ... 2>&1 | tee virt-v2v.log

此外,感謝Tonyklyangblue的共同探索與努力,我們一起填坑才使得CentOS7上的virt-v2v命令列最終輸入正確。

參考文件:

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html-single/V2V_Guide/index.html

http://libguestfs.org/virt-v2v.1.html

相關推薦

遷移ESX虛擬機器KVM

遷移ESX虛擬機器到KVM 本文詳細介紹瞭如何在CentOS上使用virt-v2v開源工具將在VMware ESX軟體上的Linux虛擬機器遷移到基於KVM的虛擬機器。 virt-v2v 遷移 VMware/Xen/KVM虛擬機器示意圖如下所示:

遷移VMWare虛擬機器KVM

遷移VMWare虛擬機器到KVM 一、手動遷移 VMwareWorkstation/Player 上的虛擬機器到 KVM     從物理機的檔案系統看,VMware虛擬機器是由一組檔案組成。這些檔案可能集中儲存在儲存伺服器上,如 VMware E

遷移 VMware 虛擬機器KVM(轉)

目前 x86 平臺上最流行的虛擬化軟體是 VMware 公司的系列產品,而基於開源技術的 KVM 虛擬化軟體也得到了廣泛的應用。本文是虛擬化遷移技術系列文章的第三部分,詳細介紹瞭如何使用 virt-v2v 開源工具或者手動方法遷移建立在 VMware 軟體上的 Window 及 Linux 虛擬機器到

雲端計算與虛擬機器kvm

什麼是雲端計算? 資源使用和交付模式,並不是技術,分為公有云,私有云,混合雲,依賴虛擬化技術,從而實現彈性擴充套件 雲端計算 iaas pass saas圖層 Iaas(基礎設施即服務Infrastructure as a Servic) Paas(平臺即服務Platform-as-a-Ser

#Centos7.4#Linux虛擬機器KVM配置CPU、記憶體

【修改kvm虛擬機器的資源大小cpu、記憶體、硬碟】 # virsh list --all  Id    Name         State-------------------------------------

#Centos7.4#Linux虛擬機器KVM配置網絡卡【Requested operation is not valid: network 'br0' is not active】

案例: 【20181218 10:25 事故描述】 jump宿主機伺服器172.16.20.16宕機,聯絡機房管理員重啟,撥通機房vpn後ssh連線不上 【20181219 11:25 現場問題排查】 網絡卡顯示ip是172.16.20.161,沒有kvm橋接網絡卡br0, 啟動kvm虛擬機器報錯:

如何在esxi 6上面套嵌執行虛擬機器(kvm、xen、esxi6、vmware workstation、Qemu)

在 VMware ESXi 虛擬機器上執行虛擬機器,被稱為多層虛擬或者巢狀虛擬機器(Nested VMs)。如果只有一臺電腦想測試多節點 OpenStack 環境的話,使用 VMware ESXi 虛擬幾個執行 KVM Hypervisor 的 OpenStack 計算節點是

物理機遷移虛擬機器(P2V)方法總結

1.利用VMware vCenter Converter 5.1.0----------------是用於轉換物理機和其它虛擬機器產品到vmware中的程式 實驗A:將本機的win7遷移到vmware 9.0中,截圖如下: 實驗B:將遠端的redhat6.4物理及遷移到v

虛擬機器KVM的安裝使用

在fedora下虛擬機器KVM的安裝 首先看一下機器是否支援虛擬環境 egrep "(vmx|svm)" color=always /proc/cpuinfo 如果有vmx,它是 Intel處理器虛擬機器技術標誌;如果包含 svm,它是 AMD處理器虛擬機器技術標誌,說

強哥技術之路kvm虛擬機器遷移

熱遷移描述: 相比KVM虛擬機器冷遷移中需要拷貝虛擬機器虛擬磁碟檔案,kvm虛擬機器熱遷移無需拷貝虛擬磁碟檔案,但是需要遷移到的宿主機之間需要有相同的目錄結構虛擬機器磁碟檔案,也就是共享儲存,本文這部分內容通過nfs來實現,當然也可以採用Glusterfs叢集檔案系統來實現. 熱遷移流程: 在kvm

kvm虛擬機器遷移

實驗原理 靜態遷移是指在虛擬機器關閉或暫停的情況下,將源宿主機上虛擬機器的磁碟檔案和配置檔案拷貝到目標宿主機上。這種方式需要顯式的停止虛擬機器執行,對服務可用性要求高的需求不合適。 動態遷移無需拷貝虛擬機器配置檔案和磁碟檔案,但是需要遷移的主機之間有相同的目錄結構放置虛擬機

Vmware虛擬機器 靜態手動遷移Kvm

分別遷移了Guest OS基於CentOS和Window的VM,過程中,遇到的磁碟驅動問題: 虛擬化磁碟控制有基於IDE、Virtio、SCSI諸如這些,不同虛擬化平臺有差異,導致VM遷移 後,虛擬機器磁碟不能識別,系統藍屏的現象。 解決步驟: 1)修改虛擬機器模板,

003.KVM虛擬機器部署-CentOS6.8

一 實驗說明 CentOS 7的KVM虛擬機器推薦使用qcow2磁碟格式,本實驗在KVM中安裝CentOS 6.8 64虛擬機器。 二 命令部署過程 2.1 上傳映象 使用winscp上傳至/data/iso/ 2.2 格式化磁碟 1 virt-install --network bridge=br0

指令碼安裝KVM虛擬機器

前言 指令碼可以大大的節省時間而批量完成任務,節省了人力,節約了時間 編寫指令碼快速安裝虛擬機器 #!/bin/bash virt-install \ --cdrom /home/kiosk/Desktop/rhel-server-7.4-x86_64-dvd.iso \ --vc

Linux環境下實現多臺kvm虛擬機器之間組成amp架構連線

規劃圖 一、安裝kvm 1、環境準備 安裝之前,需要lscpu看flag是否包含svm或者vmx,該標誌表示cpu是否支援硬體虛擬化,而且需要64位架構,命令:lscpu | egrep 'vmx|lv|svm' 如果用的是vmware,需要開啟 開機後再檢視,模組已經裝入(Cent

kvm上部署3個虛擬機器實驗演示

1、實驗規劃設計 2、開啟虛擬化 3、安裝虛擬化相關的軟體包 4、啟動IP轉發並關閉防火牆 5、重啟服務,載入防火牆策略 6、建立並配置httpfpm網橋 7、建立並配置phpmysql網橋,過程同第6步 8、建立物理橋 

虛擬機器的管理,遷移及快照

虛擬機器的管理 虛擬機器的常規控制命令: virsh list ----列出執行狀態下的虛擬機器 virsh list --all ----列出所有狀態下的虛擬機器 virsh shutdown xxx ----關閉指定虛擬機器,速度較慢 virsh destroy xxx

KVM虛擬機器IO處理過程(二) ----QEMU/KVM I/O 處理過程

接著KVM虛擬機器IO處理過程中Guest Vm IO處理過程(http://blog.csdn.net/dashulu/article/details/16820281),本篇文章主要描述IO從guest vm跳轉到kvm和qemu後的處理過程.     首先回顧一下kvm

KVM虛擬機器IO處理過程(一) ----Guest VM I/O 處理過程

   虛擬化技術主要包含三部分內容:CPU虛擬化,記憶體虛擬化,裝置虛擬化.本系列文章主要描述磁碟裝置的虛擬化過程,包含了一個讀操作的I/O請求如何從Guest Vm到其最終被處理的整個過程.本系列文章中引用到的linux核心程式碼版本為3.7.10,使用的虛擬化平臺是KVM,q

在linux上基於KVM虛擬機器搭建lamp

1.準備網路拓撲圖實現基於KVM的虛擬化,需要三臺kvm虛擬機器,分別安裝mysql,php-fpm,httpd,其次,需要在安裝php-fpm上安裝php-mysql,用來使php能夠連線上mysql資料庫,同時需要兩個虛擬網橋,以及一個物理橋用來保證外部與php-fpm伺服器的連線,同時保證mysql伺服