【问题标题】:azure-sdk-for-python: get the LUN of a diskazure-sdk-for-python:获取磁盘的 LUN
【发布时间】:2020-01-30 06:03:51
【问题描述】:

如何获取磁盘的 LUN?我当前的代码如下所示:

compute_client = get_client_from_cli_profile(ComputeManagementClient)
virtual_machines = compute_client.virtual_machines

# Search VMs for the one I'm looking for
machines = virtual_machines.list_all()
for machine in machines:
    if machine.vm_id == my_vm_id:
        managed_id = machine.id
        break

# Search disks for those matching my VM
disks = compute_client.disks.list()
disks = filter(lambda disk : \ 
    disk.managed_by and disk.managed_by.lower() == managed_id.lower(), \
    disks)
return disks

问题在于这会生成一个Disk 对象列表,其中包含一些有用的信息,但包含磁盘 LUN 之类的东西。

我看到 DataDisk 对象包含 LUN,但我不知道如何获取。

如何获取磁盘列表及其名称和 LUN?

(顺便说一句,除了有条不紊地搜索订阅中的所有 vm 和所有磁盘之外,有没有更好的方法可以从 vm id 或 VM 的附加磁盘列表中获取 VM?)

【问题讨论】:

    标签: python azure


    【解决方案1】:

    如何获取磁盘列表及其名称和 LUN?

    其实lun是虚拟机磁盘的属性,不是磁盘的。所以需要通过VM信息来获取数据盘的lun和name。这里的示例代码:

    compute_client = ComputeManagementClient(credential, Subscription_Id)
    
    vm = compute_client.virtual_machines.get(vmGroup, vmName)
    dataDisks = vm.storage_profile.data_disks
    for disk in dataDisks:
        print(disk.lun)
    

    更多详情请查看虚拟机的StorageProfile class

    如果您想获取所有附加到 VM 的磁盘,我认为您只需要获取 VM 信息,然后从中获取 VM 磁盘。这是建议。而且您还需要搜索订阅中的所有虚拟机,除非您只想搜索一个特殊的虚拟机。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-31
      • 2020-11-08
      • 2023-04-05
      • 1970-01-01
      • 2017-07-12
      • 2021-03-29
      • 2014-06-28
      • 1970-01-01
      相关资源
      最近更新 更多