因為換機器的關係,用了五年的 vm esxi5.5也一併搬到新的伺服器中。
虛擬機都不見
因為出了一點意外,原本的伺服器esxi5.5掛了,導致裡面的虛擬機都不見。
不過還好儲存體裡面的檔案都還在,意外一直發生…
本來想說用vsphere的方式一個個下載檔案,結果實在太慢了,全部做完要一個星期。
==> 想說用ssh登入直接拷背,但都弄了很久爬了很多文,就是登不進去。
==> 重設 esxi5.5,導致所有虛擬機設定檔遺失,這個重設不是我想像中的重設,慘…
==> 結果ssh突然可以登入,我的想法是用winscp 把檔案拷到桌機,沒想到他下載的速度是 10MB/s
==> 我想說應該是網路速度的問題,換了1G 網卡速度最高就是 30 MB/s,一個虛擬機要下載約半個小時。
==> 好不容易下載完一個虛擬機,要上傳到新的機器 ESXI7.0中,發現上傳速率只有 10 MB/s,好慢。
==> 後來突發奇想,想說 ESXI5.5直接scp到ESXI7.0就好了,不用透過桌機可以快很多,結果忙活了半天,一直出現ssh加解密問題。
no matching mac found: client hmac-sha1,hmac-sha1-96,hmac-md5,hmac-md5-96,hmac-ripemd160,hmac-ripemd160@openssh.com server hmac-sha2-512,hmac-sha2-256
原來兩台的加解密方式不對,導致不能連。
==> 想說升級 ESXI5.5 的ssh,發現完全不能升級,於是直接拷背的路不通,只能透過桌機。
░░░░░░░░░░░░░░░ 經 ░░░ 過 ░░░ 漫 ░░░ 長 ░░░ 的 ░░░ 等 ░░░ 待 ░░░░░░░░░░░░░░░░░░
經過漫長的拷背過程,終於複製完畢。
在ESXI7.0上還原ESXI5.5的虛擬機
步驟一,建立虛擬機
步驟二,選取已存在的檔案
儲存體中的目錄匣是花很多時間搬進去的,都是淚。
步驟三,確認。選取要還原的vmx檔按下一頁完成。
步驟四,建立完後你會看到你的虛擬機,按滑鼠右鍵選「編輯設定」
步驟五,設定好硬體配置後,看起來似乎一切正常
如果你的磁碟沒有自動出現,你也可以點擊「新增硬碟」-->點擊「現有硬碟」
然後到目錄中找到可以使用的vmdk檔新增。
一切就序後,開機。
如果順利的開機,恭禧老爺…
但是我要啟動時發現,無法啟動。
無法啟動我的虛擬機
他說他無法列舉我所有的磁碟。
我SSH進到系統,切到儲存體的目錄,一般是在:
/vmfs/volumes/<儲存體名稱>/<虛擬機目錄>
$ ll -h
total 137602304
drwxr-xr-x 1 root root 76.0K Jun 20 14:59 .
drwxr-xr-t 1 root root 76.0K Jun 20 14:50 ..
-rw-r--r-- 1 root root 592.1M Dec 19 2020 Centos8_244-000001-delta.vmdk
-rw-r--r-- 1 root root 26.5G Jun 19 02:39 Centos8_244-000002-delta.vmdk
-rw-r--r-- 1 root root 561 Dec 19 2020 Centos8_244-000001.vmdk
-rw-r--r-- 1 root root 561 Dec 19 2020 Centos8_244-000002.vmdk
-rw-r--r-- 1 root root 4.0G Dec 19 2020 Centos8_244-Snapshot2.vmsn
-rw-r--r-- 1 root root 13 Dec 19 2020 Centos8_244-aux.xml
-rw-r--r-- 1 root root 50.0G Jun 20 07:53 Centos8_244-flat.vmdk <== 磁碟資料檔
-rw-r--r-- 1 root root 8.5K Jun 20 01:36 Centos8_244.nvram
-rw-r--r-- 1 root root 505 Jun 20 01:32 Centos8_244.vmdk <== 磁碟組態檔
-rw-r--r-- 1 root root 480 Dec 19 2020 Centos8_244.vmsd
-rw-r--r-- 1 root root 3.8K Jun 20 07:53 Centos8_244.vmx <== 虛擬機組態檔
-rw-r--r-- 1 root root 266 Dec 19 2020 Centos8_244.vmxf
-rw-r--r-- 1 root root 142.8K Mar 21 19:49 vmware-11.log
-rw-r--r-- 1 root root 142.7K Mar 30 02:23 vmware-12.log
-rw-r--r-- 1 root root 142.7K Mar 31 10:39 vmware-13.log
-rw-r--r-- 1 root root 183.8K Jun 19 22:45 vmware-14.log
-rw-r--r-- 1 root root 136.9K Jun 19 23:08 vmware-15.log
-rw-r--r-- 1 root root 129.9K Jun 20 01:13 vmware-16.log
-rw-r--r-- 1 root root 167.9K Jun 20 07:53 vmware.log
-rw------- 1 root root 81.0M Jun 20 01:08 vmx-Centos8_244-5ed7af94b3c0cd96f9-2.vswp
Centos8_244.vmdk 就是我加入的磁碟,但是 Centos8_244-000001.vmdk Centos8_244-000002.vmdk … Centos8_244-00000n.vmdk
這又是什麼,又很占空間。
我耍小聰明失敗
試了很久,刪除又加入,加入又刪除,還是不行啟動,錯誤一樣。
我就想把所有的 Centos8_244-00000*.vmdk 改名,然後重新啟動,ok了。
但是進到系統發現,資料都是舊的。
真正的做法,先要把所有磁碟先合併
原來是只要有建立過快照,那麼原磁碟就不會再去更動,會產生一個新的檔叫作 xxx-delta.vmdk [2]
原來如此,我如果把後面的 -00000*.vmdk 移除或更名的話,那之後的變更都不會存在了,於是我想通了,就是要去原esxi5.5機器先把檔案merge。
為什麼是原本的esxi5.5中做合併了?不能在esxi7.0上做嗎?不能,我這樣做的時後出錯。
esxi有一個合併所有快照和差異檔案的方法,英文叫作 consolidate disk
先ssh進到 ESXI5.5 的系統中,進到虛擬機的目錄中。
下指令
# cd /vmfs/volumes/<儲存體名稱>/<虛擬機目錄>
# vmkfstools -i Centos8_244-000002.vmdk Centos8_244.clone.vmdk
Destination disk format: VMFS zeroedthick
Cloning disk 'Centos8_244-000002.vmdk'...
Clone: 100% done.
這樣會多建立出兩個檔案:
Centos8_244.clone-flat.vmdk.filepart
Centos8_244.clone.vmdk
然後把這兩個檔案拷到ESXI7.0的目標目錄中
然後把其它的vmdk都刪了,不用怕,像這樣,畫線的檔都可以刪掉:
$ ll -h
total 137602304
drwxr-xr-x 1 root root 76.0K Jun 20 14:59 .
drwxr-xr-t 1 root root 76.0K Jun 20 14:50 ..
-rw-r--r-- 1 root root 592.1M Dec 19 2020 Centos8_244-000001-delta.vmdk
-rw-r--r-- 1 root root 26.5G Jun 19 02:39 Centos8_244-000002-delta.vmdk
-rw-r--r-- 1 root root 561 Dec 19 2020 Centos8_244-000001.vmdk
-rw-r--r-- 1 root root 561 Dec 19 2020 Centos8_244-000002.vmdk
-rw-r--r-- 1 root root 4.0G Dec 19 2020 Centos8_244-Snapshot2.vmsn
-rw-r--r-- 1 root root 13 Dec 19 2020 Centos8_244-aux.xml
-rw-r--r-- 1 root root 50.0G Jun 20 07:53 Centos8_244-flat.vmdk <== 磁碟資料檔
-rw-r--r-- 1 root root 8.5K Jun 20 01:36 Centos8_244.nvram
-rw-r--r-- 1 root root 505 Jun 20 01:32 Centos8_244.vmdk <== 磁碟組態檔
-rw-r--r-- 1 root root 53687091200 Jun 19 21:23 CentOS244.clone-flat.vmdk <== 只保留這兩個
-rw-r--r-- 1 root root 532 Jun 19 21:23 CentOS244.clone.vmdk <== 只保留這兩個
-rw-r--r-- 1 root root 480 Dec 19 2020 Centos8_244.vmsd
-rw-r--r-- 1 root root 3.8K Jun 20 07:53 Centos8_244.vmx
-rw-r--r-- 1 root root 266 Dec 19 2020 Centos8_244.vmxf
-rw-r--r-- 1 root root 142.8K Mar 21 19:49 vmware-11.log
-rw-r--r-- 1 root root 142.7K Mar 30 02:23 vmware-12.log
-rw-r--r-- 1 root root 142.7K Mar 31 10:39 vmware-13.log
-rw-r--r-- 1 root root 183.8K Jun 19 22:45 vmware-14.log
-rw-r--r-- 1 root root 136.9K Jun 19 23:08 vmware-15.log
-rw-r--r-- 1 root root 129.9K Jun 20 01:13 vmware-16.log
-rw-r--r-- 1 root root 167.9K Jun 20 07:53 vmware.log
-rw------- 1 root root 81.0M Jun 20 01:08 vmx-Centos8_244-5ed7af94b3c0cd96f9-2.vswp
如同上面的步驟重建虛擬機,加入這顆磁碟即可。
祝你開機成功…
結論
1. 官網的說明文件簡直是廢物,通篇文字沒寫重點。參考資料的 [1][2]很有幫助
2. 無關的 vmdk檔要刪掉,否則會啟動不了。
3. 有快照過的vmdk會出現 -0000001, -0000002, .... 的自動檔案編號,要用 vmkfstools 來合併。
4. 拷背非常的耗時,不花錢的方法就是等。
參考資料
[1] https://communities.vmware.com/t5/Virtual-Machine-Guest-OS-and-VM/000001-vmdk-file-but-NO-snapshot/m-p/286901#1609201
[2] https://hirotanoblog.com/vmware-snapshot/6718/#toc5
[3] https://www3.sips.ntpc.edu.tw/wordpress/?p=1298
[4] https://communities.vmware.com/t5/VMware-Workstation-Pro/000001-vmdk-and-000002-vmdk/td-p/2174254