当前任务
将虚拟磁盘添加到 vSphere 5 上的 Linux VM 后,我们需要识别磁盘以便自动执行 LVM 存储配置。
虚拟磁盘可能位于不同的数据存储区(例如 sas 或闪存)上,尽管它们的大小可能相同,但速度可能不同。所以我需要一种方法将 vSphere 磁盘映射到 Linux 设备。
想法
通过 vSphere API,我可以获取设备信息:
Data Object Type: VirtualDiskFlatVer2BackingInfo
Parent Managed Object ID: vm-230
Property Path: config.hardware.device[2000].backing
Properties
Name Type Value
ChangeId string Unset
contentId string "d58ec8c12486ea55c6f6d913642e1801"
datastore ManagedObjectReference:Datastore datastore-216 (W5-CFAS012-Hybrid-CL20-004)
deltaDiskFormat string "redoLogFormat"
deltaGrainSize int Unset
digestEnabled boolean false
diskMode string "persistent"
dynamicProperty DynamicProperty[] Unset
dynamicType string Unset
eagerlyScrub boolean Unset
fileName string "[W5-CFAS012-Hybrid-CL20-004] l****9-000001.vmdk"
parent VirtualDiskFlatVer2BackingInfo parent
split boolean false
thinProvisioned boolean false
uuid string "6000C295-ab45-704e-9497-b25d2ba8dc00"
writeThrough boolean false
在 Linux 上我可以读取 uuid 字符串:
[root@lx***** ~]# lsscsi -t
[1:0:0:0] cd/dvd ata: /dev/sr0
[2:0:0:0] disk sas:0x5000c295ab45704e /dev/sda
[3:0:0:0] disk sas:0x5000c2932dfa693f /dev/sdb
[3:0:1:0] disk sas:0x5000c29dcd64314a /dev/sdc
如您所见,磁盘 /dev/sda 的 uuid 字符串看起来与 VMware API 中可见的字符串有些相似。只有第一个十六进制数字不同(5 对比 6),并且只出现在第三个连字符处。所以这看起来很有希望……
替代想法
按控制器选择磁盘。但是,升序的 SCSI ID 是否也与下一个 vSphere 虚拟磁盘匹配?如果我添加另一个 DVD-ROM 驱动器/USB Thumb 驱动器会发生什么?这可能会在其中引入新的 SCSI 设备。这就是我认为我会放弃这个想法的原因。
问题
- 有人知道更简单的方法来映射 vSphere 磁盘和 Linux 设备吗?
- 有人可以解释一下 uuid 字符串的区别吗?(我认为这与 SAS 寻址启动器和目标有关......类似于 WWN......)
- 我可以使用这些 uuid 字符串可靠地映射设备吗?
- SCSI 虚拟磁盘怎么样?那么就没有可见的 uuid...
- 这个任务看起来很明显。为什么 Vmware 不考虑这一点,而只是简单地添加一种通过 Vmware Tools 查询磁盘映射的方法?
答案1
使用 SCSI ID 来识别虚拟磁盘。您似乎认为 SCSI ID 是在虚拟机启动时动态分配的。事实并非如此。在虚拟机的属性中,您可以将虚拟磁盘的 ID 设置为您想要的任何值,除非您愿意,否则它不会改变。