问题现象描述:

有用户反映在Hypervisor存储上同一个计算机目录会有多个对应的同名baskdisk占用存储空间且不知如何清除

背景及原理:
Citrix Machine Creation Service(MCS)的原理不再这里做详细介绍,MCS的主要目的是根据一个虚拟机模板批量创建多一个虚拟机,我们这里简单回忆下MCS创建的步骤:

  1. 选择桌面操作系统类型(服务器,桌面或RemotePC)
  2. 选择电源托管和置备类型并指定需要使用的托管主机
  3. 选择桌面类型(专有,池静态,池随机)
  4. 选择模板或者快照(这里推荐先创建快照然后选择指定的快照,以方便用户后续管理)
  5. 选择创建的数量,内存,cache大小等
  6. 选择对应的OU和命令规则
  7. 选择scope并指定计算机目录的名称
    完成以上步骤后后续交给DDC去执行,无需用户干预。这里需要特别指出的步骤2中选择的托管主机,托管主机的目的是配置创建机器需要是用的网络,存储和GPU资源等。在创建计算机目录或者更新计算机目录的过程中,MCS会在使用的托管主机中的每个存储分别拷贝一个Basedisk(举例:用户XenServer资源池中配置10个共享存储,但是托管主机中配置5个共享存储,这里会往指定的5个存储上拷贝basedisk).

问题产生可能原因:

  1. 拷贝超时并不断重试
  2. 用户现有的VM没有关联到新的basedisk
  3. 没有达到系统自动删除的时间
  4. 其他原因

解决方法:

针对Citrix XenServer:

  1. 打开Citrix studio->查询->确保没有pending update(待定更新)的机器
    如何在存储中删除多余的XenDesktop计算机目录对应的Basedisk
    **Note: 或者通过Powershell “Get-BrokerMachine -ImageOutOfDate $true | select MachineName ” 来查看,如果能查询到机器则重启此机器,确保该查询不返回任何VM再执行以下操作
  2. DDC上管理员权限运行Powershell并输入asnp citrix来加载snapin
  3. 输入Get-Provscheme查询计算机目录对应的ProvsioningSchemeUid和host(默认ProvsioningSchemeName为计算机目录名称)
    如何在存储中删除多余的XenDesktop计算机目录对应的Basedisk
  4. 打开数据库服务器找到表 [DesktopUpdateManagerSchema].[ProvisioningSchemeVMImageLocation],这张表中我们可以看到这个计算机目录对应的存储和basedisk对应的UUID
    如何在存储中删除多余的XenDesktop计算机目录对应的Basedisk
  5. 打开XenCenter找到上面步骤中对应的存储id:
    如何在存储中删除多余的XenDesktop计算机目录对应的Basedisk
  6. 从步骤4.5以看到在此存储上对应正在使用的basedisk的UUID,这里我们记录下,因为多个basedisk存在的时候它们名称相同,我们只能通过uuid来区分。
  7. 回到XenServer命令行通过以下命令来重命名正在使用的basedisk,其他没有被重命名的即可以通过xencenter进行删除
    如何在存储中删除多余的XenDesktop计算机目录对应的Basedisk

参考以上步骤删除其他存储上的basedisk即可

针对VMWare Esxi

  1. 参考上述步骤1
  2. 通过客户端或者网页浏览VMWare对应的datastore,这里我们可以看到同一个计算机目录对应多个basedisk
    如何在存储中删除多余的XenDesktop计算机目录对应的Basedisk
    3.关闭此计算机目录中的任一台计算机并浏览其磁盘所在的文件夹找到-xd-delta.vmdk的文件并下载到本地
    如何在存储中删除多余的XenDesktop计算机目录对应的Basedisk
  3. 文本编辑器打开此文件我们可以看到正在使用的basedisk
    如何在存储中删除多余的XenDesktop计算机目录对应的Basedisk
  4. 删除步骤2中查询到的其他basedisk即可。