網管人雜誌
本文刊載於 網管人雜誌第 80 期 - 2012 年 9 月 1 日出刊,NetAdmin 網管人雜誌 為一本介紹 Trend Learning 趨勢觀念、Solution Learning 解決方案、Technology Learning 技術應用的雜誌,下列筆記為本站投稿網管人雜誌獲得刊登的文章,網管人雜誌於每月份 1 日出刊您可於各大書店中看到它或透過下列圖示連結至博客來網路書店訂閱它。文章目錄
1、前言2、實作環境
3、P2V (Cold Cloning) – Linux OS
4、測試 P2V 轉換後的虛擬主機能否運作
5、P2V 可能失敗的原因
6、何謂 V2V (Virtual to Virtual)?
7、V2V – Microsoft Hyper-V R2 VM
8、測試 V2V 轉換後的虛擬主機能否運作
9、結語
1、前言
在前一篇文章中我們已實作 P2V Hot Cloning 轉換任務,雖然 VMware vCenter Converter Standalone 免費轉換工具並不支援 Cold Cloning 功能,但是我們可以透過相同的運作概念,搭配國網中心所開發的 Clonezilla 再生龍,達到 P2V Cold Cloning 的轉換效果,使運作於實體主機上的 CentOS 作業系統能夠遷移到 VMware vSphere ESXi 5.0 虛擬化平台上運作。
或者您也可以將以前運作於其它虛擬化環境中的虛擬主機,例如 Microsoft Virtual PC / Virtual Server / Hyper-V 上的虛擬主機進行格式轉換,達成所謂的V2V (Virtual to Virtual) 轉換任務,在本文中另一項實作便是採用 VMware vCenter Converter Standalone 免費轉換工具,將原本運作於 Microsoft Hyper-V R2 虛擬化平台上的 CentOS 5.7 虛擬主機,進行離線轉換後遷移至 VMware vSphere ESXi 5.0 虛擬化平台上運作。
2、實作環境
3、P2V (Cold Cloning) – Linux OS
請至國網中心 Clinezilla 再生龍自由軟體專案,進行映像檔下載的動作,本次實作採用 Clonezilla Live i486 版本,或者您可以視實體主機的 CPU 種類,採用針對 i686 CPU 最佳化的核心版本,或是針對 Intel64/AMD64 CPU最佳化的 amd64 核心版本。
請將您下載好的 Clonezilla Live i486 版本,燒錄成 CD/DVD 光碟片或製作成 USB 開機碟,至實體主機上透過該媒介進行開機的動作,並且將備份後的檔案存放於區域網路中的分享資源上即可 (例如 SMB/CIFS Server),由於備份過程與稍後的還原過程類似,因此目前就不在贅述,請參考還原過程步驟說明即可。
接著準備將剛才透過 Clonezilla Live 把實體主機進行備份作業的映像檔,進行還原到虛擬主機的動作,請使用 vSphere Client 連線至 vSphere ESXi 虛擬化平台上,建立一台虛擬主機其相關的虛擬硬體設定,請您參照目前實體機的硬體資源進行配置,例如 CPU Socket、CPU Cores、記憶體大小、硬碟數量、網路卡數量...等,完成後設定此虛擬主機採用剛才所下載的 Clonezilla Live i486 映像檔進行開機的動作,請記得勾選 Connect at power on 項目以免無法使用 ISO 映像檔開機 (如圖 1 所示)。
圖1、設定虛擬主機使用 Clonezilla Live i486 映像檔進行開機
請注意 !! 雖然 Clonezilla Live 備份軟體具備類似 Thin Provisioning 的功能,例如 此次實作中 CentOS 實體主機其硬碟大小為 160 GB,但是開啟 Clonezilla Live 壓縮功能後備份映像檔大小才 1.05 GB 而以,雖然如此但是您在建立虛擬主機的硬碟時,需要建立大於或等於原始硬碟空間也就是 160 GB 才行,否則在執行還原作業時 Clonezilla 偵測到解開後的來源端映像檔空間,大於現在的目的端硬碟空間時便會將還原作業進行中斷 (如圖 2 所示)。
圖2、Clonezilla 偵測到來源端映像檔大於目的端硬碟空間,因此還原作業中斷
當虛擬機器成功使用 Clinezilla Live ISO 映像檔開機後,將看到 Clonezilla 開機畫面預設為 30 秒倒數,或是您可以直接按下 Enter 鍵由「Clonezilla live (Default settings, VGA 800x600)」選項進入,下列為相關的選項說明:
- 操作畫面語系設定: 於 Choose language 視窗中您可以選擇「zh_TW.UTF-8 Chinese (Traditional) | 正體中文 – 臺灣」項目,將後續的操作畫面語系轉換為正體中文。
- 鍵盤設定: 在 Configuring console-data 視窗畫面中選擇「不要修改鍵盤對應」項目。
- 再生龍或命令列: 您可以選擇進入再生龍互動模式,或者直接進入命令列 (Command Line),此實作請選擇「使用再生龍」項目。
- 映像檔或裝置對拷: 您可以選擇「device-image」項目採用映像檔來處理硬碟,或者選擇 device-device 項目採用硬碟對拷的方式,此實作請選擇「device-image 使用印象檔處理整顆硬碟或部份分割區」項目。
- 掛載映像檔的方式: Clonezilla 支援許多方式來取得備份映像檔,例如 本機硬碟、SSH、Samba、NFS...等,此實作中已經將先前的備份映像檔存放於網路上 Windows 分享資料夾中,因此選擇「samba_server 使用網路芳鄰伺服器的目錄」項目。
- 網路設定: 由於我們選擇以網路傳送的方式來取得備份映像檔,因此必須要設定網路組態,由於實作環境中已經具備了 DHCP Server,因此選擇「dhcp 使用 DHCP 來自動設定」項目。
- 指定 Samba IP 位址: 接著請指定存放備份映像檔的 IP 位址,此實作中為「10.10.25.165」。
- 網域名稱: 由於實作環境中並沒有 AD 網域,因此可略過此設定。
- 存取備份映像檔帳號: 此實作中將備份映像檔存放於 Windows 分享資料夾中,並且該分享資料夾有設定帳號及密碼保護,因此請於此時輸入可存取該資料夾的帳號名稱,此實作為「weithenn」。
- 備份映像檔資料夾: 請設定存取備份映像檔的資料夾路徑,此實作為「/iso」。
- 存取備份映像檔密碼: 請輸入能存取備份映像檔資料夾的使用者密碼,此實作為「123456」。
- 掛載映像檔目錄: 上個步驟中若正確輸入能存取備份映像檔資料夾的使用者密碼後,此時將會列出成功掛載備份映像檔資料夾的資訊,此實作為「//10.10.25.165/iso 2.7T」 (如圖 3 所示)。
- 初學或專家模式: 您可選擇預設的初學模式,或者可調整進階參數的專家模式,此實作為選擇「Beginner 初學模式:接受預設的選擇」項目。
- 還原模式: 您可以依需求選擇進行備份或者還原作業,此實作為選擇「restoredisk 還原印象檔到本機硬碟」項目。
- 選擇印象檔: Clonezilla 會自動尋找備份映像檔,由於在分享資料夾中僅存放一份備份映像檔,因此還原項目只有一項可以選即「20120112-CentOS57」。
- 選擇目的端硬碟: 此時將顯示此台虛擬主機的硬碟清單,請記得此硬碟空間必須大於或等於實體機硬碟,否則還原作業將會失敗。
- 上述相關設定確認無誤後,再開始進行還原作業以前,Clonezilla 仍會貼心的提醒您二次,此還原行為將造成原有硬碟中資料被蓋掉,再次確認後便開始進行還原作業,也就是開始進行 P2V Cold Cloning 轉換任務 (如圖 4 所示)。
圖3、成功掛載備份映像檔目錄
圖4、開始進行還原作業,也就是 P2V Cold Cloning 轉換任務
4、測試 P2V 轉換後的虛擬主機能否運作
當 P2V Cold Cloning 轉換任務完成後,若您想要測試轉換後的虛擬主機能否運作,建議您將虛擬主機的網卡功能先暫時關閉 (Connect at power on),以避免虛擬主機開機後因為 IP 位址、主機名稱...等網路組態,與目前運作中的實體主機相同造成衝突的情況。不過當您將轉換後的 CentOS 虛擬主機開機之後,可能會看到令人失望的畫面,發生「Kernel panic – not syncing : Attempted to kill init !」的錯誤訊息,整個開機程序中斷並且無法進入作業系統 (如圖 5 所示)。
圖5、P2V Cold Cloning 轉換後的虛擬主機無法開機進入作業系統 (發生 Kernel panic)
關於此問題的解決方式其詳細內容請參考 VMware KB-1002402 文件,筆者將此問題的解決方式以如下步驟簡述:
1. 將此虛擬主機關機後以 CentOS 5.7 安裝光碟開機,並且於 CentOS 開機畫面輸入「linux rescue」進入救援模式 Rescue Mode 中,接著選擇採用「English」語系 >> 採用「us」鍵盤模式 >> 選擇「No」不設定網路組態 >> 選擇「Continue」項目確定進入救援模式中。
2. 順利進入救援模式後請輸入「chroot /mnt/sysimage」指令,將目前的檔案系統環境由光碟掛載點,切換回虛擬主機的硬碟掛載點,接著您可以使用「ls /lib/modules」指令,或「cat /etc/grub.conf」指令查看檔案內容來得知 Linux 核心版本 (kernel version),此實作中所查看到的核心版本為「2.6.18-274.el5PAE」。
3. 確認核心版本後執行「cd /boot」指令切換目錄,接著備份原本的 Ramdisk 映象檔之後,便可執行指令「mkinitrd –v –f initrd-2.6.18-274.el5PAE.img 2.6.18-274.el5PAE」,重新建立 Ramdisk 映象檔 (如圖 6 所示),接著輸入二次「exit」指令以退出救援模式,此時系統便會自動重新啟動,請記得退出 CentOS 5.7 安裝光碟即可。
圖6、重新建立 Ramdisk 映象檔
4. 重新啟動後進入 CentOS 作業系統時首先會請您設定解析度的畫面 (如圖 7 所示),設定完成後便會順利進入 CentOS 作業系統,此時可以看到原先在實體機上運作的 Apache Web 服務也順利啟動,並且使用瀏覽器也可以看到 Apache 預設頁面,P2V Cold Cloning 轉換任務成功 (如圖 8 所示)!!
圖7、重新設定螢幕解析度
圖8、P2V Cold Cloning 後的虛擬主機 Apache Web 服務啟動成功
5、P2V 可能失敗的原因
其實不管是 P2V Hot Cloning 或 P2V Cold Cloning,您可以看到雖然我們可以順利將實體機遷移至虛擬化平台上運作,但有時可能會遭遇到一些困難或失敗的情況,因為在實體機轉換為虛擬機器的過程中,有些硬體裝置一定會改變例如 CPU、網路卡 (MAC Address)、顯示卡 (採用 VMware SVGA)、磁碟類型 (SCSI/IDE)、Disk Controller...等,以上一篇及本文所實作的 P2V 實體主機 CentOS 作業系統至虛擬化平台時,就必須要重新建立 Ramdisk 映像檔後才能正常運作。除此之外仍然有許多狀況可能會導致 P2V 失敗,例如:
- 應用程式需要特別的電腦週邊 (例如 擷取卡、加密狗、USB Key...等),便會因為無法進行虛擬化而導致 P2V 任務失敗。
- 應用程式鎖定實體主機雜湊所產生的 Serial Number,因此將會因為轉換至虛擬化平台上導致運算出來的雜湊值不同,因而導致 P2V 任務失敗。
- 應用程式鎖定特定的網卡 MAC Address (例如 Maya...等),將會因為虛擬化後 MAC Address 不同而導致虛擬化失敗。
6、何謂 V2V (Virtual to Virtual)?
將不同產品性質的虛擬機器檔案格式進行轉換後,在適合的企業虛擬化技術平台上進行運作的動作稱之,以本文實作所採用的 VMware vCenter Converter Standalone 轉換工具來說,可以將原本運作於 Microsoft Hyper-V R2虛擬化技術平台上的虛擬主機,或者也能將備份軟體 (例如 Arconis、Symantec BESR、Norton Ghost …等) 所備份好的檔案進行轉換作業後,運作於 VMware 虛擬化技術平台上。
7、V2V – Microsoft Hyper-V R2 VM
Converter Standalone 免費轉換工具不只支援 P2V Hot Cloning 功能,也支援將第三方備份軟體 (例如 Arconis True Image、Symantec BESR、LiveState Recovery …等) 所備份好的檔案進行轉換格式後,運作於 VMware 虛擬化技術平台上,或者如同稍後要實作將原本運作於 Microsoft Hyper-V R2 上的 CentOS 虛擬主機,將期以離線轉換格式的方式遷移到 VMware vSphere ESXi 虛擬化平台上繼續運作,以下為 VMware 官方所表列支援 V2V 的虛擬主機作業系統:
- Windows XP Professional SP2、SP3
- Windows Vista SP1、SP2 (Home Edition 除外)
- Windows 7 (Home Edition 除外)
- Windows Server 2003 SP1、SP2、R2 (32-bit and 64-bit)
- Windows Server 2008 SP2、R2 SP2 (32-bit and 64-bit)
- SUSE Linux Enterprise Server 10、11
- RHEL 5.2、5.3、5.4 (32-bit and 64-bit)
圖9、準備 V2V 運作於 Microsoft Hyper-V R2 之上的 CentOS 虛擬主機
以下為 V2V 轉換格式於 Microsoft Hyper-V R2 虛擬化平台上的虛擬主機時,企業中運作的防火牆需要針對 Converter Standalone 轉換工具、來源端 (Microsoft Hyper-V R2 虛擬化平台)、目的端 (ESX/ESXi Host 虛擬化平台),所需要開放的協定以及連接埠 Port 號,其中若企業網路環境內有使用 NetBIOS 的話則不需要開放 Port 445,若未使用 NetBIOS 的話則不需要開放 Port 137、138、139: (詳細資訊請參考 VMware KB-1010056)
請先將運作於 Microsoft Hyper-V R2 虛擬化平台上的 CentOS 虛擬主機「關機」,否則屆時您將會發現無法按下 Next 鍵繼續 V2V 的轉換任務 (如圖 10 所示)。
圖10、Microsoft Hyper-V R2 虛擬化平台上的虛擬主機未關機無法繼續轉換
要進行 V2V 轉換作業請開啟 Converter Standalone 轉換工具後,按下「Convert machine」項目 (請記得使用系統管理員身分執行開啟轉換工具),接著在來源端設定視窗中於 Select source type 下拉式選單中選擇「Hyper-V Server」項目,然後在 Specify server connection information 區塊中,輸入可管理 Microsoft Hyper-V R2 虛擬化平台的資訊,此次實作中 Hyper-V 實體主機 IP 位址為 「10.10.25.115」,並輸入可登入管理的帳號及密碼,此實作為「WEITHENN\Administrator」,確認輸入資訊無誤後請按下「Next」鍵,此時轉換工具便會先嘗試連線至 Hyper-V 主機上,若連線成功溝通無誤後將出現移除 Agent 的選項訊息,詢問您是否要在 V2V 轉換作業完成後,自動執行或是由您自行手動將 Agent 從 Hyper-V 主機上移除,以確認稍後的 V2V 轉換作業運作無誤 (如圖 11 所示)。
圖11、輸入可管理 Microsoft Hyper-V R2 虛擬化平台的資訊
接著將出現運作於 Microsoft Hyper-V R2 虛擬化平台中的虛擬主機,由於目前 Hyper-V 上只運作一台虛擬主機,因此在清單中才只出現一台,若虛擬主機過多時您可以在 Search for name with 輸入虛擬主機名稱,進行搜尋過濾的動作,請點選要進行 V2V 格式轉換作業的虛擬主機 (此實作為 CentOS57) 後,按下「Next」鍵繼續轉換程序 (如圖 12 所示)。
圖12、選擇進行 V2V 格式轉換作業的虛擬主機
接著在目的端設定視窗中,請於 Select destination tyep 下拉選單內,選擇「VMware Infrastructure virtual machine」項目,並於 VMware Infrastructure server details 區塊中,輸入屆時要運作該虛擬機器的 ESX/ESXi Host 虛擬化平台資訊,此次實作中 ESXi Host 虛擬化平台其 IP 位址為 「10.10.25.119」,並輸入管理帳號及密碼後確認輸入資訊無誤後按下「Next」鍵,此時轉換工具會嘗試能否以 SSL (Port 443) 協定連線至虛擬化平台,若連線成功溝通無誤後將出現憑證安全訊息請按下「Ignore」鍵即可,以確認稍後的轉換作業運作無誤 (如圖 13 所示)。
圖13、選擇目的端主機 ESX/ESXi Host 虛擬化平台
當 Converter Standalone 轉換工具順利與目的端主機 (ESXi Host) 溝通後,您便會在 Inventory for 區塊中看到虛擬化平台上目前運作的虛擬主機狀況,請在 Name 欄位中輸入您屆時希望將目前實體主機轉換成虛擬主機後,在虛擬化平台上顯示的「虛擬主機名稱 (此實作輸入 V2V_CentOS57)」,確認後按下「Next」鍵即可 (如圖 14 所示)。
圖14、設定 V2V 轉換作業完成後屆時的虛擬主機名稱
確認虛擬主機名稱後,接下來為選擇此虛擬主機屆時要存放在虛擬化平台上何處「儲存資源」,請於 Datastore 區塊中依照您目前實體主機的磁碟空間,選擇適合擺放在虛擬化平台上的儲存資源,本次實作為存放於虛擬化平台本機磁碟「datastore1」中,而在 Virtual machine version 區塊中,則是選擇屆時此台轉換後的虛擬主機所採用的「虛擬機版本」,其中版本 Version 4 為運作於舊版 ESX 3.x 虛擬化平台,而 Version 7 為運作於 ESX /ESXi 4.x 虛擬化平台,最後 Version 8 則是運作於目前最新版 ESXi 5.x。而在 Inventory 區塊中如果一開始連結的目的端是 VMware vCenter 主機,則此區塊中將顯示可用的 ESX/ESXi Host 清單,因為本實作為直接連結 ESX/ESXi Host,因此此區塊中只有一台 ESX/ESXi Host (ESXi5.weithenn.org) 可供選擇,相關資訊確認無誤後按下「Next」鍵即可 (如圖 15 所示)。
圖15、選擇虛擬主機儲存空間及 Virtual machine version
請注意!! 新版本的虛擬化平台可以「向下相容」運作舊版的 Virtual machine version,但舊版的虛擬化平台則不支援運作新版本的 Virtual machine version,舉例來說您無法將 Version 8 的虛擬主機運作於 ESX /ESXi 4.x 虛擬化平台之上,並且虛擬機器的 Virtual machine version 一旦選定後便無法改變。
最後則是當您將實體主機轉換成虛擬主機後是否進行其它組態設定,例如 為轉換後的虛擬主機增加硬碟、增加網路卡、設定當轉換任務完成後將來源端主機自動關機、設定當轉換任務完成後自動將虛擬主機開機 (預設為關機)、設定輔助虛擬機 Helper VM 網路設定...等,一般來說除非有特殊需求否則採用預設值即可,相關資訊確認無誤後按下「Next」鍵,便出現此轉換任務的相關設定值再次確認無誤後按下「Finish」鍵,便立即進行 V2V 轉換格式任務 (如圖 16 所示),開始進行轉換格式任務後您可以在 Converter Standalone 轉換工具中,查看到目前轉換進度百分比與預估時間以及其它相關資訊 (如圖 17 所示)。
圖16、再次確認相關設定值是否無誤便進行 V2V 轉換格式任務
圖17、查看目前轉換進度百分比與預估時間以及其它相關資訊
8、測試 V2V 轉換後的虛擬主機能否運作
轉換格式作業完成並啟動虛擬機器後,您可以看到原本在 Microsoft Hyper-V R2 虛擬化平台中運作的虛擬主機,經過轉換格式後順利運作於目前的 VMware vSphere ESXi 虛擬化平台中,當然原本的相關服務也都運作正常,可以檢查原先在虛擬機上運作的 Apache Web 服務是否順利啟動,以及使用瀏覽器是否看到預設頁面,至此 V2V 轉換任務成功 (如圖 18 所示)!!
圖18、將 Microsoft Hyper-V R2 虛擬機透過 V2V 遷移至 VMware vSphere ESXi
9、結語
雖然虛擬化議題不斷發酵,而企業在了解到虛擬化平台所帶來的彈性及優勢後,也紛紛在企業環境中建置虛擬化平台,不過原本在線上服務的實體主機該如何遷移到虛擬化平台上繼續運作呢? 透過前一篇的 P2V Hot Cloning 實作,以及本文的 P2V Cold Cloning 及 V2V 實作後,期望能幫助讀者將原本線上服務的實體主機順利遷移到虛擬化平台上運作,以享受到虛擬化平台的彈性及優勢。