VMware ESXi 호스트에 로컬로 연결된 USB 장치(USB 메모리, 외장 디스크 등)를 가상 머신(VM) 내부에서 직접 사용할 수 있도록 연결하는 기술을 USB 패스스루(USB Passthrough)라고 하며, ESXi 4.1부터 지원됩니다.
예를 들어 ESXi 6.7 호스트에 연결된 외장 USB 3.0 드라이브를 가상 머신으로 리디렉션해야 하는 상황을 가정해 보겠습니다. VM에서 작업 중인 데이터를 별도의 USB 드라이브로 빠르게 복사하기 위해 드라이브에 직접 접근해야 하는 경우입니다.
VMware USB 패스스루 개요
패스스루(Passthrough) 모드를 사용하면 ESXi 호스트에 물리적으로 연결된 장치를 가상 머신의 게스트 OS로 직접 전달할 수 있습니다. 이 모드에서는 USB 드라이브, 모뎀 또는 PCI/USB 컨트롤러에 대한 직접 접근 권한을 가상 머신에 부여할 수 있습니다.
ESXi에서 USB 장치를 리디렉션하려면 다음과 같은 주요 구성 요소가 필요합니다.
- USB 중재자(Arbitrator): ESXi 호스트에서 실행되는 별도의 서비스로, 연결된 물리적 USB 장치를 검색하고 호스트와 VM 간의 USB 트래픽을 라우팅하며 장치 접근을 제어합니다. 연결된 USB 장치는 동시에 하나의 VM만 사용할 수 있으며, USB 중재자는 최대 15개의 USB 컨트롤러를 추적할 수 있습니다.
- USB 컨트롤러: 물리적 호스트와 가상 머신 양쪽에 USB 컨트롤러가 설치되어 있어야 합니다.
VM용 USB 컨트롤러를 설치하려면 VM 설정을 열고 새 장치로 USB 컨트롤러를 추가합니다. 추가 시 컨트롤러 유형을 선택할 수 있습니다.
- USB 2.0(EHCI+UHCI) – USB 2.0 및 USB 1.1 장치를 지원하는 컨트롤러
- USB 3.0(xHCI) – 고속 USB 3.0 장치를 지원하며, 가상 하드웨어 버전 8 이상이 필요합니다.
USB 3.0 모드는 vSphere 5.5 패치 3부터 사용할 수 있으며, 게스트 OS에서 xHCI 컨트롤러를 지원해야 합니다. 지원되는 게스트 OS는 Windows 8.1/Windows Server 2012 R2, 그리고 커널 버전 2.6.35 이상의 Linux입니다.

ESXi VM으로 USB 장치 패스스루 구성
기본 USB 패스스루 모드에서는 호스트에 연결된 물리적 USB 장치를 VMware 가상 머신에 직접 연결할 수 있습니다.
이 리디렉션 방식의 주요 요구 사항과 제한 사항은 다음과 같습니다.
- 가상 하드웨어 버전 7.0 이상
- 하나의 USB 장치에는 하나의 VM만 직접 접근 가능
- VM당 리디렉션 가능한 최대 USB 장치 수는 20개
- 연결된 USB 장치로부터의 VM 부팅은 지원되지 않음
VM에 가상 USB 컨트롤러를 추가했다면, 호스트에 연결된 USB 드라이브를 다음 순서로 리디렉션할 수 있습니다.
- VM 설정에서 새 호스트 USB 장치(Host USB device)를 추가하고 추가(Add)를 클릭합니다.
- 드롭다운 목록에서 연결된 USB 장치를 선택하여 추가합니다.
- USB 드라이브가 연결된 상태에서 vMotion을 지원하려면 Support vMotion while device is connected 옵션을 체크합니다.

