OS/Proxmox

[Proxmox] Disk VM passthrough (파일시스템 변경 없이 직접 연결)

Lawmin 2025. 1. 20. 09:56

성능이나 관리 면에서 기존 디스크 파일 시스템 그대로 직접 연결이 필요한 경우가 있습니다.

 

※ 아래 환경은 윈도우즈 VM에서 NTFS 디스크를 그대로 mount 하는 예이며, virtio가 설치된 상태입니다.

Windows VirtIO Drivers - Proxmox VE

 

1. 연결할 VM의 ID 를 확인합니다. (PVE 웹 화면에서도 확인 가능)

# ls -al /etc/pve/qemu-server/*
-rw-r----- 1 root www-data  676 Jan 20 00:18 /etc/pve/qemu-server/100.conf
-rw-r----- 1 root www-data 1271 Jan 20 06:46 /etc/pve/qemu-server/101.conf

 

2. 연결할 VM의 번호가 100이라고 하면, 해당 conf 파일에서 설치된 디스크의 ide, scsi 번호를 확인합니다.

scsi 방식으로 연결한다면, 아래에서는 scsi0 까지 사용했으므로 scsi1 부터 추가가 가능합니다.

# egrep '^ide|^scsi' /etc/pve/qemu-server/100.conf
ide2: none,media=cdrom
scsi0: local-lvm:vm-100-disk-1,iothread=1,size=150G,ssd=1
scsihw: virtio-scsi-single

 

3. 설치된 Disk 의 ID 정보를 확인합니다.

 

만약 FireCuda_520 을 연결한다면, *_1, *_1-part1, *-part1 등을 참조하는 것이 아닌,

최상위 nvme-Seagate_FireCuda_520_SSD_ZP2000GM30002_ABCDEFGH를 참조하도록 하면 됩니다.

아래 파티션 레벨을 참조하게 하면 VM OS에서 오동작할 수 있습니다. (파티션 정보 참조 불가 등)

# ls -l /dev/disk/by-id/
...
lrwxrwxrwx 1 root root 13 Jan 20 00:18 nvme-Seagate_FireCuda_520_SSD_ZP2000GM30002_ABCDEFGH -> ../../nvme1n1
lrwxrwxrwx 1 root root 13 Jan 20 00:18 nvme-Seagate_FireCuda_520_SSD_ZP2000GM30002_ABCDEFGH_1 -> ../../nvme1n1
lrwxrwxrwx 1 root root 15 Jan 20 00:18 nvme-Seagate_FireCuda_520_SSD_ZP2000GM30002_ABCDEFGH_1-part1 -> ../../nvme1n1p1
lrwxrwxrwx 1 root root 15 Jan 20 00:18 nvme-Seagate_FireCuda_520_SSD_ZP2000GM30002_ABCDEFGH_1-part2 -> ../../nvme1n1p2
lrwxrwxrwx 1 root root 15 Jan 20 00:18 nvme-Seagate_FireCuda_520_SSD_ZP2000GM30002_ABCDEFGH-part1 -> ../../nvme1n1p1
lrwxrwxrwx 1 root root 15 Jan 20 00:18 nvme-Seagate_FireCuda_520_SSD_ZP2000GM30002_ABCDEFGH-part2 -> ../../nvme1n1p2
lrwxrwxrwx 1 root root 13 Jan 19 02:32 nvme-SHGP31-1000GM-2_ABCDEFGHIJKLMNOPQ -> ../../nvme0n1
lrwxrwxrwx 1 root root 13 Jan 19 02:32 nvme-SHGP31-1000GM-2_ABCDEFGHIJKLMNOPQ_1 -> ../../nvme0n1
lrwxrwxrwx 1 root root 15 Jan 19 02:32 nvme-SHGP31-1000GM-2_ABCDEFGHIJKLMNOPQ_1-part1 -> ../../nvme0n1p1
lrwxrwxrwx 1 root root 15 Jan 19 02:32 nvme-SHGP31-1000GM-2_ABCDEFGHIJKLMNOPQ_1-part2 -> ../../nvme0n1p2
lrwxrwxrwx 1 root root 15 Jan 20 00:16 nvme-SHGP31-1000GM-2_ABCDEFGHIJKLMNOPQ_1-part3 -> ../../nvme0n1p3
lrwxrwxrwx 1 root root 15 Jan 19 02:32 nvme-SHGP31-1000GM-2_ABCDEFGHIJKLMNOPQ-part1 -> ../../nvme0n1p1
lrwxrwxrwx 1 root root 15 Jan 19 02:32 nvme-SHGP31-1000GM-2_ABCDEFGHIJKLMNOPQ-part2 -> ../../nvme0n1p2
lrwxrwxrwx 1 root root 15 Jan 20 00:16 nvme-SHGP31-1000GM-2_ABCDEFGHIJKLMNOPQ-part3 -> ../../nvme0n1p3
...

 

4. VM 에 해당 disk id 를 매핑합니다.

# qm set 100 -scsi1 /dev/disk/by-id/nvme-Seagate_FireCuda_520_SSD_ZP2000GM30002_ABCDEFGH

 

5. 명령어 실행 후, PVE GUI 및 VM 에서 아래와 같이 scsi1 이 추가된 것을 확인할 수 있습니다.

 

6. 제거는 아래와 같이 할 수 있습니다.

# qm set 100 -delete scsi1