【问题标题】:vSphere error - Configured PCI devices are not attached to the VMvSphere 错误 - 配置的 PCI 设备未连接到 VM
【发布时间】:2021-08-22 06:19:13
【问题描述】:

我试图在 vSphere 7.0 上通过 HashiCorp 的 Terraform(版本 1.0.4)启动几个虚拟机,我配置了 PCI 设备 - 在 ESXi 主机上定义了一些 PCI 设备(直接路径直通设备),用虚拟机创建了一个 tf 文件resource 和 pci_device_id 参数填充了许多 pci 地址,例如 资源 "vsphere_virtual_machine" "vm" { ... pci_device_id = ["0000:b5:00.0","0000:b5:00.1"] ...} 如上所述。
部署时出错 -
Error: A specified parameter was not correct: deviceChange[1].device.key on vm_plan_ldu.tf line 26, in resource "vsphere_virtual_machine" "vm_ldu": 26: resource "vsphere_virtual_machine" "vm_ldu" {

最终,没有一个 PCI 设备按预期连接到虚拟机。

这是我使用的配置:

resource "vsphere_virtual_machine" "vm_udu" {
name                       = "cyrus2nr-udu1"
resource_pool_id           = data.vsphere_resource_pool.pool.id
datastore_id               = data.vsphere_datastore.datastore.id
host_system_id             = data.vsphere_host.host.id
num_cpus = var.num_cpus_udu1
num_cores_per_socket = var.num_cpus_udu1
cpu_reservation = var.host_cpu_freq == "" ? (var.auto_host_cpu_freq * var.num_cpus_udu1) : (var.host_cpu_freq * 
var.num_cpus_udu1)
cpu_share_level = "high"

memory   = var.memory_udu1
memory_reservation = var.memory_udu1
memory_share_level = "high"

guest_id = data.vsphere_virtual_machine.template_udu.guest_id
pci_device_id = ["0000:5e:0e.0","0000:5e:0e.1","0000:5e:0a.0"]

scsi_type = data.vsphere_virtual_machine.template_udu.scsi_type

network_interface {
    network_id   = data.vsphere_network.network_udu_1.id
    adapter_type = data.vsphere_virtual_machine.template_udu.network_interface_types[0]
}

disk {
    label            = "disk0.vmdk"
    size             = data.vsphere_virtual_machine.template_udu.disks.0.size
    eagerly_scrub    = data.vsphere_virtual_machine.template_udu.disks.0.eagerly_scrub
    thin_provisioned = data.vsphere_virtual_machine.template_udu.disks.0.thin_provisioned
    io_limit         = 1000
}
disk {
    label       = "disk1"
    size        = "48"
    unit_number = 1
    thin_provisioned = false
    io_limit    = 1000
}

clone {
    template_uuid = data.vsphere_virtual_machine.template_udu.id
}

cdrom {
    client_device = true
}

// Attach the cloudcongif as a OVF property "user-data"
vapp {
    properties = {
        "user-data" = base64encode(local_file.cloudconfig-udu.content)
    }
  }
}

任何想法如何处理它? 谢谢!

【问题讨论】:

  • 请不要发布代码或错误的图像,将它们作为文本发布。

标签: terraform virtual-machine vsphere pci terraform-provider-vsphere


【解决方案1】:

我不熟悉 HashiCorp 的 Terraform 产品,但从您的描述看来,您很有可能没有将虚拟机配置为不可 vMotionable。也许 Terraform 会为您解决这个问题,或者现在有一个基础架构允许通过主机 PCI 设备的直通对 VM 进行 vMotioning。有一个用于主机 USB 设备,它通过虚拟机传递,但我不知道通过 PCI 设备传递对虚拟机的 vMotion 的相应支持。

要查看涉及的问题,请参阅https://kb.vmware.com/s/article/1022290?lang=en_US&queryTerm=usb%20arbitrator 并点击本文中的链接:

注意:要支持连接主机的设备的 vMotion,请选择连接设备时支持 vMotion。有关详细信息,请参见 vSphere Virtual Machine Administration Guide 中的为 vMotion 配置 USB 直通设备部分。

这里有一篇关于如何禁用 vMotion 的帖子:https://communities.vmware.com/t5/vMotion-Resource-Management/Disable-vMotion-for-a-single-VM/td-p/435730。 VMware 不鼓励这样做,因为它违背了 DRS、HA 和其他许多产品的目的。那天我是启用 USB 直通的团队的一员,为了发布新功能,我们需要解决“vMotion 问题”,这就是为什么存在“USB 仲裁器”的原因,所以也许现在有一个用于PCI 设备也是如此。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    • 2021-03-30
    相关资源
    最近更新 更多