2020-04-07

Hyper-V 搬移硬碟

使用 Hyper-V 建立虛擬機器後,如果想要複製機器可以使用匯出/匯入的方式,匯出/匯入亦可透過 Power Shell 操作,或者想先建立一個 Base machine,之後利用 Base machine 快速建立其他機器時,亦可利用匯出/匯入的功能。

匯入的類型選擇第三種「複製虛擬機器(建立新的唯一識別碼)」,存放虛擬機器的資料夾必須和原來的不同。匯出時會連同檢查點一起匯出,不是單純的把虛擬硬碟匯出。




兩個需求


  • Base 和其他後來建立機器的映像檔放在同一個資料夾
  • Base 映像檔已經合併了所有的檢查點( 快照,Snapshot)
匯入 base 的機器時,虛擬機器的硬碟(vhdx 檔)檔名仍和原來的一樣,因此必須指定另一個資料夾,不符合我第 1 個需求。在匯入時如果之前做過快照,會連同檢查點的檔案一起匯入,而 Hyper-V 的檢查點是種差異磁碟,如果將最早的 vhdx 檔改名直接複製,則中間做過的系統更新就會消失。

那要如何同時滿足這兩個需求呢?後來在 [如何手動還原 Hyper-V 的 VM 與 Snapshots 到另一台主機] 找到將 Snapshot 合併回父 vhdx 的方法,同時又可以指定新檔名的方法,這樣就能直接建立一台新的虛擬機器,並指定 vhdx 檔做為硬碟。


合併 Snapshot 並指定新檔名

  1. 選取編輯磁碟便會啟動編輯磁碟精靈
  2. 選取最新的 avhdx 檔,或是想要合併的檢查點
  3. 選擇合併
  4. 合併至新的虛擬硬碟並指定檔名
  5. 建立新的虛擬機器,並連接新的虛擬硬碟
  6. 在虛擬機器列表中便可看到新舊機器


CentOS 啟動網路

我的 Base 是 CentOS 8,在建立新虛擬機器後,遇到沒有網路的問題,以下是啟動網路的方法。
  1. 用 ifconfig 指令查看網路,如果沒有就先看一下 /sbin/ 底下有沒有 ifconfig,再沒有就安裝 net-tools
     
    # 安裝 net-tools
    sudo dnf install net-tools
    
  2. 啟動網路,我的是 eth0,就輸入以下指令
     
    sudo ifup eth0
  3. 如果希望開機便自動啟動網路,修改檔案 /etc/sysconfig/network-scripts/ifcfg-eth0,將 ONBOOT=no 改為ONBOOT=yes


利用差異磁碟可節省實際硬碟空間

將父磁碟設為唯讀,新增子磁碟為「差異磁碟」,在建立新虛擬機器時連接至子磁碟,這樣可以節省硬碟空間,不過一旦虛擬機器太多時,父磁碟將成為效能瓶頸。

參考網頁


  1. Day-12 Hyper-V 3.0實戰之-另一種備份的方式(匯出匯入虛擬機器)
  2. [Hyper-V]如何在Hyper-V 3.0上進行虛擬主機的複製
  3. 如何手動還原 Hyper-V 的 VM 與 Snapshots 到另一台主機
  4. Linux CentOS Network unreachable 處理解決方式
  5. [HyperV] 差異磁碟

沒有留言:

張貼留言

您好:

感謝您來訪這個小站,因為工作繁忙的關係,我並不會時常查看留言,所以可能會很晚才回覆,請見諒。