Code Section

Showing posts with label VMware. Show all posts
Showing posts with label VMware. Show all posts

Saturday, February 27, 2021

VMware 安全漏洞 - RCE (Remote Code Execution) 問題及解決方法

 iThome 近日(2021/02)揭露 vCenter Server 存在重大風險的 RCE 遠端程式碼執行 (Remote Code Execution) 安全漏洞,總共包含三個 CVE 漏洞,vCloud Foundation(VCF) 及 ESXi 也都有影響,因為 VCF 目前較少人使用,以下就暫先略過,有需要的人可自行參考官方資訊。

若有使用 VMware 產品並且仍為有效訂閱,應主動修正此安全問題,可計畫安排停機時間進行 ESXi/vCenter 的修正及升級。

VMware Security Patch 檔案下載需要 My VMware 帳號登入,至於 ESXi/vCenter 的 patch 修正檔安裝方法,網路上應可找到教學文章,若上述狀況有遇到困難的請告訴我,我會適時的提供技術協助及檔案下載。


<<問題及解決方法整理>>

(1)ESXi

影響版本:

ESXi 7.0、ESXi 6.7、ESXi 6.5 (包含修正檔編號前的所有 Update Version)


修正檔編號:

ESXi 7.0: VMware-ESXi-7.0U1c-17325551-depot (最新為 7.0 U1d)

Download Size:523.2 MB

Release Date: 12/17/2020

Build Number: 17325551

https://docs.vmware.com/en/VMware-vSphere/7.0/rn/vsphere-esxi-70u1c.html


ESXi 6.7: ESXi670-202102001

Download Size:343.2 MB

Release Date: 02/23/2021

Build Number: 17499825

https://docs.vmware.com/en/VMware-vSphere/6.7/rn/esxi670-202102001.html


ESXi 6.5: ESXi650-202102001

Download Size: 483.8 MB

Release Date: 02/23/2021

Build number: 17477841

https://docs.vmware.com/en/VMware-vSphere/6.5/rn/esxi650-202102001.html


(2)vCenter Server

影響版本:

vCenter Server 7.0 (vCSA)、vCenter Server 6.7 (Windows, vCSA)、vCenter Server 6.5 (Windows, vCSA)

(包含修正版號前的所有 Update Version)


修正版號:

vCenter Server 7.0 U1c (最新為 7.0 U1d)

https://my.vmware.com/web/vmware/downloads/details?downloadGroup=VC70U1C&productId=974

vCenter Server 6.7 U3l

https://my.vmware.com/web/vmware/downloads/details?downloadGroup=VC67U3L&productId=742

vCenter Server 6.5 U3n

https://my.vmware.com/web/vmware/downloads/details?downloadGroup=VC65U3N&productId=614


若 vCenter Server 暫時無法升級,VMware 提供 Workaround 方法及步驟,可參考以下連結:

VMware vCenter Server Workaround Instructions for CVE-2021-21972 and CVE-2021-21973 (82374)

https://kb.vmware.com/s/article/82374


<<參考資料>>

VMware修補vCenter RCE漏洞 | iThome

https://www.ithome.com.tw/news/142886


VMSA-2021-0002 | VMware security advisory

https://www.vmware.com/security/advisories/VMSA-2021-0002.html

Saturday, November 9, 2019

VMware 小工具 - 使用 RVTools 查看 vSphere 環境及發現潛在問題

接續上一篇「VMware 小工具 - 利用 RVTools 收集 vSphere 環境資訊」,繼續來聊聊常用到的 RVTools 實用功能。

以下介紹一些常用的 RVTools 各個功能頁籤,因為畫面或多或少都會包含環境資訊,為了避免整張截圖到處是馬賽克慘不忍睹,僅就以文字說明不抓圖囉,這些功能都很簡單易懂,實際上操作過應該都能很快上手。

<vPort 頁籤>
查看 Port Group/VMkernel Port 的歸屬 vSwitch,以及各個 Port Group/VMkernel Port 是否有指定 VLAN ID Tag;其他欄位還能看到關於 Port Group/VMkernel Port 的特性及故障切換、負載平衡規則等資訊。
常用欄位:Port Group, Switch, VLAN.

<vSC+VMK 頁籤>
看各個 VMkernel Port 配置,最常看的是 Management Network 的 ESXi 管理 IP,再來是與 ESXi 系統相關的,像是 vMotion、iSCSI/NFS、Fault Tolerance... 等各種 VMkernel Port。
常用欄位:Host, Port Group, Device, IP Address, Subnet mask, Gateway, MTU.

<vNetwork 頁籤>
查看各個 VM 使用的 VM Network 及 vSwitch,如果 VM 是 Power On 並且有安裝 VMware Tools 的話,在 IP Address 欄位可以看到這個 Guest OS 所使用的 IP 資訊。
常用欄位:VM, Network, Switch, IP Address.

<vTools 頁籤>
可查看 VM Version 版號,可從 Tools 看出該 VM 是否有安裝 VMware Tools,檢查結果一目了然,迅速抓出沒安裝的漏網之魚。
VMware Tools 狀態大致分為以下幾種:
(1)toolsNotInstalled:沒有安裝。
(2)toolsNotRunning:安裝但未執行 (在 VM Power Off 時也會是顯示此狀態)。
(3)toolsOld:版本太舊,需要升級。
(4)toolsOK:正常執行中。
(5)空白無資訊:應該是沒安裝 VMware Tools 的特殊狀況,請自行查看該 VM 實際狀態。
常用欄位:VM, Powerstate, VM Version, Tools, Sync time, Cluster, Host.

<vHBA 頁籤>
可看出各個 Host 上的 HBA Adapter,種類包括 SAS, iSCSI, Fibre Channel。
常用欄位:Host, Device, Type, WWN.

<vMultiPath 頁籤>
Policy:檢查每個 Host 的存取路徑規則是否一致
Path X, Path X state:使用路徑及路徑狀態

<vHost 頁籤>
CPU Model, # CPU, Cores per CPU: 查看 Host 的 CPU 型號、數量、核心數
VM Memory Swapped: 應該要是 0,如果不是的話,請觀察是否有 VM 發生記憶體配置不足的狀況發生。
VM Memory Ballooned: 應該要是 0,如果不是的話,請觀察是否有發生 Host 記憶體不足以讓 VM 使用的情形發生。
Current EVC: 目前套用的 Cluster EVC 等級值
Max EVC: 這台機器的 CPU Family
Current/Max EVC 資訊可協助我們判斷 EVC 等級是否設定正確,以免將 EVC 設定得太低,造成 CPU 效能無法發揮

<vDatastore 頁籤>
Capacity MB, Provisioned MB:Over-provisioned
Free %:實際可用空間

以上是我透過 RVTools 常查看的功能,也協助我在不少環境中,發現一些 misconfigured 設定值,或是發生潛在不易被注意到的事件,尤其是這類事件在 vCenter Server 不一定會有 Warning/Error,對管理者來說更不容易注意到。如果大家還有其他常用到的功能,也可以在底下留言分享討論,之後如果還有發現其他好用的功能,會再與大家分享。


〈本文同步刊載於痞客邦部落格〉
VMware 小工具 - 使用 RVTools 查看 vSphere 環境及發現潛在問題 @ 狸貓先生愛廢話講堂 :: 痞客邦 ::

Saturday, August 25, 2018

VMware 小實驗 - 縮小虛擬機 Virtual Disk 隨手實測

<<前情提要>>
狸貓先生愛廢話講堂: VMware 小技巧 - 縮小 Workstation 的虛擬機 Virtual Disk 來釋放磁碟空間
在上篇文章中,介紹縮小虛擬機 Virtual Disk 的方法,剛好今天想到,隨手來實測一下各種方法的縮小效果,看是否有差異。

