藉由 ViewDbChk 命令,您可以解決資料庫不一致問題,該資料庫用於儲存自動桌面平台集區中的桌面平台虛擬機器相關資訊,以及自動伺服器陣列中的 RDS 主機相關資訊。

Horizon 7 環境中,自動伺服器陣列的桌面平台虛擬機器和 RDS 主機相關資訊儲存在下列位置中:

  • LDAP 資料庫
  • vCenter Server 資料庫
  • 僅適用於 View Composer 連結複製機器:View Composer 資料庫

通常,您可以透過使用 Horizon Administrator 移除或重新設定桌面平台虛擬機器或 RDS 主機,從執行佈建或其他作業期間發生的錯誤中復原。在極少數情況下,不同資料庫中處於錯誤狀態的機器相關資訊可能會不一致,無法使用 Horizon Administrator 從錯誤中復原。您可能會看到下列症狀之一:

  • 佈建失敗,出現錯誤資訊具有輸入規格的虛擬機器已存在
  • 重新撰寫桌面平台集區失敗,出現錯誤訊息 Desktop Composer 故障: 具有輸入規格的虛擬機器已存在
  • Horizon Administrator 顯示桌面平台機器或 RDS 主機停滯在刪除中狀態。
  • 您無法刪除桌面平台集區或自動伺服器陣列。
  • 您無法刪除桌面平台機器或 RDS 主機。
  • Horizon Administrator 的 [詳細目錄] 索引標籤中,桌面平台機器或 RDS 主機的狀態遺失。

在資料庫不一致導致桌面平台機器或 RDS 主機處於無法復原的錯誤狀態或阻止 Horizon Administrator 工作成功完成的情況下,您可以使用 ViewDbChk 命令解決不一致問題。ViewDbChk 命令具有下列特性:

  • 在安裝 Horizon 標準伺服器或 Horizon 複寫伺服器時會自動安裝 ViewDbChk。在安裝 Horizon 安全伺服器時不會安裝該公用程式。
  • ViewDbChk 是可以從 Windows 命令提示字元或指令碼執行的命令。
  • ViewDbChk 支援完整虛擬機器以及 View Composer 連結複製的自動伺服器陣列與自動桌面平台集區。
  • 當您想要移除機器時,ViewDbChk 在機器上執行健全狀況檢查,並提示您進一步確認機器是否狀況良好。
  • ViewDbChk 可以刪除錯誤或不完整的 LDAP 項目。
  • ViewDbChk 支援使用 I18N 字元集進行輸入和輸出。
  • ViewDbChk 不會移除使用者資料。對於完整桌面平台虛擬機器,ViewDbChk 會從詳細目錄中移除虛擬機器,但不會從磁碟中刪除虛擬機器。對於連結複製桌面平台虛擬機器,ViewDbChk 會刪除虛擬機器,並將使用者磁碟封存到根資料夾 (如果是 VMFS 資料存放區) 或名為 archiveUDD 的子資料夾 (如果是 vSAN 和虛擬磁碟區資料存放區)。
  • ViewDbChk 不支援手動伺服器陣列中的未受管理桌面平台機器或 RDS 主機。

ViewDbChk 語法

ViewDbChk --findDesktop --desktopName <desktop pool or farm name> [--verbose]

ViewDbChk --enableDesktop --desktopName <desktop pool or farm name> [--verbose]

ViewDbChk --disableDesktop --desktopName <desktop pool or farm name> [--verbose]

ViewDbChk --findMachine --desktopName <desktop pool or farm name> --machineName <machine name> [--verbose]

ViewDbChk --removeMachine --machineName <machine name> [--desktopName <desktop pool or farm name>] [--force] [--noErrorCheck] [--verbose]

ViewDbChk --scanMachines [--desktopName <desktop pool or farm name>] [--limit <maximum deletes>] [--force] [--verbose]

ViewDbChk --help [--commandName] [--verbose]

ViewDbChk 參數

參數 說明
--findDesktop 尋找桌面平台集區或伺服器陣列。
--enableDesktop 啟用桌面平台集區或伺服器陣列。
--disableDesktop 停用桌面平台集區或伺服器陣列。
--findMachine 找到機器。
--removeMachine 從桌面平台集區或伺服器陣列移除機器。在移除機器之前,ViewDbChk 會提示使用者停用桌面平台集區或伺服器陣列。在移除機器之後,ViewDbChk 會提示使用者重新啟用桌面平台集區或伺服器陣列。
--scanMachines 搜尋處於錯誤或複製錯誤狀態或虛擬機器遺失的機器,列出依桌面平台集區或伺服器陣列分組的問題機器,並提供移除機器的選項。在移除機器之前,ViewDbChk 會提示使用者停用桌面平台集區或伺服器陣列。在移除桌面平台集區或伺服器陣列中的所有錯誤機器後,ViewDbChk 提示使用者重新啟用桌面平台集區或伺服器陣列。
--help 顯示 ViewDbChk 的語法。
--desktopName <desktop name> 指定桌面平台集區或伺服器陣列名稱。
--machineName <machine name> 指定機器名稱。
--limit <maximum deletes> 限制 ViewDbChk 可移除的機器數。預設值為 1。
--force 強制移除機器,無需使用者確認。
--noErrorCheck 強制移除沒有錯誤的機器。
--verbose 啟用詳細記錄。
備註: 所有參數名稱皆區分大小寫。

ViewDbChk 使用量範例

名為 lc-pool2-2 的桌面平台機器處於錯誤狀態,無法使用 Horizon Administrator 將其移除。可使用 ViewDbChk 將其從 Horizon 7 環境中移除。

C:\Program Files\VMware\VMware View\Server\tools\bin\viewdbchk.cmd --removeMachine --machineName lc-pool2-2 
Looking for desktop pool "lc-pool2" in LDAP...
   Desktop Pool Name: lc-pool2
   Desktop Pool Type: AUTO_LC_TYPE
   VM Folder: /vdi/vm/lc-pool2/
   Desktop Pool Disabled: false
   Desktop Pool Provisioning Enabled: true
Looking for machine "/vdi/vm/lc-pool2/lc-pool2-2" in vCenter...
   Connecting to vCenter "https://10.133.17.3:443/sdk". This may take some time...
Checking connectivity...
   Connecting to View Composer "https://10.133.17.3:18443". This may take some time...
The desktop pool "lc-pool2" must be disabled before proceeding. Do you want to disable the desktop pool? (yes/no):yes
Found machine "lc-pool2-2"
   VM Name: lc-pool2-2
   Creation Date: 1/25/15 1:20:26 PM PST
   MOID: vm-236
   Clone Id: b12a9ed2-8535-44ee-a9d6-6c9b5cf6f878
   VM Folder: /vdi/vm/lc-pool2/lc-pool2-2
   VM State: ERROR
Do you want to remove the desktop machine "lc-pool2-2"? (yes/no):yes
Shutting down VM "/vdi/vm/lc-pool2/lc-pool2-2"...
Archiving persistent disks...
Destroying View Composer clone "b12a9ed2-8535-44ee-a9d6-6c9b5cf6f878"...
Removing ThinApp entitlements for machine "/vdi/vm/lc-pool2/lc-pool2-2"...
Removing machine "/vdi/vm/lc-pool2/lc-pool2-2" from LDAP...
Running delete VM scripts for machine "/vdi/vm/lc-pool2/lc-pool2-2"...
Do you want to enable the desktop pool "lc-pool2"? (yes/no):yes