Текст:
По вопросу как привязать диск в конфигурации виртуальной машины к букве диска в ОС Windows написано много и запутано. Имеется два класса решений: красивые но работающие только на ВМ с одним SCSI контроллером и универсальные - многострочные скрипты, которым нужны права и сетевые доступы и к гостевой ОС и к vcenter.
Попробуем прояснить ситуацию и создадим тестовую ВМ scsitest, с четырьмя SCSI контроллерами на борту. Посмотрим как это выглядит в powercli:
$vms=get-vm scsitest $ctrl=$vms|Get-ScsiController $ctrl|%{ $_.name+';'+$_.type+';'+$_.extensiondata.slotinfo.PciSlotNumber+';'+$_.key }
вывод получим такой:
SCSI controller 0;VirtualLsiLogicSAS;160;1000 SCSI controller 1;ParaVirtual;224;1001 SCSI controller 2;ParaVirtual;256;1002 SCSI controller 3;ParaVirtual;1184;1003
PCI slot number 160,224,256,1184 - мы попытаемся привязать к Storage Controller в гостевой ОС, а Key 1000,1001,1002,1003 - пригодится нам для привязки дисков к контроллеру в конфигурации ВМ.
$disk=$vms|Get-HardDisk$disk|%{ $_.name+';'+$_.capacitygb+';'+$_.extensiondata.controllerkey }
вывод:
Hard disk 1;40;1000 Hard disk 2;10;1001 Hard disk 3;11;1001 Hard disk 4;20;1002 Hard disk 5;21;1002 Hard disk 6;30;1003 Hard disk 7;31;1003
! Размеры дисков 10,11,20,21,30,31 ГБ для контроля сделаны по SCSI bus:target, то есть 10 ГБ - SCSI 1:0, 11 ГБ - SCSI 1:1 и т.д.
Со стороны VMWare получается следующая картина (склеено вручную, чтобы не портить наглядность сложным скриптом):
SCSI controller 0;VirtualLsiLogicSAS;160;1000
Hard disk 1;40;1000
SCSI controller 1;ParaVirtual;224;1001
Hard disk 2;10;1001
Hard disk 3;11;1001
SCSI controller 2;ParaVirtual;256;1002
Hard disk 4;20;1002
Hard disk 5;21;1002
SCSI controller 3;ParaVirtual;1184;1003
Hard disk 6;30;1003
Hard disk 7;31;1003
Посмотрим как это выглядит в Windows, единственный удобный способ через Disk Management (можно конечно данные вытянуть с реестра, но опять таки наглядность сильно пострадает)
в поле Location указаны как раз те самые PCI slot number полученные в VMWare, пройдемся вручную по всем дискам:
Disk 0 Location 160 TargetID 0 - 40GB - C:
Disk 1 Location 161 TargetID 0 - 30GB - E:
Disk 2 Location 161 TargetID 1 - 31GB - F:
Disk 3 Location 224 TargetID 0 - 10GB - G:
Disk 4 Location 224 TargetID 1 - 11GB - H:
Disk 5 Location 256 TargetID 0 - 20GB - I:
Disk 6 Location 256 TargetID 1 - 21GB - J:
Все красиво кроме Location 161 которое в VMWare выглядит как PCI slot number 1184 (1184-161=1023) - похоже VMWare и MS не договорились как интерпретировать DWORD данные, запомним этот ньюанс, идентифицировать диски он не помешает. Внутри Location мы можем полагаться на Target ID - в конфигурации ВМ и гостевой ОС они совпадают.
Сведем все воедино:
SCSI controller 0;VirtualLsiLogicSAS;160;1000
Hard disk 1;40;1000 - Disk 0 Location 160 TargetID 0 - 40GB - C:
SCSI controller 1;ParaVirtual;224;1001
Hard disk 2;10;1001 - Disk 3 Location 224 TargetID 0 - 10GB - G:
Hard disk 3;11;1001 - Disk 4 Location 224 TargetID 1 - 11GB - H:
SCSI controller 2;ParaVirtual;256;1002
Hard disk 4;20;1002 - Disk 5 Location 256 TargetID 0 - 20GB - I:
Hard disk 5;21;1002 - Disk 6 Location 256 TargetID 1 - 21GB - J:
SCSI controller 3;ParaVirtual;1184;1003
Hard disk 6;30;1003 - Disk 1 Location 161 TargetID 0 - 30GB - E:
Hard disk 7;31;1003 - Disk 2 Location 161 TargetID 1 - 31GB - F:
Как видим по размерам дисков - все совпало.
Имея такую картинку перед глазами нет сложности понять какой физический диск ВМ соответствует букве диска в гостевой ОС.
Вот тут наиболее удачная, на мой взгляд, попытка написать скрипт автоматизирующий вышеприведенные операции, как написал автор "I searched long time to solve this problem, but I couldn’t find an easy solution for this."
Комментарии
Можно пойти путем сравнения
Опубликовано пользователем manager
Можно пойти путем сравнения UUID дисков виртуальной машины и SerialNumber диска Windows.
Получаем в Windows диск на котором расположен раздел, например С:
6000c29fdb14310447910d4ff8a2bb1c
Делаем листинг дисков через Powercli:
Hard disk 1 6000C29f-db14-3104-4791-0d4ff8a2bb1c
Hard disk 2 6000C299-f0ee-e9f8-6376-8297cb6cc617
Hard disk 3 6000C29d-ce1b-2f69-1086-458a6d08e852
Hard disk 4 6000C290-163f-e1ce-3dd2-50d1ca38c905
Думаю дополнительных пояснений не требуется.
Для Physical RDM получаем в
Опубликовано пользователем manager
Для Physical RDM получаем в Windows диск на котором расположен раздел, например W:
6B46E08100526EF5E2FDF5710000029A
Делаем листинг RDM дисков через Powercli:
Hard disk 2 02001b00006b46e08100526ef5e2fdf5710000029a585347312020
Hard disk 3 020019000060050764008102b938000000000003ea323134352020
Hard disk 4 020004000060002ac00000000000001449000254f1565620202020
Добавить комментарий.