先聲明這只是個因為整天一直下雨,被困在家裡不知道要做啥,臨時想到的實測,沒有很嚴謹的條件,但有記錄下來的數據應該足夠給大家作參考。
實驗平台:Windows 7 Professional 64-bit, VMware Workstation 12.1.1。
實驗樣本:Windows 10 Enterprise 64-bit 虛擬機,用下載的 win10 enterprise version 1703 mar 2017 的 iso 檔安裝作業系統後,再安裝 VMware Tools 以及作完 Windows Update 後關機,這台 VM 在清理前佔的磁碟空間為 41.6 GB。

本次實驗分成三段,主要是要驗證 Clean Up Disks 的效果是否會比 Compact 好,所以將相同的樣本用三種方法各做一次:(1)Clean Up Disks。(2)Defragment & Compact。(3)Compact。底下就不囉嗦太多直接上圖。

(1) Clean Up Disks:花費約 10 分鐘 (16:48-16:58),動作前容量 41.6 GB,動作後 26.8 GB。

(2) Defragment & Compact:Defragment 花費約 6 分 (18:13-18:19),Compact 花費約 9 分鐘 (19:04-19:13),動作前容量 41.6 GB,動作後 26.8 GB。

(3) Compact:花費約 9 分鐘 (21:36-21:45),動作前容量 41.6 GB,動作後 26.8 GB。

以上三種方法實測結果,壓縮動作後的容量大小都是 26.8 GB,推測應該是在 VM 內只有安裝作業系統,再加上 Windows Update,大部分行為都是新增檔案,並沒有新增後再刪除的情形,所以檔案區塊排列算是整齊,三種方法都達到相同的減肥效果。

不過還是如同前情提要的文章說的,Windows VM 依然會推薦使用 Clean Up Disks,因為會提供預估可回收空間 (Reclaimable space),比上 Defragment & Compact 花費時間少了許多,就算只比上 Compact 也是差不多的時間。

這次的簡單小實驗就到這,提供給大家作參考,我們下回見!


〈本文同步刊載於痞客邦部落格〉
VMware 小實驗 - 縮小虛擬機 Virtual Disk 隨手實測 @ 狸貓先生愛廢話講堂 :: 痞客邦 ::

Thursday, August 16, 2018

VMware 小工具 - 利用 RVTools 收集 vSphere 環境資訊

平時會接觸到 VMware 環境的管理者,除了要定時備份 vCenter Server 之外,有時候也想要將 vSphere 環境資訊記錄下來,像是 Cluster、Host、Resource Pool、Datastore、Virtual Network (vSwitch, Port Group, VLAN, Uplink NIC, Failover Policy)…等資訊,甚至還有更多想要保留的,作為定期記錄或是資訊備忘,往後有變動的時候才有舊設定值可以比對。雖然 VMware 環境可透過 vSphere Client/Web Client 圖形介面以方便管理,但對想要記錄資訊的角度而言,圖形介面反而造成了麻煩;現今有許多好用的抓圖軟體可以幫忙,但在 vSphere Client/Web Client 介面上,還是有太多項目需要上下拖拉才能看到完整資訊,造成抓圖時的煩瑣工作,而且這樣記錄不僅沒效率,更有可能會有些遺漏。

Rob de Veij 應該是聽到了大家的心聲,寫出了好用的 RVTools,可以幫忙管理者快速取得 VMware 的環境設定資訊,並將資訊匯出為檔案保留。

RVTools 可到官網直接下載,下載時需填寫姓名、公司名、Email 資訊,按下 Register 訂閱 Veeam 相關資訊後,才會開始下載。
RVTools - Download | RVTools

RVTools 需要使用 .Net Framework 4.6.1,所以要先看 Windows 是否已有安裝,如果沒有的話可至微軟官網下載。

安裝步驟也很簡單,大致上就是一直 Next 就完成了。

開始執行 RVTools,填入 vCenter Server 連線資訊後,按 Connect 就會出現許多分頁資訊。

從功能表 File >>> Export all to Excel >>> 另存新檔,就可以將所有資訊匯出為 Excel 檔案 .xlsx。

匯出的 Excel 檔內每個工作表,就是 RVTools 軟體看到的每個分頁資訊,其中的 vLicense 會包含 vCenter & ESXi 的 License Key 資訊,如果授權金鑰資訊已有另行留存,可將 vLicense 分頁刪除。

RVTools 除了可以查看 vSphere 的資訊,並可匯出保存之外,也可以觀察一些 VM 的不正常使用狀況,算是幫助管理者的一個小工具,之後有時間會再發文來稍微詳細的介紹 RVTools,敬請期待。


<<官方網站及下載點>>
RVTools

RVTools - Download | RVTools

<<參考資料>>
RVTools 觀察/紀錄 你的 VMWare 的狀態 - 免費 @ 黃昏的甘蔗 :: 隨意窩 Xuite日誌


〈本文同步刊載於痞客邦部落格〉
VMware 小工具 - 利用 RVTools 收集 vSphere 環境資訊 @ 狸貓先生愛廢話講堂 :: 痞客邦 ::

Wednesday, August 8, 2018

VMware 動手做 - 採用樣板佈署方式正確複製 Windows 虛擬機

使用 VM 的好處之一,就是能迅速的複製現有虛擬機產生出新的虛擬機,也就是以現有的 VM 為藍本,複製產生出相同的 VM,包括它原有 VM 所有的一切。
在 VMware vSphere 的 Web Client 操作界面提供的 Clone to Virtual Machine 功能,可以在幾分鐘內產生另外一個一模一樣的 VM,這是在以往實體機的世界所無法想像的。

Web Client >>> 選取 VM >>> Clone >>> Clone to Virtual Machine...

一般來說複製虛擬機 (Clone VM)不會有什麼問題,每台 VM 有供 vCenter Server 辨識的 UID,將複製出來的虛擬機首次開機時,它會產生新的 UID,接下來便能正常使用。除了 UID 之外,虛擬硬體卡片 (較常使用的是網路卡)也會產生新的 MAC Address,所以也不會與原有 VM 發生網路卡號衝突的問題,看起來一切都很好。

但是!在 Windows 系統內有個叫 SID 的東西,它會牽涉到 Windows 的管理機制及架構運作,如果環境內有 Windows AD 網域 (Active Directory)就會更加重要。因為在每台電腦加入 Windows AD 網域時,會產生對應的電腦物件,而在 Windows AD 的網域控制器 (Domain Contrlller) 實際運作看的是 SID,而非單純只有電腦名稱。

在每台都是全新安裝 Windows 的環境中,不需要擔心這個問題,因為在安裝程式進行過程中,SID 是全新動態產生,不會發生兩台電腦的 SID 相同的事;但如果是用 Clone VM 產生出來的新虛擬機,因為虛擬硬碟 (Virtual Disk)也是完全複製,也就是說原來的羊長什麼樣子,複製羊就長得一模一樣,當然 SID 也是相同,這件事會導致以後管理上的麻煩。

要查詢目前 Windows 的 SID 有很多種方式,介紹較簡單不需額外加裝套件的兩種方法:
(1) PsGetSid:原本為 Sysinternals 公司的小工具,後來被微軟併購,在微軟官網可下載,下載後不需安裝直接執行即可。
(2) vbs script:<<附檔收錄>>有提供檔案直接下載,需修改第一行變數的 MyComputerName 改成自己的電腦名稱。
[註] SID 的差異點是在 S-1-5-21 之後的那串數字,最後結尾有沒有 -500 字串並不影響判斷。

方法 (1):PsGetSid 無圖形介面,在命令提示字元執行 psgetsid.exe (第一次執行需同意軟體條款)。
下圖為 PsGetsid 執行結果,SID 是那一串黃色數字。↓ ↓

方法 (2):執行 vbs script,在命令提示字元執行 cscript GetComputerSID.vbs。
下圖為 vbs script 執行結果,SID 是那一串黃色數字。↓ ↓

