Proxmox, VM에 USB 포트 정적 할당

Proxmox, VM에 USB 포트 정적 할당

proxmox를 통해 가상화를 하던 중, 특정 USB 포트를 VM에 할당하고 싶었다.

기본적으로 벤더 아이디와 디바이스 아이디를 이용해서 맵핑해서 이용을 많이 하지만 여러 장비, 예를 들어 외장하드를 계속 바꿔줘야 한단던가 하는 경우에는 특정 포트를 할당해서 사용하는 것이 좋을 것 같아 방법을 찾아보았다.

일단, host 그러니까 proxmox에서 USB를 삽입해서 해당 포트를 확인해야 한다. 단, 이 때 해당 포트를 정확하게 잡기 위해서 USB 2.0, USB 3.0 장비를 모두 포함해야 한다.

먼저 USB 2.0 장비를 연결해서 해당 포트가 어디인지 확인한다.

root@prx:~# lsusb -t
/:  Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/16p, 480M
    |__ Port 002: Dev 002, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 003: Dev 003, If 0, Class=Hub, Driver=hub/4p, 480M
    |__ Port 009: Dev 020, If 0, Class=Mass Storage, Driver=usbfs, 480M
    |__ Port 011: Dev 004, If 0, Class=Hub, Driver=hub/4p, 480M
    |__ Port 014: Dev 005, If 0, Class=Wireless, Driver=btusb, 12M
    |__ Port 014: Dev 005, If 1, Class=Wireless, Driver=btusb, 12M
/:  Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/9p, 20000M/x2
    |__ Port 002: Dev 002, If 0, Class=Hub, Driver=hub/4p, 10000M

해당 포트에 USB 2.0 드라이버를 연결해서 살펴보면 Bus 001, Port 009에 "Mass Storage"가 잡힌 것을 볼 수 있다.

즉, USB 1-9가 USB 2.0의 포트 번호이다. 일단 메모를 슥삭 해두고, USB 3.0 드라이버를 연결해서 다시 살펴보자.

root@prx:~# lsusb -t
/:  Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/16p, 480M
    |__ Port 002: Dev 002, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 003: Dev 003, If 0, Class=Hub, Driver=hub/4p, 480M
    |__ Port 011: Dev 004, If 0, Class=Hub, Driver=hub/4p, 480M
    |__ Port 014: Dev 005, If 0, Class=Wireless, Driver=btusb, 12M
    |__ Port 014: Dev 005, If 1, Class=Wireless, Driver=btusb, 12M
/:  Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/9p, 20000M/x2
    |__ Port 002: Dev 002, If 0, Class=Hub, Driver=hub/4p, 10000M
    |__ Port 008: Dev 018, If 0, Class=Mass Storage, Driver=usbfs, 5000M

자 다시 한번 Mass Storage를 찾아보자, BUS 002, Port 008에 잡힌 것을 확인할 수 있다. 즉, 해당 포트는 1-9와 2-8로 맵핑된 것이라는 것을 확인할 수 있다. 해당 포트를 VM에 추가하자.

root@prx:~# vim /etc/pve/qemu-server/[vm id].conf
##############################################################
.
.
.
usb0: host=1-9
usb1: host=2-8

VM 설정 파일을 열어 가장 아래쪽에 usb0와 usb1을 연결해준다. 그 뒤로 재부팅. 짜잔. 해당 포트는 해당 VM에 연결된다.

처음 시도 시, 2.0과 3.0이 다르게 맵핑된다는 걸 몰라 조금 해맸지만 BUS의 내용과 시스템 로그를 보다보니 이해할 수 있었다.