通过使用 ViewDbChk 命令,您可以解决存储有关自动桌面池中的桌面虚拟机和自动场中的 RDS 主机的信息的数据库中的不一致问题。
在 Horizon 7 环境中,有关桌面虚拟机和自动场中的 RDS 主机的信息存储在以下位置:
- LDAP 数据库
- vCenter Server 数据库
- 仅限 View Composer 链接克隆计算机:View Composer 数据库
通常,您可以使用 Horizon Administrator 移除或重置桌面虚拟机或 RDS 主机,以从置备或其他操作期间出现的错误中恢复。在极少情况下,不同数据库中有关处于错误状态的计算机的信息可能变得不一致,且无法使用 Horizon Administrator 从错误中恢复。您可能会看到以下症状之一:
- 置备失败,并显示错误消息:带有输入规范的虚拟机已存在 (Virtual machine with Input Specification already exists)。
- 重构桌面池失败,并显示错误消息:桌面 Composer 故障: 带有输入规范的虚拟机已存在 (Desktop Composer Fault: Virtual Machine with Input Specification already exists)。
- 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