我們可以試想,如果是採用 Clone VM 產生新的虛擬機,產生出來的新 VM 的電腦名稱、IP 相關網路設定值、Administrator 密碼、Windows 金鑰、SID…等設定值都與原有 VM 相同,這些都需要管理者登入 Guest OS 後,手動修改每個項目,相當花費時間,而且有可能會修改遺漏。往後還有可能會衍生出因為 Clone VM 時虛擬網路卡異動,造成 Guest OS 的舊網路卡變成隱藏 (因為裝置消失),新網路卡無法設定與舊網路卡相同的 IP (因為已經被用掉)的複雜問題,處理起來就更加棘手。
[註] 雖然 vCenter Server 6.0 的新功能,提供選項在 Clone VM 時也可選擇作 Custumization ,但此處還是講適用於大部分 vCenter Server 版本的通則作法。

其實 vCenter Server 提供的從樣板佈署新虛擬機 (Deploy New VM from Template)功能,在設定得當的情況下,可避免發生 SID 相同的問題,並且可做到更完善的流程,可以替管理者節省很多工夫。在 Deploy VM 的過程中,需依照要佈署的 Guest OS 內 Windows Server 版本,準備好對應的 Sysprep 環境,才能為新的 VM 產生新的 SID,否則會讓 Deploy VM 過程發生錯誤而無法順利完成。

在 Windows Server 2003 R2 以前的版本,需要從微軟網站另外下載 Sysprep 工具,並放在 vCenter Server 內的版本對應目錄,才能讓 Generate SID 功能生效;但在 Windows Server 2008 之後,微軟已將 Sysprep 工具內建在 OS 內,不需要額外安裝或下載。
下圖為 VMware KB: Sysprep file locations and versions 資訊,各版本 Windows Server 的下載點或所在位置:

先從建立樣板 (Template)開始,在建立 VM 並安裝乾淨的 Windows Server OS 完成之後,一定要安裝 VMware Tools,並作 Windows Update 到最新的修正,完成後就可以關機,並將 VM 轉換成 Template。
Web Client >>> 選取 VM >>> Template >>> Convert to Template...

使用轉換後的樣板,開始做新 VM 的佈署。
Web Client >>> VM Templates in Folders >>> 選取 Template >>> New VM from This Template...

Web Client >>> Deploy From Template 精靈
(1) 新建的 VM 取名稱
(2) 選擇新的 VM 要放置的 Datacenter
(3) 選擇新的 VM 要放置的 Host
(4) 選擇新的 VM 要放置的 Datastore
(5) 切記一定要勾 Customize the operating system
(6) 如果之前沒有建立 Customization Specification,這裡可以直接新增一組;如果已建立,可以直接選擇要使用的設定值,跳過 New Customization Specification 步驟。

Web Client >>> New VM Guest Customization Spec 精靈
(1) 新建的 Spec 取名,加上描述方便以後辨識。
(2) Windows Server 的使用者姓名、使用單位,單純是系統資訊提供辨識。
(3) 選 Enter a name in the Clone/Deploy wizard,以後在使用這個 Spec 時可自訂電腦名稱。
(4) 輸入 Windows Server 金鑰。
(5) 依照自己擁有的 Windows 授權種類,選擇適當的選項。
(6) 輸入 Administrator 帳號的密碼兩次,確認沒有手誤打錯。

Web Client >>> New VM Guest Customization Spec 精靈
(1) 時間選擇 (GMT+08:00)Taipei。
(2) Run Once 可輸入在 Sysprep 過程中想要執行的指令,若不需要請留白。
(3) 預設值是所有的網路卡都設定為 DHCP,也可依需求選擇 Manual 指定各張網卡的 IP 設定值。
(4) 預設電腦群組為 Workgroup: WORKGROUP。
(5) 一定要勾選 Generate New Security ID (SID),才會在佈署新的 VM 時產生新的 SID。
若 Guest OS 為 Windows Server 2003 R2 或更舊的版本,記得參考上一段 Sysprep 套件及環境要先準備好。

Web Client >>> New VM Guest Customization Spec 精靈
最後會列出所有步驟設定值,檢查過沒有錯誤就可以按 Finish 新增完成。

Web Client >>> Deploy From Template 精靈
(1) 選擇剛才新建的 Customization Specification。
[註] 這邊有個小 bug,可能會無法立刻看到新建的 Spec,請退出 Deploy From Template 精靈,重新做一次到這個步驟就能看到。
(2) 還記得剛才新建 Spec 時我們選可自訂電腦名稱,這邊可自行輸入新建 VM 所要用的電腦名稱。
(3) 檢查設定值摘要,如果沒有問題按 Finish 就會開始 Deploy VM。

在 Deploy New VM From Template 的複製工作完成之後,就可以將新的 VM 開機,它會依據我們給予的 Customization Specification 設定值,開始作 Windows Server 的初始化,過程中大約會重開機 2-3 次,請耐心等候幾分鐘,不要急著登入以免影響背景作業,等它做完後就可以開始使用這個新 VM 了。



<<附檔收錄>>
GetComputerSID.vbs:因為用 .vbs 檔名可能因安裝性無法下載,因此改為 .vb_,請下載後自行修改副檔名為 .vbs,並修改第一行變數的 MyComputerName 改成自己的電腦名稱。

PsGetsid_145.zip:PsGetSid 1.45,zip 檔內含 PsGetsid.exe (32-bit)及 PsGetsid64.exe (64-bit)。


〈本文同步刊載於痞客邦部落格〉
VMware 動手做 - 採用樣板佈署方式正確複製 Windows 虛擬機 @ 狸貓先生愛廢話講堂 :: 痞客邦 ::

Tuesday, July 31, 2018

VMware 小技巧 - 縮小 Workstation 的虛擬機 Virtual Disk 來釋放磁碟空間

VMware Workstation 可以安裝在 Windows 或 Linux 上,可用來建立各種作業系統的 Guest OS ,做 Lab 使用非常方便,從以前到現在的版本 14.1,一路走來應該超過 15 年有囉,算是相當老牌且執行穩定的虛擬軟體。

在使用 VMware Workstation 在 New Virtual Machine 新建虛擬機時,如果是選擇 Custom (advanced),在過程中精靈會詢問 Virtual Disk 的建立格式:

Virtual Disk 選項說明:
(勾選) ✔ Allocate all disk space now.:建立為 Thick Virtual Disk,建立速度較慢,需等待數十秒至數分鐘的建立時間。
(不勾) □ Allocate all disk space now.:建立為 Thin Virtual Disk,建立速度較快,不需等待。

Thick Virtual Disk:會一開始就取得 disk size 的磁碟空間,設定的數字是多少,就佔多大的磁碟空間。
Thin Virtual Disk:一開始先不取得磁碟空間,待 Guest OS 真的要放入資料時再向 Host 要求磁碟空間。
因為 Workstation 上的環境多半為測試性質,不需要太好的寫入效能,通常建議採用 Thin Virtual Disk 會比較恰當,可節省磁碟空間,也可以用來建立較多個 VM 及 Virtual Disk。

Store virtual disk as single file:存為單一個 VMDK。
Split virtual disk into multiple files:存成多個 VMDK,每個檔案最大為 2GB,寫滿 2GB 之後再產生一個新檔案繼續寫入。這個選項當初應該是為了 FAT32 檔案格式,單檔無法超過 2GB 而生,不過在 Win7 之後普遍是採用 NTFS 或 exFAT 格式,FAT32 已經較少使用,而且對於空間較大的磁碟,Win7 在格式化選項也會把 FAT32 藏起來,所以現在比較少會遇到這個問題。

今天來討論的是如何善用磁碟空間,讓你可以在有限空間內,建立更多個 Virtual Machine。主要是針對 Thin Virtual Disk 才會有壓縮 (Compact) 或清理 (Clean Up) 功能,Thick Virtual Disk 並不提供,因此 Thick 種類不在此次討論內。

