Compute

RDM disks are seen as "File" type in vCenter UI.

haewon83 2025. 1. 2. 12:42

 

VM이 RDM Disk를 사용하는 경우, RDM Disk에 대한 Mapping 정보를 담은 파일이 VM의 vmdk가 위치한 Datastore에 같이 생성됩니다.

만약, 이 Datastore를 같이 공유해서 사용하는 ESXi Host 중 RDM Disk가 Assign 되어 있지 않은 ESXi Host가 있다면, vCenter에서 Datastore를 Browse하여 폴더 및 파일 목록을 불러올 때, RDM Disk의 Type이 Virtual Disk가 아닌 File로 보이는 경우가 발생할 수 있습니다.

이는 Design 적인 요소로, 이와 관련하여 내부에서 Repro 테스트를 하면서 확인한 내용을 공유 합니다.

 

[문제 증상]

VM별로 RDM Disk의 File Type이 상이한 현상

※ 내부에서 테스트 했을 때, 정상인 경우는 "Virtual Disk"로 보임

1. RDM Disk가 Virtual Disk로 보이는 상황

 

2. RDM Disk가 File로 보이는 상황

 

[Troubleshooting Notes]

※ 고객사 로그는 제외하고, 문제 재현이 가능하여 내부 테스트 환경에서 수집한 로그 기술

1. 다음 환경에서 Repro 테스트

 

2. esxi-comp-01과 esxi-comp-02에서 아래 명령어 수행 시, RDM Disk가 연결되지 않은 esxi-comp-02에서는 RDM Disk Mapping 파일이 보이지 않음

[root@esxi-comp-01:/vmfs/volumes/66390b36-7c452df5-f535-005056af8ac8/log] vim-cmd hostsvc/datastorebrowser/searchsubfolders "hostsystem" "[shareddisk]"
(vim.host.DatastoreBrowser.SearchResults) [
   (vim.host.DatastoreBrowser.SearchResults) {
      datastore = 'vim.Datastore:67754e3e-f1dc68f7-f646-0050563f1f69',
      folderPath = "[shareddisk] shared_vm",
      file = (vim.host.DatastoreBrowser.FileInfo) [
         (vim.host.DatastoreBrowser.VmDiskInfo) {
            path = "shared_vm_1.vmdk", >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
            friendlyName = <unset>,
            fileSize = 2147483648,
            modification = "2025-01-01T14:18:31Z",
            owner = <unset>,
            diskType = "vihttp://m.vm.device.VirtualDisk.RawDiskMappingVer1BackingInfo",
            capacityKb = 2097152,
            hardwareVersion = 14,
            controllerType = "vihttp://m.vm.device.VirtualLsiLogicController",
            diskExtents = (string) [
               "[shareddisk] shared_vm/shared_vm_1-rdmp.vmdk"
            ],
            thin = false,
            encryption = (vim.host.DatastoreBrowser.VmDiskInfo.VmDiskEncryptionInfo) {
               keyId = (vim.encryption.CryptoKeyId) null
            }
         },
         (vim.host.DatastoreBrowser.VmDiskInfo) {
            path = "shared_vm.vmdk", >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
            friendlyName = <unset>,
            fileSize = 0,
            modification = "2025-01-01T14:17:47Z",
            owner = <unset>,
            diskType = "vihttp://m.vm.device.VirtualDisk.FlatVer2BackingInfo",
            capacityKb = 16777216,
            hardwareVersion = 14,
            controllerType = "vihttp://m.vm.device.VirtualLsiLogicController",
            diskExtents = (string) [
               "[shareddisk] shared_vm/shared_vm-flat.vmdk"
            ],
            thin = true,
            encryption = (vim.host.DatastoreBrowser.VmDiskInfo.VmDiskEncryptionInfo) {
               keyId = (vim.encryption.CryptoKeyId) null
            }
         }
      ]
   },
   (vim.host.DatastoreBrowser.SearchResults) {
      datastore = 'vim.Datastore:67754e3e-f1dc68f7-f646-0050563f1f69',
      folderPath = "[shareddisk]",
      file = (vim.host.DatastoreBrowser.FileInfo) [
         (vim.host.DatastoreBrowser.FolderInfo) {
            path = ".sdd.sf",
            friendlyName = <unset>,
            fileSize = 69632,
            modification = "2025-01-01T14:16:30Z",
            owner = <unset>
         },
         (vim.host.DatastoreBrowser.FolderInfo) {
            path = "shared_vm",
            friendlyName = <unset>,
            fileSize = 73728,
            modification = "2025-01-01T14:18:31Z",
            owner = <unset>
         }
      ]
   }
]
 
