vSphere Troubleshooting - esxcli/localcli Internal

Juhwan Song·2025년 5월 16일
0

vSphere Troubleshooting

목록 보기
7/7

들어가며

VMware 엔지니어들에게 매우 친숙한 명령어일 esxcli, 그리고 아마 거의 들어보지 못했을 localcli를 통해 ESXi 호스트의 구성 정보를 관리할 수 있습니다.

VMware 엔지니어에게 이 두 도구의 차이점을 간략하게 말해보라고 한다면, 대부분은 esxcli는 vAPI를 호출하고, localcli는 시스템 API를 직접 호출한다고 말할 것입니다. 따라서 localclihostd를 사용할 수 없는 심각한 장애 상황에서만 사용해야 한다는 VMware의 지침이 있습니다.

그런데 그게 전부일까요? 이번 포스팅에서는 esxcli와 localcli를 좀 더 깊이 들여다 볼 것입니다.

[면책 조항: 이 포스팅에서 다루는 내용은 VMware by Broadcom의 공식 지원 범위를 벗어난 것입니다. 프로덕션 환경에서 이 명령어들을 실행하지 마십시오]

ESXCLI의 라이브러리 디렉토리와 LOCALCLI

esxcli의 라이브러리들이 위치한 /usr/lib/vmware/esxcli/ 를 살펴보면, 여러 흥미로운 파일들을 찾을 수 있습니다.
먼저, /usr/lib/vmware/esxcli/ext 폴더에서는 esxcli sub-command 들의 정의와, 실제로 그 명령어를 실행하였을 경우 실행되는 바이너리 및 파라미터 정보를 담고 있는 xml 파일을 볼 수 있습니다.

[그림 1. esxcli 명령어 명세 파일]

이 중 Mellanox MFT 명령어를 예시로 실제 명령어를 찾고, 직접 실행해 본 결과를 아래 스크린샷에서 볼 수 있습니다.

이를 통해, esxcli는 이 명세에 지정된 명령어를 실행한 뒤, xml 데이터를 파싱하여 결과를 되돌려준다는 사실을 알 수 있습니다.

[그림 2. esxcli mellanox mft 실행 결과와 바이너리 실행 결과의 비교]

이 xml 파일들에 기록된 정보를 활용하면, 문서화되지 않은 ESXi 내부 명령의 동작 방식을 보다 잘 이해할 수 있습니다.

그리고 localcli를 이용하면 이 xml 파일들을 올바르게 파싱하고, 명령을 내릴 수도 있습니다.

[그림 3. localcli를 이용한 xml 파싱 및 명령 실행]

방법은 간단합니다. 위 예시 스크린샷과 같이, localcli--plugin-dir 옵션을 지정해 주는 것으로 충분합니다.

[그림 4. localcli를 이용한 라이브러리 참조 명령 실행]

올바른 네임스페이스 이름만 알고 있으면, 내부 라이브러리를 참조하여 명령을 실행할 수도 있습니다. CXL 관련 명령이 있는 것이 인상적이네요.

마지막으로, Optane DCPMM이 장착된 장비에서 PMEM 정보를 가져오는 예시 스크린샷을 첨부합니다.

[그림 5. localcli를 이용해 PMEM 정보 가져오기]

마치며

거의 10여년간 ESXi를 다뤄왔지만, 아직도 제가 모르는 기능이 있다는 것이 놀랍습니다. 긴 역사와 VMware의 뛰어난 엔지니어링 역량이 결합된 결과물인 만큼, 사용자가 원하는 기능은 이미 거의 모두 갖춰져 있는 상태가 아닌가 생각해 봅니다. 어떤 기능들은 사용자에게 숨겨져 있긴 하지만 말이죠.

이 포스팅이 ESXi의 내부 동작을 보다 깊이 이해하고자 하는 엔지니어들에게 새로운 힌트가 되었으면 좋겠습니다.

profile
Virtualization / Network / Storage / Server Hardware and.. Linux

0개의 댓글