Virtual Disk 狀態說明:
Current size:目前佔用的實際容量。
System free:存放此VM及虛擬硬碟的磁碟可用空間。
Maximum size:可存放的最大容量,也就是在建立虛擬硬碟時指定的容量。

Thin Virtual Disk 的特性,是在 Guest OS 寫入資料時,才會真實佔用 Host 的磁碟空間,但在 Guest OS 刪除資料時,並不會自動歸還 Host 的磁碟空間。所以我們的目的,就是縮小 Virtual Disk 的 Current size,讓它與 Guest OS 內存放的真實資料容量接近,以節省 Host 不必要的磁碟空間消耗。

要釋放 Thin Virtual Disk 佔用的磁碟空間有兩種方法,注意虛擬機必須是 Power Off 狀態:
(1) Defragment (重組虛擬硬碟) >>> Compact (壓縮虛擬硬碟)。
(2) VM >>> Manage >>> Clean Up Disks...,會提供使用空間 (used by this VM)及可回收空間 (Reclaimable space)資訊,確定要做按下 Clean Up now 就會開始進行。
[註1] 方法(2) 只適用 Windows Guest OS,且需安裝 VMware Tools。
[註2] 在更久之前的版本 (before VMW 8.x),VM 要在 Power On 狀態,先在 Guest OS 內做磁碟重整後,再利用 VMware Tools 來進行 Shrink disk,但這個舊方法已被淘汰,而且通常只有 Windows 才有提供磁碟重組工具。

方法(1) Defragment → Compact:

方法(2) Windows Guest OS 做 Clean Up Disks:

方法(2) Linux Guest OS 沒有 Clean Up Disks 功能:

Clean Up Disks 是在 VMware Workstation 9 之後的新功能,包括 VMware Fusion 及 VMware Player 也有提供,幾個原因推薦大家使用:
(1) 提供預估可回收空間 (Reclaimable space)這點我覺得很貼心,可以讓你判斷效果後再決定是否要做。
(2) Clean Up Disks 的壓榨效果會比 Compact & Shrink 更好,而且連同 Snapshots 也會一併壓榨。
(3) Clean Up Disks 可直接對現有 VMDK 進行處理,不需要額外磁碟空間做 Virtual Disk 的搬移運作。
(4) 稍嫌可惜的是僅適用於 Windows Guest OS。
(詳細可看<<參考資料>>的 VMware Documentatoin 說明)


<<參考資料>>
Clean Up a Virtual Hard Disk on Windows Hosts - VMware Workstation Documentation Center

How to Shrink a VMware Virtual Machine and Free Up Disk Space

幫 VMware 9 磁碟檔減肥 & 阿伯ㄚ的部落格 - lan14 # 天空部落 TIAN #

Defragmenting and shrinking VMware Workstation virtual machine disks (2019649)

Reduce the Size of Virtual Machine Disk in VMware Workstation


〈本文同步刊載於痞客邦部落格〉
VMware 小技巧 - 縮小 Workstation 的虛擬機 Virtual Disk 來釋放磁碟空間 @ 狸貓先生愛廢話講堂 :: 痞客邦 ::

Tuesday, July 24, 2018

VMware 豆知識 - 虛擬環境的 Virtual Machine 組成元件有哪些

在實體的世界中,眼睛看得到的都是就是各個硬體元件,例如一台電腦,拆開之後看得到就是主機板 (包含內建的顯示卡、磁碟控制器、網路卡、音效卡…等)、處理器、記憶體、硬碟等組成元件。

而轉換到了虛擬世界,由於每台實體機器都變成了虛擬機 (Virtual Machine, VM),不論是 Host OS 型態或是 Hypervisor 型態的虛擬化,在虛擬化平台上,每個虛擬機都只是由底層執行的一個程序 (Process),所以每台虛擬機就變成了一個資料夾,裡面有著這個虛擬機的許多組成檔案,對應到實體環境所看到的各個硬體組成元件。

Host OS 型態的 Virtualization,在原來的作業系統上,執行虛擬化軟體,模擬出數個 VM。(如下圖)

Hypervisor 型態的 Virtualization,這層 Hypervisor 就是底層的作業系統,它本身具備虛擬化功能,可直接模擬出數個 VM。(如下圖)

簡單來說,實體與虛擬的常用零組件對照方式為:
(實體)處理器 CPU --> (虛擬)描述設定檔
(實體)記憶體 Memory --> (虛擬)描述設定檔
(實體)顯示卡 VGA --> (虛擬)描述設定檔
(實體)磁碟控制器 --> (虛擬)描述設定檔
(實體)網路卡 NIC --> (虛擬)描述設定檔
(實體)音效卡 Audio --> (虛擬)描述設定檔
(實體)光碟機 DVD-ROM --> (虛擬)描述設定檔
(實體)硬碟 Hard Disk --> (虛擬)虛擬硬碟檔案 Virtual Disk File
也就是虛擬機的組成元件,主體就是一個描述設定檔,以及一個或數個的虛擬硬碟檔。

談到 Virtual Machine 的各項組成元件,在 VMware vSphere/ESXi 環境下,各種的組成檔案包括 (依副檔名說明):
vmx:configuration files,虛擬硬體元件組成設定檔。
vmdk:virtual disk,虛擬硬碟。
nvram:virtual BIOS state,BIOS狀態檔。
vswp:virtual swap file,虛擬記憶體交換檔。
vmsd:snapshot infomation database,快照資訊資料庫。
vmsn:snapshot state file,快照狀態檔。
-xxxxx.vmdk、-xxxxx-delta.vmdk:delta disk,作完快照後新產生的差異硬碟。
.lck:lock file,目前被系統鎖定禁止從外部更動的檔案 (通常是在執行中會鎖定),會產生檔名對應的.lck。

一般在操作或管理時不需要瞭解這麼多,但有些元件在操作時的變動,會跟儲存空間的消耗息息相關,這就需要管理者多多注意。
佔據較多儲存空間的檔案類型有以下幾種 (通常空間消耗是 GB 等級起跳):
(1)vswp:在 Power on VM 後就會產生的檔案,與該台 VM 的 virtual memory 的大小相同。
(2)vmsn:如果 Take Snapshot 時,勾選 Snapshot the virtual machine's memory,則產生的檔案會包含該 VM 的 configuration+active state+memory,也就是說會比 virtual memory 的大小還要大一些。
(3)-xxxxx.vmdk、-xxxxx-delta.vmdk:在快照後的資料變動,都會改寫到 delta disk,如果這個 VM 的資料異動量大,就會讓 delta disk 的尺寸激升。

上述的情況 (2) 提到,在Take Snapshot 時,勾選 Snapshot the virtual machine's memory。(如下圖)

另外關於 VMware Snapshot 快照還有很多可以談的,會再另開文章來寫,敬請期待。


<<參考資料>>
What Files Make Up a Virtual Machine?

What Files Make Up a Virtual Machine in ESXi 5.5? … in VMware Workstation 10? | TechRant


〈本文同步刊載於痞客邦部落格〉
VMware 豆知識 - 虛擬世界中的 Virtual Machine 是什麼? @ 狸貓先生愛廢話講堂 :: 痞客邦 ::

Sunday, June 17, 2018

VMware 新知 - vSphere 6.7 帶來哪些新功能亮點

VMware vSphere 6.7 悄悄的在今年 4 月中旬釋出,這次的版本號碼有點特別,前幾代版本的小更新累計有 x.0、x.1、x.5,但從來沒用過 x.7 這種奇妙的版本號碼,大概是不想太早出 7.0 的拖台花招。

此次更為分為四大主要面向:簡單及有效管理、更完整的安全性、增強效能應用平台、與雲端的無縫連結。我會從這四大主題裡,挑出一些較特別的亮點功能或更新加強,來與大家分享。(四大面向的原文為 SIMPLE & EFFICIENT MGMT AT SCALE, COMPREHENSIVE BUILT-IN SECURITY, UNIVERSAL APP PLATFORM, SEAMLESS HYBRID CLOUD EXPERIENCE)

