본문 바로가기

Compute

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

 

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가 있는 경우 본 케이스와 같은 현상이 발생할 수 있음