[root@esxi-comp-02:/vmfs/volumes/65d1aaba-a11446f5-088c-005056aff437/log] vim-cmd hostsvc/datastorebrowser/searchsubfolders "hostsystem" "[shareddisk]"
(vim.host.DatastoreBrowser.SearchResults) [
   (vim.host.DatastoreBrowser.SearchResults) {
      datastore = 'vim.Datastore:67754e3e-f1dc68f7-f646-0050563f1f69',
      folderPath = "[shareddisk] shared_vm",
      file = (vim.host.DatastoreBrowser.FileInfo) [
         (vim.host.DatastoreBrowser.VmDiskInfo) {
            path = "shared_vm.vmdk", >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
            friendlyName = <unset>,
            fileSize = 0,
            modification = "2025-01-01T14:17:47Z",
            owner = <unset>,
            diskType = "vihttp://m.vm.device.VirtualDisk.FlatVer2BackingInfo",
            capacityKb = 16777216,
            hardwareVersion = 14,
            controllerType = "vihttp://m.vm.device.VirtualLsiLogicController",
            diskExtents = (string) [
               "[shareddisk] shared_vm/shared_vm-flat.vmdk"
            ],
            thin = true,
            encryption = (vim.host.DatastoreBrowser.VmDiskInfo.VmDiskEncryptionInfo) {
               keyId = (vim.encryption.CryptoKeyId) null
            }
         }
      ]
   },
   (vim.host.DatastoreBrowser.SearchResults) {
      datastore = 'vim.Datastore:67754e3e-f1dc68f7-f646-0050563f1f69',
      folderPath = "[shareddisk]",
      file = (vim.host.DatastoreBrowser.FileInfo) [
         (vim.host.DatastoreBrowser.FolderInfo) {
            path = ".sdd.sf",
            friendlyName = <unset>,
            fileSize = 69632,
            modification = "2025-01-01T14:16:30Z",
            owner = <unset>
         },
         (vim.host.DatastoreBrowser.FolderInfo) {
            path = "shared_vm",
            friendlyName = <unset>,
            fileSize = 73728,
            modification = "2025-01-01T14:18:31Z",
            owner = <unset>
         }
      ]
   }
]

 

3. vCenter UI에서 Datastore Browser로 확인했을 때, "Virtual Disk"로 보이는 경우와 "File"로 보이는 경우가 번갈아가면서 발생

 

4.로그 확인 시, "Virtual Disk"로 보이는 경우는 vCenter가 RDM Disk가 연결되어 있는 esxi-comp-01로 Datastore Search Query를 요청했을 경우이고,

"File"로 보이는 경우는 vCenter가 RDM Disk가 연결되지 않은 esxi-comp-02로 Datastore Search Query를 요청한 경우인 것으로 확인

root@vcsa01 [ /var/log/vmware/vpxd ]# tail -f vpxd.log | grep "vpxapi.VpxaService.searchDatastore"
2025-01-01T14:37:58.267Z verbose vpxd[06800] [Originator@6876 sub=Vmomi opID=m5dzxg5n-672-auto-is-h5:70000248-ab] [ClientAdapterBase::InvokeOnSoap] Invoke done (esxi-comp-01.contoso.com, vpxapi.VpxaService.searchDatastore)
2025-01-01T14:37:58.898Z verbose vpxd[06835] [Originator@6876 sub=Vmomi opID=m5dzxg5n-674-auto-it-h5:70000249-c8] [ClientAdapterBase::InvokeOnSoap] Invoke done (esxi-comp-01.contoso.com, vpxapi.VpxaService.searchDatastore)
2025-01-01T14:38:18.410Z verbose vpxd[07298] [Originator@6876 sub=Vmomi opID=m5dzxg5n-687-auto-j5-h5:70000254-77] [ClientAdapterBase::InvokeOnSoap] Invoke done (esxi-comp-01.contoso.com, vpxapi.VpxaService.searchDatastore)
 
2025-01-01T14:38:49.297Z verbose vpxd[07294] [Originator@6876 sub=Vmomi opID=m5dzxg5n-727-auto-k9-h5:70000282-80] [ClientAdapterBase::InvokeOnSoap] Invoke done (esxi-comp-02.contoso.com, vpxapi.VpxaService.searchDatastore)
2025-01-01T14:38:49.298Z verbose vpxd[06851] [Originator@6876 sub=Vmomi opID=m5dzxg5n-726-auto-kb-h5:70000281-63] [ClientAdapterBase::InvokeOnSoap] Invoke done (esxi-comp-02.contoso.com, vpxapi.VpxaService.searchDatastore)
2025-01-01T14:38:52.018Z verbose vpxd[06789] [Originator@6876 sub=Vmomi opID=m5dzxg5n-736-auto-ki-h5:70000286-6f] [ClientAdapterBase::InvokeOnSoap] Invoke done (esxi-comp-02.contoso.com, vpxapi.VpxaService.searchDatastore)
^C

 

5. 내부 Research 결과, vCenter는 Datastore Browse 실행 시, Datastore에 연결 가능한 ESXi Host 중 한 대에게 요청하는 것으로 확인

 

6. 즉, 위 구성 환경과 같이 Datastore는 공유되어 있으나 RDM Disk는 연결된 Host가 있고, RDM Disk가 연결되지 않은 Host가 있는 경우 본 케이스와 같은 현상이 발생할 수 있음