ESXi 하드웨어 패스스루 설정

안녕하세요!

이번 포스팅에서는 ESXi에서 하드웨어 패스스루를 설정하는 방법에 대해 다뤄보겠습니다.
패스스루(Passthrough)란, 물리적 하드웨어 장치를 가상 머신에서 직접 활용할 수 있는 기능입니다.

이 기능을 통해 GPUUSB 컨트롤러와 같은 장비를 가상 머신에 연결하여, 마치 실제 물리 서버에서 사용하는 것처럼 성능을 발휘할 수 있습니다.
특히, 그래픽 작업이나 특정 하드웨어 장치가 필요한 응용 프로그램을 구동할 때 필수적인 기능입니다.

GPU 패스스루

먼저 ESXi 호스트 클라이언트의 관리 > 하드웨어 > PCI 디바이스에서
GPU의 패스스루 항목을 활성으로 변경합니다.

이후 GPU를 사용할 가상 시스템을 편집하여
기타 디바이스 추가 > PCI 디바이스를 추가합니다.

PCI 디바이스 1에 패스스루한 GPU를 선택합니다.

이후 메모리의 왼쪽에 있는 화살표 버튼을 클릭하여 메뉴를 확장하고,
예약 부분을 RAM과 동일한 용량으로 설정합니다.

상단의 VM 옵션에서 고급을 클릭합니다.

구성 편집을 클릭합니다.

이후 검색창에 svga.present를 입력하고, 값을 FALSE로 변경합니다.

패스스루 설정이 완료되면, 가상 시스템의 설정을 저장합니다.

그러나 한 가지 중요한 점을 유의해야 합니다.
GPU가 패스스루된 상태에서는 ESXi의 기본 모니터링 기능을 사용할 수 없게 됩니다.
따라서 GPU 패스스루를 적용한 가상 머신에 접근하려면 원격 접속(예: 윈도우의 경우 RDP)을 통해 연결해야 합니다.

이러한 제한 사항을 염두에 두고, 패스스루 설정을 마친 후에는 원격 접속 방법을 준비해 두는 것이 중요합니다.

또한 가상 시스템에서는 그래픽 드라이버가 없는 상태이므로, 필요하다면 설치해주어야 합니다.

USB 컨트롤러 패스스루

SSH

GPU와 마찬가지로, ESXi > 관리 > 하드웨어 > PCI 디바이스에 진입합니다.

우측 상단의 검색창에 USB를 입력하여, USB 컨트롤러의 이름을 알아냅니다.
필자의 경우 SuperMicro의 마더보드를 사용하고 있으므로,
100 Series/C230 Series Chipset Family USB 3.0 xHCI Controller 입니다.

만약 필자와 모델명이 다를 경우에도, 아래의 방법을 통해 패스스루시킬 수 있습니다.

이제 ESXi의 SSH에서 PCI ID를 알아내야 하기에
ESXi > 관리 > 서비스에서 SSH를 실행합니다.
PuTTY와 같은 프로그램을 이용하여 SSH에 접속해 root로 로그인합니다.

lspci -v | grep -i usb

위 명령어를 입력하면, 다음과 비슷한 결과가 나타날 것입니다.

여기서 패스스루하고자 하는 USB 컨트롤러가 나타나는지 확인해야 합니다.

우리가 확인해야 하는 부분은 0000:00:14.0라고 적힌 부분입니다.
이 부분은 PCI 장치의 버스, 장치, 기능 번호를 나타냅니다.
즉, 이 컨트롤러가 ESXi 시스템의 버스 0에 연결되어 있으며, 장치 번호 14로 식별된다는 의미입니다.

00:14.0 부분은 환경에 따라 숫자가 다를 수도 있으므로, 따로 메모해 두세요.

이제 ESXi의 /etc/vmware/passthru.map 파일에 해당 컨트롤러의 PCI ID를 추가해야 합니다. 이 파일은 특정 장치의 패스스루를 강제하도록 설정하는 파일입니다.

해당 컨트롤러의 Vendor IDDevice ID는 lspci 명령을 통해 확인할 수 있습니다.

lspci -n | grep 00:14.0

위 명령어에서 00:14.0 부분은, 메모해 둔 숫자로 교체하여 사용하세요.

위 명령어를 입력하면 Vendor ID (8086)와 Device ID (a12f)를 얻을 수 있습니다.
환경에 따라 문자는 다를 수 있으므로, 따로 메모해 두세요.

이제 /etc/vmware/passthru.map 파일을 수정해야 합니다.

vi /etc/vmware/passthru.map

위 명령어를 통해 vi 편집기를 실행합니다.

키보드 방향키를 사용하여 화면 최하단으로 이동한 다음,
A 키를 눌러 편집 모드를 활성화합니다.
그 후, 다음 스크립트를 각자의 환경에 맞게 수정하여 입력합니다:

# usb internal
[Vendor ID] [Device ID] d3d0 default

여기서 [Vendor ID]와 [Devide ID]는 lspci 명령어를 통해 확인한 값으로 교체합니다.
위 이미지는 필자의 환경을 기준으로 한 것입니다.

편집이 완료되면 ESC 키를 눌러 편집 모드를 종료한 뒤
:wq! + Enter를 입력하여 파일을 저장하고 vi 편집기에서 빠져나옵니다.

이제 ESXi를 재부팅하고 패스스루 설정이 제대로 적용되었는지 확인합니다.

ESXi 가상 시스템 설정

이후 USB 컨트롤러를 사용할 가상 시스템을 편집하여
기타 디바이스 추가 > PCI 디바이스를 추가합니다.

PCI 디바이스 1에 패스스루한 USB 컨트롤러를 선택합니다.

이후 메모리의 왼쪽에 있는 화살표 버튼을 클릭하여 메뉴를 확장하고,
예약 부분을 RAM과 동일한 용량으로 설정합니다.

상단의 VM 옵션에서 고급을 클릭합니다.

구성 편집을 클릭합니다.

매개 변수 추가를 두 번 클릭하고, 다음 내용을 추가합니다.

usb.generic.allowHID = TRUE
usb.generic.allowLastHID = TRUE

위와 같이 추가하였다면, 정상적으로 USB 컨트롤러를 인식하는지 테스트 합니다.

이로써 ESXi에서 하드웨어 패스스루 설정에 관한 모든 과정을 완료하였습니다!
GPU와 USB 컨트롤러를 패스스루하여 가상 머신에서 직접 하드웨어를 제어할 수 있는 환경을 구축하는 방법을 살펴보았습니다.

이 과정이 복잡하게 느껴질 수 있지만, 각 단계를 신중하게 따라가면 원하시는 하드웨어를 성공적으로 패스스루할 수 있을 것입니다.
만약 설정 도중 문제가 발생하거나 예상치 못한 상황이 발생한다면,
다시 한번 설정 단계를 검토하고 관련 문서를 참조하여 문제를 해결해 보세요.

여러분의 ESXi 환경에서 하드웨어 패스스루가 잘 작동하기를 바랍니다.

이 포스팅이 도움이 되었기를 바라며, 앞으로도 ESXi 및 가상화 기술에 관한 다양한 포스팅을 계속할 예정이니 많은 관심과 방문 부탁드립니다.

감사합니다!

Leave a Comment