오래된 HP MSA 2000 스토리지에서 새로운 Dell EMC Unity 스토리지로 가상 머신 파일을 마이그레이션하는 작업 중(두 스토리지 모두 SAN을 통해 ESXi 호스트에 연결됨), VMware vSphere에서 비어 있는 VMFS 데이터스토어를 제거하려다 문제에 부딪혔습니다. ESXi 호스트에서 VMFS 데이터스토어를 마운트 해제하려고 하면 데이터스토어가 아직 사용 중이라는 오류 메시지가 나타나는 상황입니다.
발생한 오류 메시지
마운트 해제 시도 시 표시되는 오류는 다음과 같습니다.
Unmount VMFS volume vmesxi2.woshub.com. The resource 'Datastore Name: MSA2000_LUN1 VMFS uuid: xxxxx--xxxxx-x-xxxxx-xxxx' is in use. Cannot unmount volume Datastore Name VMFS "file system is busy".
오류 내용을 보면 ESXi 호스트나 vSphere가 여전히 해당 스토리지에 일부 데이터를 기록하고 있기 때문에 VMFS 데이터스토어를 삭제할 수 없다는 것을 알 수 있습니다.
VMware 공식 문서의 점검 사항
VMware 문서에 따르면 vSphere에서 LUN을 제거하기 전에 다음 항목들을 확인해야 합니다.
- VMFS 데이터스토어에 가상 머신, 템플릿, 스냅샷 또는 ISO 이미지 파일이 없어야 합니다(VM을 다른 VMFS 데이터스토어로 마이그레이션하거나, 전원을 끄고 삭제하거나, vSphere에서 등록 해제해야 함).
- 데이터스토어에 대해 Storage I/O Control이 비활성화되어 있어야 합니다.
- 데이터스토어가 Datastore Cluster의 일부가 아니어야 합니다.
- LUN이 RDM 장치로 사용되고 있지 않아야 합니다.
- VMFS 데이터스토어가 vSphere HA 데이터, Storage DRS, 로그, 덤프(/vmkdump/), vSAN 데이터(/vsantraced/), 기술 지원 데이터(scratch 파티션) 또는 가상 머신 스왑 파일 저장 용도로 사용되고 있지 않아야 합니다.
데이터스토어에 남아 있는 파일 확인
가상 머신은 이미 Storage vMotion을 통해 새 데이터스토어로 이전된 상태였습니다. 그렇다면 VMFS 데이터스토어에는 어떤 파일과 폴더가 남아 있는지 살펴보겠습니다.
확인 결과 logdir(로그 디렉터리), sdd.sf(SCSI 장치 설명 정보 디렉터리), dbsData(분산 가상 스위치 데이터 디렉터리), naa…(VMFS 메타데이터) 폴더가 남아 있었습니다.
원인: ESXi 호스트 로그(Scratch Location)
제 경우의 원인은 ESXi 호스트 로그가 여전히 해당 VMFS 데이터스토어(Scratch Location)에 저장되고 있다는 것이었습니다. 데이터스토어가 로그 저장 위치로 지정되어 있는지 확인하려면 ESXi 호스트 설정으로 이동합니다.
Manage → Settings → Advanced System Settings 순서로 이동한 뒤, ScratchConfig.CurrentScratchLocation과 Syslog.global.logDir 설정을 찾습니다. 만약 여기에 해당 VMFS 데이터스토어 경로가 지정되어 있다면, 로그 디렉터리 경로를 다른 위치로 변경합니다.
설정 변경 후에는 ESXi 호스트를 재시작하거나, 호스트에서 Syslog Server 서비스를 재시작합니다.
디바이스 분리(Detach) 재시도와 추가 오류
이제 다시 데이터스토어 마운트 해제를 시도해 보겠습니다. Manage → Storage → Storage Device로 이동하여 목록에서 해당 LUN을 찾아 선택한 후 Detaches the selected device from the host(선택한 디바이스를 호스트에서 분리)를 클릭합니다.
그런데 제 경우에는 다시 오류가 발생했습니다.
Detach SCSI LUN The resource is in use.
상당히 오랜 시간 동안 누가 이 데이터스토어를 사용하는지 추적해 보았지만, 결국 제 환경에서 가장 간단한 방법은 VMFS 데이터스토어의 파티션 테이블을 삭제하는 것이라고 판단했습니다. 물론 이 작업은 매우 신중하게 수행해야 하며, 올바른 데이터스토어를 삭제하고 있는지 반드시 확인해야 합니다.
SSH를 통한 VMFS 파티션 삭제 방법
- VMFS 스토어가 마운트되어 있는 아무 ESXi 호스트에 SSH로 접속합니다.
- vSphere 인터페이스에서 데이터스토어 ID를 복사한 뒤, ESXi 호스트에서 어떤 디바이스와 경로에 해당하는지 확인합니다.
esxcfg-scsidevs -c | grep naa.6001438005df0dee0000700004be0000naa.6001438005df0dee0000700004be0000 Direct-Access /vmfs/devices/disks/naa.6001438005df0dee0000700004be0000 512000MB NMP HP Fibre Channel Disk (naa.6001438005df0dee0000700004be0000)
esxcfg-scsidevs -m | grep naa.6001438005df0dee0000700004be0000naa.6001438005df0dee0000700004be0000:1 /vmfs/devices/disks/naa.6001438005df0dee0000700004be0000:1 570e5298-08f4c74e-ca3a-b4b52f5e2b38 0 MSA2000_LUN1
- VMFS 데이터스토어의 사용량을 확인합니다(거의 비어 있음).
df -h | grep MSA2000_LUN1VMFS-5 499.8G 1.4G 498.3G 0% /vmfs/volumes/MSA2000_LUN1
- 데이터스토어 이름과 스토어 ID가 제거하려는 LUN과 일치하는지 최종 확인합니다.
- 데이터스토어의 파티션 테이블 정보를 조회합니다.
partedUtil getptbl /vmfs/devices/disks/naa.6001438005df0dee0000700004be0000gpt
65270 255 63 1048576000
1 2048 1048575966 AA31E02A400F11DB9590000C2911D1B8 vmfs 0 - 이 경우 LUN에는 VMFS 파일 시스템이 포함된 단일 파티션이 존재합니다.
- 해당 디스크(LUN)에서 ID 1번 VMFS 파티션을 삭제합니다. 반드시 신중하게 작업하세요!
partedUtil delete /vmfs/devices/disks/naa.6001438005df0dee0000700004be0000 1
파티션 삭제 후 마운트 해제 및 삭제
파티션을 삭제한 후에는 vSphere에서 LUN을 정상적으로 마운트 해제할 수 있습니다(Unmount Datastore). 더 이상 'datastore is in use' 오류가 나타나지 않습니다.
데이터스토어를 마운트 해제할 ESXi 호스트들을 선택합니다.
또는 ESXi 호스트의 연결된 스토리지 디바이스 목록에서 Detach를 실행할 수도 있습니다. 그러면 연결 상태가 Detached로 변경됩니다.
이후 VMFS 스토어를 삭제하면(Delete Datastore) 해당 데이터스토어가 vSphere에서 사라집니다.