- 설정을 완료하면 USB 드라이브가 가상 머신의 게스트 OS에 나타납니다.
USB 드라이브가 리디렉션된 VM에는 몇 가지 vMotion 제약이 있습니다.
- VM을 중지하거나 일시 중단(suspend)할 수 없습니다. VM이 켜져 있는 상태라면 USB 장치가 연결된 호스트로 수동 마이그레이션해야 합니다.
- DPM(Distributed Power Management) 모드는 지원되지 않습니다. vCenter가 전력 절감을 위해 USB 장치가 연결된 호스트를 종료할 수 있기 때문입니다.
- VM이 실행 중인 ESXi 호스트와 물리적 USB 장치가 연결된 호스트는 vmk0 인터페이스를 통해 TCP 포트 902로 서로 접근 가능해야 합니다.
새 USB 장치를 추가할 때 vSphere 클라이언트에 No available USB devices(사용 가능한 USB 장치 없음)라는 메시지가 표시된다면, 해당 USB 드라이브가 VMware가 패스스루 모드에서 공식 지원하지 않는 장치라는 의미입니다. 호환 USB 장치 목록은 VMware 공식 KB 문서(https://kb.vmware.com/s/article/1021345)의 “ESXi 6.7에서 호스트에서 가상 머신으로 패스스루가 테스트된 USB 장치” 섹션에서 확인할 수 있습니다(목록이 길지는 않습니다).

이 경우에는 USB 장치를 개별적으로 전달하는 대신, ESXi 호스트의 USB 컨트롤러 전체를 VM으로 리디렉션하는 방법을 사용할 수 있습니다.
VMware PCI 패스스루(VMDirectPath): USB 컨트롤러를 VM으로 리디렉션
VM에서 물리적 USB 장치에 접근하는 또 다른 방법은 다소 번거롭지만 ESXi 호스트의 USB 컨트롤러 전체를 VM으로 넘겨주는 것입니다. 이 모드를 VMDirectPath라고 합니다. 이 기능을 사용하려면 서버 칩셋이 Intel Directed I/O(VT-d) 또는 AMD I/O Virtualization Technology(AMD IOMMU)를 지원하고, BIOS/UEFI 설정에서 해당 기능이 활성화되어 있어야 합니다.
서버에 USB 컨트롤러가 하나뿐인 상태에서 이를 VM으로 리디렉션하면, 호스트에 로컬로 연결된 USB 장치(키보드, 마우스 등)를 더 이상 사용할 수 없습니다. 따라서 이런 환경에서는 별도의 PCI USB 컨트롤러를 서버에 추가하는 것이 좋습니다.
호스트에 여러 개의 USB 컨트롤러가 있는 경우, ESXi 셸에서 연결된 USB 장치와 컨트롤러 번호를 확인할 수 있습니다. USB 장치 목록을 출력하려면 다음 명령을 실행합니다.
# lsusb -v | grep -e Bus -e iSerial
출력 결과에서 USB 드라이브와 관련된 줄을 찾습니다. 예를 들면 다음과 같습니다.
Bus 002 Device 003: ID 0280:a00c Toshiba America Info. Systems, Inc.
그다음 컨트롤러 번호(이 예에서는 Bus02)를 기준으로 루트 허브와 해당 iSerial 값을 확인합니다.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 3.0 root hub iSerial 1 0000:00:1D.0
USB 드라이브가 목록에 보이지 않으면 장치를 물리적으로 분리했다가 다시 연결해 보세요. USB 중재자(Arbitrator)가 드라이브를 감지했는지는 vmkernel.log에서 확인할 수 있습니다.
tail -f /var/log/vmkernel.log | grep -i USB
cpu0:33271)<6>usb 4-2: new SuperSpeed USB device number 5 using xhci_hcd cpu0:33271)<6>usb 4-2: New USB device found, idVendor=0480, idProduct=b207 cpu0:33271)<6>usb 4-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 cpu0:33271)<6>usb 4-2: Product: External USB 3.0 cpu0:33271)<6>usb 4-2: Manufacturer: TOSHIBA cpu0:33271)<6>usb 4-2: SerialNumber: 20180528012427F cpu0:33271)<6>usb 4-2: Vendor: 0x0480, Product: 0xb207, Revision: 0x0315 cpu0:33271)<6>usb 4-2: Interface Subclass: 0x06, Protocol: 0x50 cpu0:33271)WARNING: LinScsiLLD: scsi_add_host:573: vmkAdapter (usb-storage) sgMaxEntries rounded to 255. Reported size was 65535 cpu0:33271)<6>usb-storage 4-2:1.0: interface is claimed by usb-storage cpu0:33271)<6>usb 4-2: device is not available for passthrough cpu0:33271)<6>usb 4-2: usbfs: registered usb0405 cpu0:33207)<6>usb-storage 4-2:1.0: suspended

ESXi 호스트에서 USB 드라이브가 감지되지 않는다면 usbarbitrator 서비스가 실행 중인지 확인합니다.
#chkconfig usbarbitrator --list
참고로 usbarbitrator 서비스를 중지해야 하는 경우는 ESXi 셸에서 직접 USB 스틱에 접근해 파일을 복사하고 싶을 때뿐입니다.
이제 VM으로 리디렉션할 USB 컨트롤러 번호를 파악했습니다. 다음 순서로 진행합니다.
- VM이 실행 중인 ESXi 호스트를 선택하고 관리(Manage) → 설정(Settings) → PCI 장치(PCI Devices) → 편집(Edit)으로 이동합니다.
- PCI 장치 목록에서 ID를 기준으로 필요한 USB 컨트롤러를 선택합니다(예:
00:1D.0, 컨트롤러 이름:C610/X99 series chipset USB Enhanced Host Controller #1 Intel Corporation). - USB 컨트롤러의 상태가 Unavailable(현재 VM에서 사용할 수 없는 장치)에서 Available(VM에서 사용 가능한 장치)으로 변경되었는지 확인하고 OK를 클릭합니다.

- 변경 사항을 저장하려면 ESXi 호스트를 재시작합니다.
- 호스트 부팅 후 VM을 종료하고 새 장치를 추가합니다(New Device → PCI Device → Add). 드롭다운 목록에서 USB 컨트롤러(예:
0000:00:1D| Intel Corporation USB Chipset…)를 선택합니다. PCI 장치 추가 시 “Warning: The VM will not power on until its memory reservation equals its memory size”(메모리 예약이 메모리 크기와 같아질 때까지 VM 전원이 켜지지 않습니다)라는 경고가 표시되면 VM에 RAM 예약(reservation)을 설정해야 합니다. - VM 전원을 켜고 게스트 OS에 USB 드라이브가 나타나는지 확인합니다. 실제 테스트에서는 연결된 USB 드라이브 “Toshiba External USB 3.0 USB Device”가 게스트 Windows Server 2012 R2에 정상적으로 표시되었습니다.

VMDirectPath 모드에서는 하나의 VM에 최대 2개의 물리적 PCI 장치를 리디렉션할 수 있습니다.
PCI 장치가 리디렉션된 VM에는 몇 가지 제한이 있습니다. VM을 일시 중단(Suspend)할 수 없고, 다른 호스트로 vMotion을 수행할 수 없으며(물리적 컨트롤러에 종속되므로 당연한 제약입니다), 스냅샷 생성도 불가능합니다.
참고로 Microsoft Hyper-V에서도 물리적 USB 장치를 VM으로 리디렉션하는 기능을 지원합니다.