每次的大小更新都一定會有的支援上限擴增 (Scale Enhancements),這種固定劇情就跳過不提了,畢竟那些 configuration maximums 很多數值不是一般環境碰得到的天花板,數字的提升對一般人來說也只是”喔~上限又增加了啊!”這種感覺,不過還是列出幾項從 6.5 U1 → 6.7 值得注意的 configuration maximums 項目:

【vCenter Server Appliance 大爆發】
vCenter Server Appliance (vCSA) Linked Mode
依照 vCSA 6.5 的官方 KB,Linked Mode支援架構設計有兩種做法:
(1)多台以上的 vCSA 不含 PSC,加上一台外部的 PSC (Platform Services Controllers)。
(2)多台以上的 vCSA 含 PCS,加上一台 third-party load balancer。
所以一種選擇是麻煩的佈署、要多一台 PCS、考慮備份多台 vCenter Server 時的資料一致性問題;另一種是花錢多加台 SLB,不過還是得要面對升級時的麻煩手續。所以在 vCSA 6.7 改進了 Linked Mode,可以串起多台 vCSA 含 PCS,不需額外的 Load balancer,並簡化了安裝及升級步驟。

vCenter Server Appliance Back Up Scheduler
vCSA 6.7 強化自訂備份排程,可控制保留份數,並且可以使用 REST API 來備份還原。注意!這邊指的是 vCSA 自身的資料備份,與備份各個 VM 的功能無關。

Cross-vCenter Encrypted vMotion
在 vSphere 6.5 首次出現的 Encrypted vMotion,可針對單個 VM 啟動加密 vMotion,在 vMotion 時會將兩個 Host 間傳輸加密,以保障 VM 經過網路傳輸時的資料安全。在 vSphere 6.7 將此功能從跨 Host 延伸到跨 vCenter,可讓 VM 在跨 vCenter 作 vMotion 時中間保持資料加密,因為跨 vCenter 有很大的可能是跨 internet 或 VPN 線路,但中間還是會經過許多網路節點,此時加密的安全保護就更為重要。

Hybrid Linked Mode
VMware 與 AWS 合作推出 VMware Cloud on AWS,在地端 (自建機房)的 vCenter Server 可與雲端 (AWS)的 vCenter Server 透過 Hybrid Linked Mode 連接,讓管理者在管理兩端的 vCenter Server 更方便。

【vCenter Server 6.7 升級小提醒】
(1)不提供 vCenter 5.5 升級方式,若是 5.5 必須先升級至 6.0,再來才能升上 6.7。
(2)vCenter Server 6.7 是最後一版 vCenter Server for Windows,下個版本就只會有 vCenter Server Appliance (雖然有時候 VMware 會看情況說話不算話),不過看來 VMware 想要徹底斬斷產品對微軟的依賴性,從 4.x 的 vCenter Server 採用的 SQL Server Express 開始,到 5.x 改用 PostgreSQL,而現在要完全拋棄 Windows Server OS。

【ESXi/Virtual Machines】
Single Reboot
減少升級時所需要的 Host 重開機次數,及加上 vSphere Quick Boot 降低重開機時間,讓 VUM 升級 ESXi Cluster 時的 host downtime 減少。

NVIDIA GRID vGPU Enhancements
以往 VM 在 VDI 環境要加入或移除 vGPU 時,需要將這個 VM shutdown (關機),動作完成後再 power on (開機)。在 vSphere 6.7 可以加速這個過程,只需要將 VM Suspend (暫停),處理 vGPU 後再 Resume (繼續)就可以。

vSphere Persistent Memory
支援 Intel 提出的新一代媒體 Persistent Memory (持久型記憶體),速度、容量、成本均在 DRAM 和 SSD 之間,作業系統必須要能偵測此類型記憶體的存在,才能決定 Memory、Persistenet Memory、SSD 之間的資料交換作業,把資料適當的放在不同層,才能夠達到存取速度最佳化。

Per-VM Enhanced vMotion Compatibility (EVC)
以往的 EVC (Enhanced vMotion Compatibility) 是針對 Cluster 啟動,因為跨新舊 Host 之間的 CPU 功能有差距,可以透過 EVC 來讓 VM 在跨新舊 Host 的 vMotion 提高成功率。在 vSphere 6.7 增強為可將 EVC 針對單個 VM 啟動,會讓使用上更加彈性,在 Cross-cluster/datacenter/vCenter 作 vMotion 時會更有機動性。

