关于虚拟机迁移文档(p2v v2v
全文目錄
1:相關概念
2:手工遷移
2.1 P2V之再生龍
2.2 其它工具(有本中文讀物)
3:自動遷移(適用于v2v)
3.1 shell遷移(試用)
3.2 ansible遷移(試用)
3.3 windows圖形化工具?(想的美)
4:額外引用
5:在不停機的情況下如何p2v
5.1 借助vmware的力量
5.2 借助賽門鐵克(smantec)之力
1:關于遷移涉及到的諸多概念
? ? ? ? ? ? ? ?
有幸接觸到一篇關于遷移方案調研的文檔,此文檔詳細羅列了當下遷移所涉及到的相關概念及相關工具,雖然沒有提及遷移步驟,但閱讀此文深感自己底蘊不足;
為了避免整體抄襲之嫌,這里摘錄部分個人認為重要的概念
?A 整體遷移時間:從源主機開始遷移到遷移結束的時間
?B 停機時間:遷移過程中,源主機、目的主機同時不可用的時間
?C 對應用程序的性能影響:遷移對于被遷移主機上運行服務性能的的影響程度
?D 離線遷移:
離 線遷移(offline migration):也叫做常規遷移、靜態遷移。在遷移之前將虛擬機暫停,如果共享存儲,則只拷貝系統狀態至目的主機,最后在目的主機重建虛擬機狀態, 恢復執行。如果使用本地存儲,則需要同時拷貝虛擬機鏡像和狀態到目的主機。到這種方式的遷移過程需要顯示的停止虛擬機的運行。從用戶角度看,有明確的一段 服務不可用的時間。這種遷移方式簡單易行,適用于對服務可用性要求不嚴格的場合。
?E 在線遷移:
在 線遷移(online migration):又稱為實時遷移 (live migration)。是指在保證虛擬機上服務正常運行的同時,虛擬機在不同的物理主機之間進行遷移,其邏輯步驟與離線遷移幾乎完全一致。不同的是,為了 保證遷移過程中虛擬機服務的可用,遷移過程僅有非常短暫的停機時間。
? ? ? ? ? ? ? ?
下面這些內容我覺得講得太好了,所以整體就貼過來了,完全尊重作者的著作權
F linux遷移相關難點
磁盤分區名被硬編碼。磁盤虛擬化時,可能會使用不同類型的虛擬磁盤設備,這將會導致磁盤名字的變化。比如 Xen 虛擬機中的半虛擬化設備使用 /dev/xvda 而標準的 Linux 半虛擬化設備使用 /dev/vda。準備遷移的 Linux 系統中存在對 /dev/hd* 和 /dev/sd* 磁盤分區名分散的關聯,比如在 /etc/fstab 文件,啟動初始化文件系統 ramfs 和一些解析磁盤設備的開機啟動腳本文件中。V2V 遷移工具需要在整個磁盤上查找并修改這些關聯。有一個簡單的方法來避免這種情況: Linux 系統上主流的文件系統和交換分區類型可以使用 Lables 或 UUID 作為分區名。遷移時這些信息是被重點保護的,系統應該小心使用這些信息,一定不要使用設備作為分區名。另外,LVM 分區名和設備無關,在遷移中也不受影響。
作者批注:上面匯總的特別好,也就是說如果你是linux虛擬機,fstab掛載設備最好是uuid,或者你的虛擬機當時創建的時候是lvm;如果是windows的話,你需要改虛擬機xml文件磁盤對應的內容
網絡硬件設備的改變。當系統遷移時,網絡設備很可能產生變化。比如虛擬網絡設備和物理網絡設備的轉化或者不同類型的網絡設備之間的轉變。但是是他們的 Mac 地址沒有變化。MAC 地址是 IEEE 分配給物理設備制造商的,兩個物理設備不會有相同的 MAC 地址;然而虛擬網絡設備可能出現這種情況。所以在做虛擬機遷移時,你必須記錄每一個網絡設備的 MAC 地址,保證 MAC 地址和網絡設備的對應關系。
作者批注:這塊在遷移的時候我沒有過多關注,因為我的場合下允許虛擬機在遷移后MAC被更改,除非說某些業務指定MAC地址。當然了更改虛擬機MAC地址也不是什么難事,只是我對這個點以后還真沒有過多關注過
內核不支持某些虛擬設備。某些 Linux 發行版沒有 virtio 虛擬設備的驅動, 可能是因為 Linux 發行版早于虛擬設備發布了;或者虛擬設備的驅動是閉源的;或者是在系統編譯時去掉了。因此,有時我們另外需要一個完全不同的內核(比如 Xen 早期的版本就是這樣的)。無論如何,在客戶機上安裝一個新的內核并且使之可以啟動是一個很大的冒險,最好避免這樣做。
作者批注:這幾天我們有個環境的linux虛擬機改成virtio無法開機,換成ide之后進系統執行yum update升級下就好了,具體原因待查
Xwindow 需要重新配置。與磁盤、網絡設備一樣,系統遷移后顯示設備也會變化。理想的情況是 Xwindow 會自動處理這個的變化,探測所有的顯示設備并且使用它發現的第一個設備。但是這不意味著所有的 Linux 發行版都會以這種方式工作。
作者批注:低版本windows確實會存虛擬機遷移過去之后在設備管理器有一堆打著問號的設備,通常只要保證重要組件正常就行,像聲卡這類通常可以忽略;如果是完美主義者,可以安裝驅動
網絡環境的變化。靜態 IP 地址和靜態 DNS 解析在虛擬機遷移中 是一個麻煩的事情。盡管不是必須的,但是最好配置系統從 DHCP 服務器自動獲得所有的網絡配置信息。
作者批注:在遷移武漢大學的時候,因為要求虛擬機原內網IP不變,而我們平臺的交換機DHCP功能需要占用一個IP,而恰好有的遷移虛擬機與DHCP使用的IP沖突,所以當時是將交換機DHCP關掉,然后登陸虛擬機配置的靜態IP,而且這樣做還有一個好處:虛擬機在網絡這塊更加穩定,因為DHCP服務可能會DOWN...,而且我個人比較推崇靜態IP
CPU 的擴展指令集發生變化。遷移后的系統中,新的虛擬 CPU 或主板和舊的會有一些不同。CPU 的擴展指令集如 SSE,Vectors, NX 可能被加入或去掉。CPU 的型號和制造商信息可能被改變。因此,如果你想要優化虛擬系統上的軟件,這可能是浪費時間并且導致系統崩潰。最好是使用通用的軟件,讓程序在每次啟動的時候檢查運行環境和是否需要優化。實際上,實時遷移的狀況比這個還要復雜,因為處理器可能在程序的運行的過程中被改變。目前為止還沒有一個方案能很好的解決這個問題。
作者批注:鄙人對這塊沒看懂,好像是針對CPU驅動。截止目前沒有遇到這塊導致問題
如你所見,P2V 和 V2V 最大的問題在于硬件的改變。Linux 發行版本身應該可以處理所有的硬件變化:在系統啟動的時候去檢查所有的硬件,操作系統內核識別新的設備并尋找新的驅動處理它們 ,所有應用軟件都不要和硬件綁定,設計一個很好的模式來應對突然的環境變化
常見遷移工具
軟件 | 支持類型 | 特點 | 是否開源 |
virt-v2v | V2V | 只支持離線遷移 | 是 |
virt-p2v | P2V | 只支持離線遷移 | 是 |
clonezilla | P2V/V2V | 只支持離線遷移,通過將P或V備份出來,然后再手工導入V | 是 |
VMware Converter | V2V/P2V | 支持離線和在線遷移,遷移到vmware較好 | 否 |
XenConvert | V2V/P2V | 否 | |
Hyper-V | P2V | 否 | |
NetIQ PlateSpin Migrate | V2V/P2V | 類似傳統備份容災工具 | 否 |
Doubletake Move | V2V/P2V | 支持在線遷移,類似傳統備份容災工具 | 否 |
Quest vConverter | V2V/P2V | 類似傳統備份容災工具 | 否 |
RACEMI | V2V/P2V | 支持在線遷移,遷移到aws | 否 |
?
?2.1 P2V之再生龍
課外題:最早接觸的P2V工具是在寧夏運維VMware集群期間,有幸接觸到人家自己的P2V配套工具,論界面友好、操作步驟以及人性化設計,比再生龍比起來好用十萬倍
上圖
首先介紹一下用再生龍的P2V大致過程(具體的操作步驟可以參考李哥自己總結的文檔)
1:你要有一個再生龍ISO,下載鏈接:http://clonezilla.nchc.org.tw/clonezilla-live/download/download.php?branch=stable
2:你需要將源物理機或虛擬機關掉
3:你需要用光驅或者其它方式在物理機上利用ISO做引導
4:按照文檔操作步驟將源設備硬盤或分區信息通過支持的協議放到KVM所在的虛擬機里
5:到KVM檢查一下文件是否存在
6:用KVM起一個虛擬機,硬盤數量及大小與物理機一致,好吧,事實上是硬盤最好能大一點。
這里面要注意的是硬盤格式,如果是linux,推薦virtio? raw,如果是windows,推薦IDE raw
7:用ISO去導引這個虛擬機進行恢復。開機
8:如果恢復成功,那么恭喜你,向成功的方向已經邁出了堅定的一步。
9:如果是WINDOWS,趕緊看看缺不缺驅動。
--------------------------------這又是一條小分割線-----------------------------
上面只是轉換成了一臺虛擬機,如果我們要將它放至云平臺上使用,需要這么做
如果是windows,你需要安裝virtio驅動;如果是linux,請跳過10--15步
10:安裝的驅動是:RHEV-toolsSetup_3.3_14,??? 關機;
?rhev下載連接:鏈接:http://pan.baidu.com/s/1c1WAhhe 密碼:9ccn
virtio-win-0.1.102 下載連接:http://pan.baidu.com/s/1pKV7KJx 密碼:237i
備注:這里提一下安裝驅動的問題,如果你的宿主機不是redhat,你執行“RHEV-toolsSetup.exe”會提示你無法安裝,不用擔心,你直接進入 到tools目錄下把對應的文件安裝就可以了,windows嗎,你懂得,雙擊下一步即可,遇到無法安裝的忽略即可。
virtio-win這個包是假設你不想用rhev-toossetup安裝的前提下,也可以用這個包的文件,在設備管理器里手動更新驅動
11:填寫一加virtio硬盤,并將網卡模板改成virtio,??? 開機
13:查看設備管理器,確保磁盤驅動,網卡是virtio.??? 關機
14:刪除剛才添加的硬盤,并將系統盤改成virtio.??? 開機
15:確保虛擬機可以正常開機,并且網絡沒有問題。關機
16:找到你的虛擬機硬盤所在位置。把格式轉換成qcow2
17:之后以模板的形式上傳到平臺起虛擬機。或者在平臺創建一臺相等的虛擬機,通過替換硬盤文件。詳見例1
再生龍遷移工具使用文檔20151117.docx
?
注:這里寫一點關于安裝驅動的事;(不知道該放在什么地方好)
默認情況下,你在虛擬機里直接安裝RHEV-setuptool,它會包含所有驅動,這個在windows2008試過;但是經過測試發現在windows2003中,出現了硬盤及網卡驅不起來的現象,你需要單獨裝這幾個驅動,相應的驅動文件長這樣“virtio-win-0.1.102.iso”,你需要查看一下你的設備管理器,然后根據操作系統類型來更新驅動;
?
例1:
如果你的塊存儲使用的是ceph,你這么做:
(如果你是高手,你一定會起直接裝CEPH塊掛載到本地,沒錯,確實應該是這樣。不過,自動部署工具的計算節點的內核是2.6.32,然后你會痛苦的發現你居然得升級內核)
1:先把你在平臺里的虛擬機關機。從你這臺虛擬機的XML文件找到硬盤在CEPH中的位置,一般是volumes/volume-xxxxxx,就是用virsh dumpxml?? instace-xxxxx |more
2:復制該ID號,找個小本記錄下來;在CEPH先將它刪除掉,用rbd rm -p volumes ID
3:COPY你的鏡像到相應的計算節點,其實只要是任何一個CEPH節點都可以
4:上傳該鏡像,rbd? --p_w_picpath-format 2? import? -p volumes filename?? ID
5:啟動虛擬機,看看啥子情況
6:爆發吧小宇宙
這個例子非常適合于v2v,武漢大學就是這么搞的
?
例2:
有一種適合大量虛擬機轉換且效率相對上面方法高的方法,我也是聽聞某人間高手,大概思路如下,僅供參考
1:首先你得用再生龍得到物理機或者虛擬機文件,也就是那些目錄
2:直接在平臺起相應的虛擬機,記住硬盤的大小要相匹配
3:接下來應該是虛擬機掛光驅,但是平臺不支持此項功能;所以你需要有一個virt-manage,并且能夠連接到這臺虛擬機的相應計算節點;
4:然后你還需要將你的平臺虛擬機與存儲你目錄的網絡打通,實現方法沒有規定,只要能通;我能想到的是,我的筆記本直接接入平臺的管理網,然后起一個redhat6.5虛擬機,安裝桌面與虛擬化,然后從管理網段中找一些沒有被用到IP,以方便P2V用
5:上面方法沒有親自實驗過,不過可以預料的是,windows一定要安裝驅動,否則能不能開機將是一個大問題。關于驅動的描述下面有敘述
續:
書接上回
這里重點強調一下關于windows的p2v,通常你在起虛擬機用再生龍還原系統的時候,你的虛擬機硬盤類型建議是IDE,這樣你還原后是可以直接開機的,如果你強制改成virtio,你會還到windows那熟悉的藍屏笑臉沖你笑;解決這一辦法就是先保證你的第一塊盤,也就是系統盤是IDE,然后開機,安裝RHEV-toolsetup;然后關機;這時候你要將你的網卡改成virtio,然后最重要的是你要額外填加一塊virtio的硬盤,然后開機,這時候系統會發現新硬件并安裝相應的驅動;之后關機,刪除第二塊硬盤,并將系統盤改成virtio,然后開機。如果可以正常引導。恭喜你,P2V就算成功了。
??? 以上根據實際情況整理而出,都是血淋淋的教訓,那是個不眠之夜,花費數小時,犧牲了好多腦細胞才搞定的。
希望可能幫到有緣人
?
?????????????????? 2015年12月14日
???????????????????? 劉福于深圳
最后寫一點關于遷移過程磁盤擴容的問題;
針對系統盤:首先,raw格式的文件是支持擴容的,所以當你有這方面需要可以直接搞:qemu-img resize [-q] filename [+ | -]size??? ;對于linux類的話,如果你的系統盤分區是lvm可以輕松的擴展;對于windows類的話,想實現系統盤擴容,前提是你的操作系統要大于或等于2008,在磁盤管理里有擴展選擇,windows2003肯定沒戲;當然了不排除能借住第三方磁盤管理工具實現,這方面沒研究。
---------------------------------------------------------------------------------------------------------------------------------
針對2003磁盤擴容,偶然看到一篇文章說可以,目測是可以的。
本著發楊雷峰的精神,我把附件下載起來了,花了一個豆,心疼,
51CTO下載-ExtPart.zip
文章參考:http://leihenzhimu.blog.51cto.com/3217508/773483
---------------------------------------------------------------------------------------------------------------------------------
針對數據盤:如上所述,擴大分區方法總是有的。但是,據我遷移的經驗來看,數據盤面臨的問題不是擴大,而是縮小;原因是前邊在創建數據盤的時候沒有估量好實際使用量,導致過大。比如2T的數據盤可能只能了幾百個G,這樣在導數據盤的時候導2T是很痛苦的;關于如何縮小我沒有大膽嘗試
上面步驟是基于你利用一個ISO或者光盤去引導物理的的步驟,你也可以制作一個類似于PXE引導:
http://www.clonezilla.org/livepxe.php
http://www.syslinux.org/wiki/index.php?title=PXELINUX
我沒試,有需要再搞吧
2.2 其它工具
暫略,我這人有個習慣,喜歡了一個工具,就會對其它工具排斥,所以這塊就沒有了。如果有大牛突然心情舒暢,歡迎在這里補充。
我決定基于這個文檔做幾個實驗,然后將步驟羅列出來,待親自補充
這里有一個紅帽的轉換工具說法手冊,中文版本
Red_Hat_Enterprise_Linux-6-V2V_Guide-zh-CN.pdf
?
?
-----------------------------------------------------------------------------------------分割線又來了--------------------------------------------------------------------------------------
3.1 shell腳本遷移(試用版)
A:寫這篇內容的背景因素
1:手工遷移太low
2:武漢大學手工遷移了太多,感覺以后如果再遷移的時候應該有個東西能夠幫助遷移
3:額,心情舒暢,也算一條
B:運行這個腳本的前提
1:我們假設你有臺物理機,然后上面有幾臺虛擬機;
2:然后你要把這幾個虛擬機導到我們的云平臺上;
3:其實就是v2v,其實過程很簡單,基本也沒啥也的,寫shell腳本其實是大材小用了;
4:其實是想用ansible寫來著,然后發現不會,只能先用shell練練
5:節點做下互信,這是能成功運行下面腳本的前提
6:欲導之,先建之。
7:假設你的虛擬機在EBS
8:虛擬機建好后直接關機
vim vm_to_openstack.sh
| ?#!/bin/bashecho "????????????????? <<永遠相信美好的事情即將發生>>"echo '''????????首先,這是一個微不足道的小腳本;這僅僅能實現kvm虛擬機導入到openstack????????1:如果是windows,可以在導入前安裝rhev驅動,或者導入后安裝;????????2:你需要提前在云平臺創建出一臺與你將導入的虛擬機規格一致的虛擬機:主要指系統盤或數據盤大小,當然還有操作系統類型等'''#指定源虛擬機磁盤所在目錄:必改項vm_base_storage_work="/root/liufu"#指定源虛擬機磁盤名稱:必改項vm_base_storage_name="liufu.raw"#來來來,做一個人燈合一vm_base_storage_url=$vm_base_storage_work/$vm_base_storage_name#明確一下源虛擬機磁盤類型:必改項vm_base_storage_type="raw"#明確一下目標虛擬機在rbd的名稱:必改項openstack_vm_rbd_id="volumes/volume-f3cadbd7-2fbf-4aa2-a097-8a50b1d01113"#明確一下云平臺管理節點IP:必改項openstack_manage_ip="183.169.128.151"#明確一下管理節點的工作目錄,就是放在哪:必改項openstack_manage_work="/root"#vm_base_storage_convert_name=$openstack_manage_work/$vm_base_storage_name#彈彈彈,把磁盤彈到管理節點echo "1:準備開始scp文件"scp $vm_base_storage_url $openstack_manage_ip:$openstack_manage_work#判斷,問美國大選誰能贏?if [ "$vm_base_storage_type" != "raw" ];then????echo "2:這不是一個raw格式文件,下面開始轉換格式并導入到ceph里;完成后可以開啟虛擬機。"#??? vm_base_storage_convert_name=$openstack_manage_work/$vm_base_storage_name"."$vm_type????ssh $openstack_manage_ip "rbd? rm $openstack_vm_rbd_id"?????ssh $openstack_manage_ip "qemu-img convert -p $openstack_manage_work/$vm_base_storage_name? -O rbd? rbd:$openstack_vm_rbd_id"????ssh $openstack_manage_ip "mv? $openstack_manage_work/$vm_base_storage_name /tmp "elseecho "2:這是一個raw格式文件,將直接導入到ceph里;完成后可以開啟虛擬機。"ssh $openstack_manage_ip "rbd -p volumes rm $openstack_vm_rbd_id"ssh $openstack_manage_ip "rbd? --p_w_picpath-format 2? import $openstack_manage_work/$vm_base_storage_name $openstack_vm_rbd_id"ssh $openstack_manage_ip "mv? $openstack_manage_work/$vm_base_storage_name /tmp "fiecho "看,彩虹"echo -e "\e[1;31m ========== \e[0m"echo -e "\e[2;33m ========== \e[0m"echo -e "\e[1;33m ========== \e[0m"echo -e "\e[1;32m ========== \e[0m"echo -e "\e[1;36m ========== \e[0m"echo -e "\e[1;34m ========== \e[0m"echo -e "\e[1;35m ========== \e[0m" |
?
? ? ? ? ? ? ? ?
注意事項:
在 上面腳本實現的基準上,如果原是qcow2格式,會在convert的時候直接通過rbd導進去,這個命令是參考openstack網站上的一篇博客,但 是經實驗發現這樣做有一個問題是:導入的鏡像的p_w_picpath-format為1,也就是說,在我們的產品里,ceph在導入的時候如果不指定這個參數,默認 就是1(據說最新的ceph版本默認為2),而在1的情況下,這個盤不支持快照,不支持快照。請注意。另外聲明,這個腳本不打算處理這個問題,由此帶來的 項目問題,本人不負責喲。
http://superuser.openstack.org/articles/how-to-migrate-from-vmware-and-hyper-v-to-openstack/
?
3.2 Ansible遷移
首先,將附件下載下來或者按照下文結構和內容整合一下,內容都在里面了。
運行腳本背景
這個代碼是要運行在你的虛擬機所在節點,,假設它是linux,并且安裝了ansible
然后只需要在group_vars這個文件里把相關的參數設置好,然后在vm_to_openstack.yml這個文件里根據你原虛擬機磁盤格式進行選擇,一次只能開一個;然后就沒有
后期待添加內容:
1:虛擬機擁有一塊或者多塊數據盤的情況
2:自動在云平臺創建虛擬機
結構目錄
[root@host-192-168-12-17 ansible]# tree? /etc/ansible/
/etc/ansible/
├── ansible.cfg
├── group_vars
│?? └── all
├── hosts
├── roles
│?? ├── qcow2
│?? │?? └── tasks
│?? │?????? ├── main.yml
│?? │?????? └── qcow2_to_openstack.yml
│?? └── raw
│?????? └── tasks
│?????????? ├── \
│?????????? ├── main.yml
│?????????? └── raw_to_openstack.yml
└── vm_to_openstack.yml
?
[root@host-192-168-12-17 ansible]# cat group_vars/all
#指定磁盤文件所在的路徑,注意最后的“/”要加上
src_file_dir: /etc/ansible/
#指定磁盤的文件名稱
file_name: cirros-0.3.3-x86_64-disk.qcow2
#指定要scp的對方節點所要放置的目錄
to_openstack_dir: /opt/test/
#指定在云平臺創建好待替換虛擬機在ceph的ID
volume_rbd_id: volumes/volume-c0480649-a931-4e75-b3f9-e95a64816baa
?
[root@host-192-168-12-17 ansible]# cat? hosts
[openstack]
1.1.1.1 ansible_ssh_user=root ansible_ssh_pass=xxxxx
?
[root@host-192-168-12-17 ansible]# cat roles/raw/tasks/raw_to_openstack.yml
---
- name: copy vm data volumes to openstack node
? copy: src="`src_file_dir``file_name`"? dest=` to_openstack_dir `
- name:? rm volume in ceph
? shell: rbd rm? `volume_rbd_id`
? ignore_errors: yes
- name:? import vm base
? shell: rbd --p_w_picpath-format 2 import? "`to_openstack_dir``file_name`" `volume_rbd_id`
?
[root@host-192-168-12-17 ansible]# cat roles/raw/tasks/main.yml
---
- include: raw_to_openstack.yml
?
[root@host-192-168-12-17 ansible]# cat roles/qcow2/tasks/qcow2_to_openstack.yml
---
- name: copy vm data volumes to openstack node
? copy: src="`src_file_dir``file_name`" dest=` to_openstack_dir `
?
- name:? rm volume in ceph
? shell: rbd rm? `volume_rbd_id`
? ignore_errors: yes
?
- name: convert this qcow2 file
#? shell: qemu-img convert -p "`to_openstack_dir``file_name`"? -O rbd?? rbd:`volume_rbd_id`
? shell: qemu-img convert -p -f qcow2 -O raw? "`to_openstack_dir``file_name`" "`to_openstack_dir``file_name`.liufu"
?
- name:? import vm base
? shell: rbd --p_w_picpath-format 2 import? "`to_openstack_dir``file_name`.liufu" `volume_rbd_id`
?
#- name: clean this data volumes
#? shell: mv "`to_openstack_dir``file_name`.liufu" /tmp
#? shell: mv "`to_openstack_dir``file_name`" /tmp
[root@host-192-168-12-17 ansible]# cat roles/qcow2/tasks/main.yml
---
- include: qcow2_to_openstack.yml
?
[root@host-192-168-12-17 ansible]# cat vm_to_openstack.yml
- name: install elasticsearch
? hosts: openstack
? user: root
? roles:
#??? - { role: raw }
??? - { role: qcow2 }
?
?
4:額外引用
引用幾篇文章
關于如何快速的將上TB的p2v的鏡像上傳到openstack平臺的方法
點評:老范這篇文章是基于先將虛擬機鏡像上傳到glance,然后再基于此鏡像創建虛擬機,然后再將模板刪除。他主要描述的是上上傳glance的時候如果避免體積太大導致上傳超時。本人不推薦這本方法,但也不排斥,條條大路通羅馬。
基于fuel的openstack新老集群遷移方案
點評:這篇文章巧妙的在從老集群的ceph導出的時候直接導入到新集群的ceph,這樣就能避免因為兩端的管理節點磁盤不足導致的無法遷移。我沒有用過這種方法,所以不確定數據在這種情況下到底是怎么流向的,也許真的是導出的時候直接不需要落盤直接通過網絡導入,恩,沒想明白。。。
武漢大學遷移
Windows2008r2破解登陸密碼
點評: 我的文章,恩,沒毛病
?
5:在不停機的情況下如何做p2v
5.1? 巧借vmware之力
有個項目要做p2v,并且要求業務不中斷。。。擦
后來在英明神武的項目經理指示中,可以借鑒vmware力量
經過實驗證明此方案可行,所以在這里大致歸納一下步驟
1:部署一套vmware環境
一臺配置比較好的物理機,裝esxi,裝vcenter server(可選);vcenter我個人覺得沒必要裝,到時候convert的時候直接指向這臺esxi主機,嗯,應該是這樣的,一會實驗一下。
注:如果你裝了vcenter server,默認的登錄名是administrator@vsphere.local
相關包下載:http://192.168.254.252/liufu-test/vmware/
1.1:刻錄esxi光盤
刻錄這個文件 VMware-VMvisor-Installer-6.0.0-2494585.x86_64.iso,只有幾百兆,CD光盤就可以
本著發揮雷蜂精神,刻錄工具已經準備好了:http://192.168.254.252/liufu-test/tools/ ?? 里面的ONES.rar是免安裝的,非常簡小強悍的刻錄工具,打開后選擇刻錄常見鏡像就成。另外一個nero得安裝,挺麻煩的,不過 很強大
1.2 :安裝esxi
首先把服務器的盤建議劃成一個大的raid,它好像沒有系統盤和數據盤的區分。嗯,先這樣做
然后光盤引導,安裝
默認,等
?
默認是dhcp,如果想改的話,進去就可以修改。我習慣進到troubleshooting options里把shell 和ssh打開
1.3 在筆記本上安裝client
安裝包也在上面提到的路徑里,雙擊下一步就完成了
1.4 連接至esxi
2:部署一套openstack
略
3:網絡上的要求
物理機? vmware? 筆記本? openstack這四得網絡可達
4:在筆記本上安裝vmware convert工具,然后填寫相關信息導到vmware里
?http://192.168.254.252/liufu-test/vmware/vmware%20converter/
一定要裝英文版那個,中文版那個問題,老報錯。把物理機的防火墻什么的統統關掉
巴巴一大堆,按提示操作就成
5:上面成功后,你在vmware里就有了一臺虛擬機,之后就簡單了,安裝virtio驅動和其它東西。之后關機
6:將虛擬機導出,目前能想到的方法如下:1:可以導到本地;2:導到ftp、nfs什么上面,筆記本空間有限;3:或許可以直接登陸esxi主機上,然后直接把文件scp至管理節點
6.1? 導至本地方法
? 這個方法測試還行,實際搞的話對筆記本要求太高,我可沒那么大的空間。只能擴展一個usb3.0的移動硬盤了
6.2搭建ftp
注:實驗證明,搭建ftp此路不通。原因是在導出的時候無法指定ftp服務器,雖然可以將ftp映射到本地,但映射的路徑在vsphere client導出的時候認不到
http://www.cnblogs.com/zhi-leaf/p/5983550.html
如果根空間小,可以找個空間大的目錄mount到ftp下
ln -s /var/lib/ceph/osd/ceph-0/liufu/ /var/ftp/pub/
mount --bind /var/lib/ceph/osd/ceph-0/liufu/
6.1 將ftp映射到筆記本
6.3 搭建nfs
注:這個方法實際證明也不行,導出速度太慢了,原因未查明
[root@node-1 ~]#yum -y install nfs-utils rpcbind
[root@node-1 ~]#vi /etc/exports
/var/ftp/pub/ 0.0.0.0/24 (rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501)
[root@node-1 ~]#exportfs -r
[root@node-1 ~]#service rpcbind start
[root@node-1 ~]#service nfs start
[root@node-1 ~]#chkconfig rpcbind on
[root@node-1 ~]#chkconfig nfs on
showmount -e ip
windows掛載nfs
先在控制面板激活nfs工具,然后執行下面的命令
這時候就可以在我的電腦里看到這個盤,點擊進去激活一下。之后就可以通過client導出了
6.4? 直接登陸esxi主機將磁盤scp至管理節點
需要驗證一下scp過去的文件能不能用,而且這個文件太大了,像這個500G(虛擬機磁盤大小確實是500G,但里面太多東西),光scp就需要一個半小時,而且直接占用500G,然后還得轉成raw格式,又得占用500G;用客戶端導出來的文件就沒有這么大,好糾結
需要將esxi的防火墻打開,方法如下
登陸esxi主機
這個方法在low,直接廢掉
?
7:將導出的內容上傳到openstack 節點,如果將openstack做為nfs服務器
8:轉格式,以此文件開機,確保虛擬機磁盤以virtio能開機
qemu-img convert -p -f vmdk -O raw liufu.vmdk liufu.raw
9:之后將此虛擬機搞到openstack里就結束了
rbd導的時候注意加p_w_picpath-format 2 參數
?
附1:kvm添加存儲池
在我們kvm只有一個默認的存儲池,就是/var/lib/libvirt/p_w_picpath ,如果你遠程用virt-manage新建虛擬機只能在這一個目錄操作,很不方便,下面提供添加指定目錄的存儲池方法
? virsh pool-define-as liufu? --type dir--target?/root
? virsh pool-list --all
? virsh pool-build liufu
? virshpool-start liufu
?? virshpool-autostart liufu
?
5.2? 借助賽門鐵克(smantec)之力
所謂,需求是推動社會進步的第一生產力,上面提到的那個項目明確要求要利用smantec軟件來搞,目前他們只用這個軟件做了備份,至于我們如何利用備份內容還原虛擬機是下面討論的內容
首先,這個工具是收費的。然后呢,是圖形化的
大概原理是:以windows舉例,是否支持linux待查。安裝軟件,然后制定備份任務,可以將某一個分區或者所有分區備份出指定的位置,通常當你的文件損壞或者丟失后可以用備份內容來找回,但我們發現這個工具有一個吊炸天的功能:能夠將備份內容轉換成vmdk文件,酷!!!,這一點正是我們苦苦尋覓的核心,有了它,p2v將簡單很多。
下面是詳細步驟
1:在源物理機上安裝
詳見附件work
?
賽門鐵克安裝及p2v過程.docx
大概總結一下這個軟件的使用流程:在物理機上安裝此軟件,然后在這個物理機上操作這個軟件,先執行一次備份任務,其實這個任務結果可以放到遠端的存儲服務器上,之后通過其自帶的功能將這個任務直接轉換成vmdk文件,我們拿到這個文件之后在kvm上將其展開,安裝rhev驅動等,最后保證虛擬機正常后將它傳到openstack里去。
?
?
?
?
?
?
?
?
?
?
轉載于:https://blog.51cto.com/liufu1103/1871391
總結
以上是生活随笔為你收集整理的关于虚拟机迁移文档(p2v v2v的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python fabric使用
- 下一篇: Sass学习笔记 -- 初步了解函数、运