【小功能更新集錦】
Improved HTML 5 based vSphere Client
在 6.5 亮相的 vSphere HTML5 Client,跟以往 vSphere Client (C#) 要轉到 Web Client 的陣痛狀況類似,初登場的新 Client 很多功能還不完整,所以兩種 Client 會並行一段時間,後來才會慢慢完善新 Client 的功能。此次主要是增加 vSphere Update Manager (VUM)、vSAN、NSX 的操作功能,其他較細部或進階功能就先略過不細談。
vSphere HTML5 Client 官方的功能新增有:Distributed Switch、Storage and SPBM features、Host Profiles (Phase 1)、VM Configuration、VMcrypt、HW version 14, additional devices、Migrate / vMotion、Guest OS Customization、vApp Create/Clone/Edit、Licensing、Administration: Users, Groups, Config & Cert Mgmt、Create Basic Alarm definitions、Plugins: VUM (Phase 1), VSAN。
〔不負責推測〕也許 vSphere 7.0 官方會宣佈廢除 Web Client (Flash),希望大家全面改用 vSphere HTML5 Client,到時候又是另一場苦難的開始,真心覺得 VMware 不要再這樣惡搞這些虛擬化管理員了。

Support for 4K Native Storage
這幾年在伺服器市場才開始出現的 512e 和 4K Native 硬碟,也是新的硬碟規格趨勢,但在 vSphere 6.0 兩者都不支援;到了 vSphere 6.5 才開始支援 ESXi 安裝在 512e HDD,但 4K Native 還是不支援;新的 vSphere 6.7 終於兩者都支援,不會再經歷連 ESXi 都安裝不成功的慘況。《注意還是有部分功能有限制,詳情可點參考資料連結》
〔小故事分享〕之前在某客戶遇到別家廠商,要拿 Dell Server 去做功能測試,結果工程師安裝 ESXi 裝了一天還搞不定,回去查才發現原來機器裡的是 4K Native hard drive,隔兩天緊急更換硬碟才順利完成,所以做事不管大事小事,千萬不要矇著眼睛蠻幹啊!

Support for Trusted Platform Module (TPM) 2.0 and Virtual TPM
在 vSphere 6.5 開始採用的 secure boot 技術,驗證 host 內的所有 process 是被 VMware 簽章未被竄改過的,以確認 host 的作業系統安全性,再搭配上 TPM 2.0 可以保證 secure boot 的檢驗工作能正確完成。在 vSphere 6.7 更進一步增加 Virtual TPM 功能 (依照 TPM 2.0 標準),可以很容易的在 VM 上啟動,就像增加一個 Virtual Device 一樣簡單,用來保護重要的機器金鑰 (machine key)及私密憑證 (private certificate),以確保只有這個 VM 擁有者能存取,以避免被其他管理者或從 Guest 的內部作非法存取。


<<參考資料>>
FAQ: Support statement for 512e and 4K Native drives for VMware vSphere and vSAN (2091600)

Supported and deprecated topologies for VMware vSphere 6.5 (2147672)

DRAM 與 SSD 的速度容量差距如何解?Intel 推出新階層 Optane DC Persistent Memory | T客邦

vSphere 6.7 – Let’s break it down! - VirtuallyInclined

What's New in vSphere 6.7? Should I Upgrade?

What's New in vSphere 6.7 Whitepaper - VMware


〈本文同步刊載於痞客邦部落格〉
VMware 新知 - vSphere 6.7 帶來哪些新功能亮點 @ 狸貓先生愛廢話講堂 :: 痞客邦 ::

Thursday, June 14, 2018

VMware 大哉問 - Datastore 儲存空間剩多少容量算是不夠用?

〈本文同步刊載於痞客邦部落格〉

今天來回覆聽眾 Miss G 的點播。

在開始之前做個簡單快問快答,大家通常都怎麼用 Datastore 的?
切出一大塊儲存空間,然後就拼命一直塞進去,直到塞滿再找下一塊儲存空間?
還是切出多塊儲存空間,將 VM 平均分散放在各塊儲存空間內?
或是有其他更好的使用方法?

<小提醒>此篇字數較多且內容較硬,大家可斟酌觀看,或是中間自行休息片刻。

<<前情提要>>
((因為內容牽涉到環境資訊,會出現小小馬賽克,請放心觀賞。)
在備份軟體看到一個錯誤訊息:Disk space usage on datastore MGMT (95%) has grown beyond the critical threshold 95%。

實際到 MGMT datastore 查看,總容量 2.00 TB、剩餘空間 101.06 MB,換算磁碟使用率的確如告警訊息所示超過 95% [(2048-101.06)/2048 = 0.9506]。

<<推眼鏡解說>>
我們來看一下 MGMT Datastore 裡的 VM 有哪些呢?哇哩勒~不看則已,一看嚇出一身冷汗。
從上往下加,將每台 VM "佈建的空間"加總,加到紅框下一台 VM 的時候早就 2 TB 爆掉了,我沒有膽量繼續往下算。如果說這是線上環境,那我只能說當初的規劃者(或是說執行者)真是太有種,難道不擔心 Datastore 100% full 發生,所有的 VM 全部凍結停止運作的慘況?

為什麼說像這樣的作法是很不恰當的規劃,簡單說明幾個名詞及觀念:
佈建的空間 (Provisioned Space):建立 Virtual Disk 所指定的容量,例如 120 GB。
已使用空間 (Used Space):Guest OS 在 Virtual Disk 實際存放的資料,所佔掉的真實容量。

為什麼 Provisioned Spaced 會和 Used Space 不一致呢?
在建立 Virtual Disk 時,Disk Provioning 的選項:
(1) Thin Provision 格式,會讓兩個數值不一致,佈建空間為輸入的容量大小、已使用空間趨近於零
(2) Thick Provision Lazy Zeroed 格式,佈建空間、已使用空間應該都會是輸入的容量大小,兩者會是相同的。

先撇去效能的事情不考慮,通常是在實驗或測試環境中,我們才會使用 Thin Provision 格式來建立 Virtual Disk,因為需要的 VM 數量多,而實體儲存的容量少,而且在這種環境下,就算 Datastore 塞滿了,頂多也是測試 VM 群一起動不了而已,不會有什麼天大的事發生。

而在線上環境中,強烈建議要採用 Thick Provision 格式來建立 Virtual Disk,因為這樣會容易掌握 Datastore 的剩餘量,才不會有某個 VM 的存放資料突然爆量,而造成 Datastore 實際剩餘量不足。這邊所說的是針對 Guest OS 給定的範圍內爆增,例如說某個 VM 的 Virtual Disk 有 100 GB,原先資料量 20 GB,突然在半小時內新增 60 GB,這屬於合理範圍的使用,但如果因 Datastore 規劃或執行不當,很可能會因為單一 VM 內的資料量增加,影響到全體 VM 的運作情況。

要知道 Virtual Machine 的各個組成元件,以及有些會佔較多空間的檔案需多加注意,詳細可看這篇:狸貓先生愛廢話講堂: VMware 豆知識 - 虛擬世界中的 Virtual Machine 是什麼?

回到主題 Datastore 儲存空間的使用率,如果是在規劃階段,謹記『不能只計算 Virtual Disk 容量的總和』,必須還要考慮上面提到的幾種會大量消耗容量的檔案,否則到時候會讓 Datastore 剩餘空間進退兩難;如果是在使用階段,那就要隨時注意 Datastore 的剩餘空間 (或是說剩餘率),尤其是在進行 backup、snapshot、Guest OS 檔案增加時,更要隨時關心 Datastore 是否趨近滿載。

再來讓我們看看 vCenter Server 預設告警的臨界值:
Web Client >>> vCenter Server >>> Alarm Definitions >>> Datastore usage on disk >>> Triggers
Warning Condition: 75%、Critical Condition: 85%,預設 Actions 無任何動作。

依據 VMware vCenter Server 的預設值,剩下 25% 的時候就需要注意,開始要計劃擴充 datastore 或是刪除用不到的 VM;在剩下 15% 就要拉緊急警報,再低就有可能會影響整個系統運作。預設 Actions 無動作,在超過臨界值時,只有在使用 Web Client、vSphere Client 連上 vCenter Server 時才會看到警告訊息,強烈建議在 Actions 需要自行新增 email 或其他告警方式,需確實通知到管理員的手段才有用,不然 Datastore 爆掉就悲劇了。

在 VMware Commnities 也有討論過這個問題,Datastore 最少可用空間需要保留多少,在官方文件其實沒有特別提到建議值,但大家討論出來大約是剩下 13% - 15% 是最低限度,再低就有可能會危害系統的穩定性,這也與 vCenter Server 預設的 Critical Condition 85% 大致符合。

當然 Datastore 需保留的剩餘趴數不是絕對值,它只是個參考值,依據每個環境在不同的 Datastore 放置的 VM 數量、VM Memory 配置、backup job 備份排程執行、concurrent backup tasks executing 同時執行的備份工作數量…等各種因素影響,需考量更多的保留比例,當然建議最好是不要超過 Warning Condition 75%。

管理 IT 時斷捨離的工夫很重要,尤其是在虛擬環境!以前要新加一台機器有多困難,需要經過預算爭取的拼搏,現在建立一個 VM 卻只需要點幾下,常常很多 VM 都已經不需要,但卻還一直留著,就連 VM snapshot 也是一樣留著,放任 VM 繼續運作,但不知道這對系統會帶來多大的危害。

有空會再來談談 VM Snapshot 到底是什麼東西,不當的使用快照可能會對系統或資料造成傷害,敬請期待。


<<參考資料>>
Understanding VM snapshots in ESXi / ESX (1015180)

Virtual machine becomes unresponsive or inactive when taking a snapshot (1013163)

What Files Make Up a Virtual Machine?

Best Practice Minimum Free Space on Datastore |VMware Communities

Wednesday, June 13, 2018

VMware 妙妙妙 - Migrate VM Storage vMotion 發生無法理解的錯誤

今天來回覆聽眾 Mr. K 的點播。
本篇字數較多,覺得硬的話可分次閱讀。

<<前情提要>>
新機器安裝 ESXi 6.7,舊機器原先安裝 ESXi 6.5,新環境佈署 VCSA 6.7,並將所有 ESXi Host 加入管理。在 vSphere HTML5 Client 下操作,所有的 VM 都是放在 Local Datastore 下,將原先在 6.5 的開機的 VM Migrate 到 6.7 沒問題,但要從 6.7 將開機的 VM Migrate 到 6.5 無法成功。
在執行 vMotion+Storage vMotion 時,過程的結尾會發生奇妙的錯誤:The backing path name is invalid. (中文版 Web Client 看到的訊息是:支援路徑名稱無效)

題外話:VMware vSphere 6.7 在 17 APR 2018 低調現身,殺個讓人措手不及,後續有空再來分享 What's new in vSphere 6.7。

<<解題無腦版>>
一般用關鍵字呼叫咕狗,通常第一頁就會有 VMware KB (Knowledge Base) 出來解危,當然 KB 不是一定有用,但至少會有些解謎方向,但這次卻完全沒有相關資料。

嘗試了幾個...沒啥用的方法,像是:
(1)檢查 Virtual Machine Hardware Version,是否不小心按到升級為 ESXi 6.5 不支援的更高版本。
(2)檢查是否有隱藏未刪除乾淨的 snapshot。
(3)將這個 VM → Remove from inventory → Add to inventory。
(4)...
大概還有十八招,不過既然沒用就不用全部寫出來了,以免誤人子弟。

<<解題認真版>>
VM 在 power on 的時候作 vMotion+Storage vMotion,會牽涉到兩端 Host 的 CPU 相容性 (如果主機型號不同,造成 CPU 世代差異,而且又沒有開啟 EVC 的話),所以先問 VM 能否 shutdown,關機後再做 VM Storage vMotion (或是應該說 change host+datastore),這樣子就只牽涉到純資料搬移,去除硬體相容性的影響。

不過 VM shutdown 之後做 Migrate 還是老樣子,一樣失敗,一樣的錯誤訊息~沒關係只好開始土法煉鋼,開始翻各種地方的 log file,查看該個 VM 的 Events 也沒有什麼幫助,只好開始繼續往 ESXi Host 挖。

小提示:可以透過 Export System Logs (Export the Support Bundle) 功能,把 ESXi Host 的各種 Log 資訊打包後下載回來,這也是開 Support Ticket 時,Support Engineer 很常叫客戶做的事情之一。將下載的壓縮檔解開後,在外面使用文字編輯器 (Notepad++, MadEdit, UltraEdit, ...) 會比較容易查看及搜尋,如果對 vi 的用法很熟悉的話,在 ESXi SSH Shell 下直接來也是可以。

順便抱怨分享另一件奇妙的事,我在 vCSA 6.7 的環境,不管是透過 Web Client 還是 vSphere HTML5 Client,都找不到 Export System Logs 的功能,不知道是位置換了還是新版本的霸格,VMware KB 的適用版本 6.7 還沒加上去,山不轉路轉,改成直接連到 ESXi Host Client 就順利的打包 Support Bundle。

關於在每台 ESXi 上 VM 的操作及詳細 log 都會儲存在每台 ESXi Host 的檔案 /var/log/hostd.log,打包出來的 support bundle 目錄結構會有些許改變,變成 /var/run/log/hostd.log。Log files 每天系統會自動 rotate,歷史檔案會壓縮起來,所以往前的歷史天數依序是:hostd.0.gz, hostd.1.gz, ... hostd.8.gz。

在轉移來源端的 hostd.log 內找不到明顯的錯誤,再來往轉移目的端的 ESXi 尋找。
(轉移目的端)節錄 esxi-target-hostd.log 一段,包含可能有問題的訊息:

2018-06-06T08:32:38.932Z info hostd[2105829] [Originator@6876 sub=Vimsvc.ha-eventmgr opID=5572f059-d0d4-471b-8fe6-2674b614e9f4-192755-auto-192756-h5c:70026332-44-01-7b-7e27 user=vpxuser:VSPHERE.LOCAL\Administrator] Event 295 : Creating ucspe-3 on host localhost.localdomain in ha-datacenter
2018-06-06T08:32:38.934Z info hostd[2105829] [Originator@6876 sub=Libs opID=5572f059-d0d4-471b-8fe6-2674b614e9f4-192755-auto-192756-h5c:70026332-44-01-7b-7e27 user=vpxuser:VSPHERE.LOCAL\Administrator] FILE: FileCreateDirectoryEx: Failed to create /vmfs. Error = 17
2018-06-06T08:32:38.934Z info hostd[2105829] [Originator@6876 sub=Libs opID=5572f059-d0d4-471b-8fe6-2674b614e9f4-192755-auto-192756-h5c:70026332-44-01-7b-7e27 user=vpxuser:VSPHERE.LOCAL\Administrator] FILE: FileCreateDirectoryEx: Failed to create /vmfs/volumes. Error = 17
2018-06-06T08:32:38.934Z info hostd[2105829] [Originator@6876 sub=Libs opID=5572f059-d0d4-471b-8fe6-2674b614e9f4-192755-auto-192756-h5c:70026332-44-01-7b-7e27 user=vpxuser:VSPHERE.LOCAL\Administrator] FILE: FileCreateDirectoryEx: Failed to create /vmfs/volumes/5b1735f8-10a8490f-6eae-ac162d6f9948. Error = 17
2018-06-06T08:32:38.934Z info hostd[2105829] [Originator@6876 sub=Libs opID=5572f059-d0d4-471b-8fe6-2674b614e9f4-192755-auto-192756-h5c:70026332-44-01-7b-7e27 user=vpxuser:VSPHERE.LOCAL\Administrator] FILE: FileCreateDirectoryEx: Failed to create /vmfs/volumes/5b1735f8-10a8490f-6eae-ac162d6f9948/ucspe-3. Error = 17
2018-06-06T08:32:38.944Z info hostd[2105829] [Originator@6876 sub=Vmsvc.vm:/vmfs/volumes/5b1735f8-10a8490f-6eae-ac162d6f9948/ucspe-3/ucspe-3.vmx opID=5572f059-d0d4-471b-8fe6-2674b614e9f4-192755-auto-192756-h5c:70026332-44-01-7b-7e27 user=vpxuser:VSPHERE.LOCAL\Administrator] SetVmxVersion: switching environment browser to vmx version 'vmx-13'
2018-06-06T08:32:38.952Z info hostd[2098843] [Originator@6876 sub=Snmpsvc] VmConfigListener: vm state change received, queueing reload request
2018-06-06T08:32:38.964Z info hostd[2105829] [Originator@6876 sub=Vmsvc.vm:/vmfs/volumes/5b1735f8-10a8490f-6eae-ac162d6f9948/ucspe-3/ucspe-3.vmx opID=5572f059-d0d4-471b-8fe6-2674b614e9f4-192755-auto-192756-h5c:70026332-44-01-7b-7e27 user=vpxuser:VSPHERE.LOCAL\Administrator] Reconfigure failed: N3Vim5Fault20GenericVmConfigFault9ExceptionE(Fault cause: vim.fault.GenericVmConfigFault
--> )
--> [context]zKq7AVICAgAAAMKpfAAcaG9zdGQAAHyZNWxpYnZtYWNvcmUuc28AAADAGwBgsBcBv1v9bGlidmltLXR5cGVzLnNvAIFiMhYBgY6HFgGBmnUSAQK1O9hob3N0ZAAC6h3WAu0l1gLcP9YCWwixAlILsQLldLECAYquAta7tQLaxrUCiuq5AkDtuQJCb2WBomQBAQL148EC7ezBACUwKAADNCgAOw82A2uAAGxpYnB0aHJlYWQuc28uMAAE7ZoObGliYy5zby42AA==[/context]
2018-06-06T08:32:38.984Z info hostd[2105829] [Originator@6876 sub=Libs opID=5572f059-d0d4-471b-8fe6-2674b614e9f4-192755-auto-192756-h5c:70026332-44-01-7b-7e27 user=vpxuser:VSPHERE.LOCAL\Administrator] CopyFromDisk: Hostlog_Dump: Hostlog /vmfs/volumes/5b1735f8-10a8490f-6eae-ac162d6f9948/ucspe-3/ucspe-3-757d692b.hlog
2018-06-06T08:32:38.984Z info hostd[2105829] [Originator@6876 sub=Libs opID=5572f059-d0d4-471b-8fe6-2674b614e9f4-192755-auto-192756-h5c:70026332-44-01-7b-7e27 user=vpxuser:VSPHERE.LOCAL\Administrator]    UUID: 39363436-3230-4e43-3732-34323033324c
2018-06-06T08:32:38.984Z info hostd[2105829] [Originator@6876 sub=Libs opID=5572f059-d0d4-471b-8fe6-2674b614e9f4-192755-auto-192756-h5c:70026332-44-01-7b-7e27 user=vpxuser:VSPHERE.LOCAL\Administrator]    MigID: 7034122878062430581
2018-06-06T08:32:38.984Z info hostd[2105829] [Originator@6876 sub=Libs opID=5572f059-d0d4-471b-8fe6-2674b614e9f4-192755-auto-192756-h5c:70026332-44-01-7b-7e27 user=vpxuser:VSPHERE.LOCAL\Administrator]    HLState: none
2018-06-06T08:32:38.984Z info hostd[2105829] [Originator@6876 sub=Libs opID=5572f059-d0d4-471b-8fe6-2674b614e9f4-192755-auto-192756-h5c:70026332-44-01-7b-7e27 user=vpxuser:VSPHERE.LOCAL\Administrator]    ToFrom: none
2018-06-06T08:32:38.984Z info hostd[2105829] [Originator@6876 sub=Libs opID=5572f059-d0d4-471b-8fe6-2674b614e9f4-192755-auto-192756-h5c:70026332-44-01-7b-7e27 user=vpxuser:VSPHERE.LOCAL\Administrator]    MigType: invalid
2018-06-06T08:32:38.984Z info hostd[2105829] [Originator@6876 sub=Libs opID=5572f059-d0d4-471b-8fe6-2674b614e9f4-192755-auto-192756-h5c:70026332-44-01-7b-7e27 user=vpxuser:VSPHERE.LOCAL\Administrator]    OpType: nfc
2018-06-06T08:32:38.984Z info hostd[2105829] [Originator@6876 sub=Libs opID=5572f059-d0d4-471b-8fe6-2674b614e9f4-192755-auto-192756-h5c:70026332-44-01-7b-7e27 user=vpxuser:VSPHERE.LOCAL\Administrator]    WorldID: 0
2018-06-06T08:32:38.984Z info hostd[2105829] [Originator@6876 sub=Libs opID=5572f059-d0d4-471b-8fe6-2674b614e9f4-192755-auto-192756-h5c:70026332-44-01-7b-7e27 user=vpxuser:VSPHERE.LOCAL\Administrator]    Item Dir F "/vmfs/volumes/5b1735f8-10a8490f-6eae-ac162d6f9948/ucspe-3"
2018-06-06T08:32:38.984Z info hostd[2105829] [Originator@6876 sub=Libs opID=5572f059-d0d4-471b-8fe6-2674b614e9f4-192755-auto-192756-h5c:70026332-44-01-7b-7e27 user=vpxuser:VSPHERE.LOCAL\Administrator]    Item Disk F "/vmfs/volumes/5b1735f8-10a8490f-6eae-ac162d6f9948/ucspe-3/ucspe-3.vmdk"
2018-06-06T08:32:38.984Z info hostd[2105829] [Originator@6876 sub=Libs opID=5572f059-d0d4-471b-8fe6-2674b614e9f4-192755-auto-192756-h5c:70026332-44-01-7b-7e27 user=vpxuser:VSPHERE.LOCAL\Administrator]    Item File F "/vmfs/volumes/5b1735f8-10a8490f-6eae-ac162d6f9948/ucspe-3/ucspe-3.nvram"
2018-06-06T08:32:38.984Z info hostd[2105829] [Originator@6876 sub=Libs opID=5572f059-d0d4-471b-8fe6-2674b614e9f4-192755-auto-192756-h5c:70026332-44-01-7b-7e27 user=vpxuser:VSPHERE.LOCAL\Administrator]    Item File F "/vmfs/volumes/5b1735f8-10a8490f-6eae-ac162d6f9948/ucspe-3/vmware-1.log"
2018-06-06T08:32:38.984Z info hostd[2105829] [Originator@6876 sub=Libs opID=5572f059-d0d4-471b-8fe6-2674b614e9f4-192755-auto-192756-h5c:70026332-44-01-7b-7e27 user=vpxuser:VSPHERE.LOCAL\Administrator]    Item File F "/vmfs/volumes/5b1735f8-10a8490f-6eae-ac162d6f9948/ucspe-3/vmware.log"
2018-06-06T08:32:38.984Z info hostd[2105829] [Originator@6876 sub=vm opID=5572f059-d0d4-471b-8fe6-2674b614e9f4-192755-auto-192756-h5c:70026332-44-01-7b-7e27 user=vpxuser:VSPHERE.LOCAL\Administrator]    Item Vm F "/vmfs/volumes/5b1735f8-10a8490f-6eae-ac162d6f9948/ucspe-3/ucspe-3.vmx"
2018-06-06T08:32:38.984Z info hostd[2105829] [Originator@6876 sub=Vmsvc.vm:/vmfs/volumes/5b1735f8-10a8490f-6eae-ac162d6f9948/ucspe-3/ucspe-3.vmx opID=5572f059-d0d4-471b-8fe6-2674b614e9f4-192755-auto-192756-h5c:70026332-44-01-7b-7e27 user=vpxuser:VSPHERE.LOCAL\Administrator] Create failed with given spec: /vmfs/volumes/5b1735f8-10a8490f-6eae-ac162d6f9948/ucspe-3/ucspe-3.vmx

這一看就覺得事情並不單純,ucspe-03.vmx 裡面的內容肯定有鬼,到底是什麼鬼我也不知道,明明七月還沒到就跨丟。
把 ucspe-03.vmx 打開來看,我用火眼金睛看過三次之後,還是看不出哪裡有問題,去咕狗找 vmx format checker 之類的東西,也沒找到這種工具。

繼續來土法煉鋼,如果確定方向是 vmx 的內容有問題,那用 Create Virtual Machine 產生出來的 .vmx 就絕對沒問題。為了以防萬一,原先的 VMDK (Virtual Disk) 先留著,以免發生不測。
假設原先的 VM 是 ucspe-03,新的 VM 取名 ucspe-03-new,請自行依環境修改參數,大致步驟如下:
(vmkfstools 為 ESXi Shell 下指令,請自行小心使用)
(1) 複製 ucspe-03.vmdk,新的檔案 ucspe-03-new.vmdk。
vmkfstools -i ucspe-03.vmdk ucspe-03-new.vmdk
(2) 建立新的虛擬機 (Create a Virtual Machine),名稱為 ucspe-03-new,建立 Virtual Disk 步驟請跳過暫時不要建立,其他參考原先 VM 的 Virtual Hardware 需一致。
請自行操作 Web Client 或 vSphere HTML5 Client。
(3) 將複製出來的 ucspe-03-new.vmdk,搬移到新建 VM 的目錄下 (此步驟是為了往後管理方便)。
vmkfstools -E ucspe-03-new.vmdk ../ucspe-03-new/ucspe-03-new.vmdk
(4) 將新 VM ucspe-03-new 掛上複製的 ucspe-03-new.vmdk。
請自行操作 Web Client 或 vSphere HTML5 Client。
(5) Power On 新 VM ucspe-03-new,看是否運作正常;若正常可將此 VM 關機。
(6) 對新 VM 再做一次 Migrate VM,看 Storage vMotion 搬移過程是否還有錯誤。
(7) 如果一切正常的話,可以把原先無法搬移的舊 VM 完全刪除。

打完收工!


<<參考資料>>
vSphere 6.7 Release Notes

Collecting diagnostic information for VMware ESX/ESXi (653)

vmkfstools - vSphere CLI for managing VMFS volumes.

Validating the .vmx settings of a virtual machine (1003748)

<<附檔收錄>>
這邊是 Migrate VM 的事件完整 log 檔、ucspe-03.vmx,有興趣的可以下載回去研究:
(轉移來源端) esxi-source-hostd.log
(轉移目的端) esxi-target-hostd.log
(VM設定檔) ucspe-3.vmx


〈本文同步刊載於痞客邦部落格〉