Proxmox VE에서 VM에 물리 디스크 직접 연결

Proxmox VE(PVE)를 설치한 홈클라우드 서버에 TrueNAS를 설치하고, 공유용으로 사용할 디스크를 직접 연결해서 구성해 보았습니다. 고성능이 필요해서는 아니고, 그냥 이런 것도 한번 해봐야겠다는 생각이 들어서 였구요. 홈서버에 2TB SATA SSD를 추가하고 이 디스크를 TrueNAS VM에 직접 연결했습니다.

서버의 물리 디스크를 VM에 직접 연결하는 것을 ESXi에서는 RDM(Raw Device Mapping)이라 했습니다. PVE에서는 특별히 지칭하는 용어는 없고 Passthrough Physical Disk로 표기하는 것 같습니다.

작업은 크게 3단계로 진행 됩니다.

  1. 디스크의 ID 파악
  2. VM에 ID로 디스크 연결
  3. VM의 구성 정보 및 인식 확인

1. 디스크의 ID 파악

VM에 디스크를 직접 연결할 때는 디스크 ID를 사용합니다. 그래서 일반적으로 사용하는 sda, sdb와 같은 디바이스 이름이 아니라 디스크 ID를 알아야 합니다.

ls -l /dev/disk/by-id/ 명령을 이용하면 모든 디스크 디바이스의 ID 목록을 볼 수 있습니다. 이 예의 경우 ata-XF1230-1A1920_7CX01BJ5 가 디스크 ID 값이 됩니다.

root@pve-home:~# ls -l /dev/disk/by-id/
total 0
lrwxrwxrwx 1 root root  9 Dec 30 20:18 ata-XF1230-1A1920_7CX01BJ5 -> ../../sda
lrwxrwxrwx 1 root root 10 Dec 30 20:08 dm-name-pve-root -> ../../dm-1
lrwxrwxrwx 1 root root 10 Dec 30 20:08 dm-name-pve-swap -> ../../dm-0
lrwxrwxrwx 1 root root 10 Dec 30 20:08 dm-uuid-LVM-gZMh56vXWPZQAUT7rsVOAhFDVBDulV8bjXEhpFRHtriqp7PV0DGq7ilgk88CE70j -> ../../dm-1
lrwxrwxrwx 1 root root 10 Dec 30 20:08 dm-uuid-LVM-gZMh56vXWPZQAUT7rsVOAhFDVBDulV8bzCCqWjgXwPReCadBdV6jcQUgXUSSJJs8 -> ../../dm-0
lrwxrwxrwx 1 root root 15 Dec 30 20:08 lvm-pv-uuid-HgVtq3-FOLy-ltZP-61kk-hCsR-TOg5-q37ksw -> ../../nvme0n1p3
lrwxrwxrwx 1 root root 13 Dec 30 20:08 nvme-eui.6479a77260c0133f -> ../../nvme0n1
lrwxrwxrwx 1 root root 15 Dec 30 20:08 nvme-eui.6479a77260c0133f-part1 -> ../../nvme0n1p1
lrwxrwxrwx 1 root root 15 Dec 30 20:08 nvme-eui.6479a77260c0133f-part2 -> ../../nvme0n1p2
lrwxrwxrwx 1 root root 15 Dec 30 20:08 nvme-eui.6479a77260c0133f-part3 -> ../../nvme0n1p3
lrwxrwxrwx 1 root root 13 Dec 30 20:08 nvme-PNY_CS1030_1TB_SSD_PNY23012301030102854 -> ../../nvme0n1
lrwxrwxrwx 1 root root 13 Dec 30 20:08 nvme-PNY_CS1030_1TB_SSD_PNY23012301030102854_1 -> ../../nvme0n1
lrwxrwxrwx 1 root root 15 Dec 30 20:08 nvme-PNY_CS1030_1TB_SSD_PNY23012301030102854_1-part1 -> ../../nvme0n1p1
lrwxrwxrwx 1 root root 15 Dec 30 20:08 nvme-PNY_CS1030_1TB_SSD_PNY23012301030102854_1-part2 -> ../../nvme0n1p2
lrwxrwxrwx 1 root root 15 Dec 30 20:08 nvme-PNY_CS1030_1TB_SSD_PNY23012301030102854_1-part3 -> ../../nvme0n1p3
lrwxrwxrwx 1 root root 15 Dec 30 20:08 nvme-PNY_CS1030_1TB_SSD_PNY23012301030102854-part1 -> ../../nvme0n1p1
lrwxrwxrwx 1 root root 15 Dec 30 20:08 nvme-PNY_CS1030_1TB_SSD_PNY23012301030102854-part2 -> ../../nvme0n1p2
lrwxrwxrwx 1 root root 15 Dec 30 20:08 nvme-PNY_CS1030_1TB_SSD_PNY23012301030102854-part3 -> ../../nvme0n1p3
lrwxrwxrwx 1 root root  9 Dec 30 20:18 wwn-0x5000c500813c7110 -> ../../sda
root@pve-home:~#

디스크가 여러개 있어서 헷갈리는 경우에는 lsblk -o +MODEL,SERIAL,WWN를 이용해서 찾는 것도 방법입니다. 이 명령을 이용하면 예 처럼 디바이스 이름(NAME), 디스크 모델(MODEL), 일련번호(SERIAL), WWN 등을 알 수 있어서 정확하게 파악할 수 있습니다.

root@pve-home:~# lsblk -o +MODEL,SERIAL,WWN
NAME               MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS MODEL              SERIAL               WWN
sda                  8:0    0   1.7T  0 disk             XF1230-1A1920      7CX01BJ5             0x5000c500813c7110
nvme0n1            259:0    0 931.5G  0 disk             PNY CS1030 1TB SSD PNY23012301030102854 eui.6479a77260c0133f
├─nvme0n1p1        259:1    0  1007K  0 part                                                     eui.6479a77260c0133f
├─nvme0n1p2        259:2    0     1G  0 part                                                     eui.6479a77260c0133f
└─nvme0n1p3        259:3    0 930.5G  0 part                                                     eui.6479a77260c0133f
  ├─pve-swap       252:0    0     8G  0 lvm  [SWAP]
  ├─pve-root       252:1    0    96G  0 lvm  /
  ├─pve-data_tmeta 252:2    0   8.1G  0 lvm
  │ └─pve-data     252:8    0 794.3G  0 lvm
  └─pve-data_tdata 252:3    0 794.3G  0 lvm
    └─pve-data     252:8    0 794.3G  0 lvm

2. VM에 ID로 디스크 연결

VM에 디스크 직접 연결하는 과정은 UI를 통해서는 할 수 없습니다. 쉘로 접속해서 qm 명령어를 사용해야 합니다.

참고 : VM이 꺼진 상태에서 추가하고, 전원을 켜는 경우로 진행하겠습니다. VM이 켜진 상태에서 핫-플러그하는 방식으로 사용할 수도 있습니다.

쉘로 접속합니다. 그리고 qm list 명령을 이용해서 VM의 ID를 확인합니다. 예에서는 TrueNAS VM의 VMID가 100으로 나왔습니다.

root@pve-home:~# qm list
      VMID NAME                 STATUS     MEM(MB)    BOOTDISK(GB) PID
       100 TrueNAS              stopped    8192              40.00 0
root@pve-home:~#

qm set 명령을 이용해서 VMID 100에 scsi1 디스크로 /dev/disk/by-id/ata-XF1230-1A1920_7CX01BJ5 디스크를 연결합니다.

root@pve-home:~# qm set 100 -scsi1 /dev/disk/by-id/ata-XF1230-1A1920_7CX01BJ5
update VM 100: -scsi1 /dev/disk/by-id/ata-XF1230-1A1920_7CX01BJ5
root@pve-home:~#

3. VM의 구성 정보 및 인식 확인

VM의 구성 정보 보고 디스크가 잘 추가되었는지 확인합니다. 이 경우 VMID가 100이라 100.conf 파일을 조회해본 것입니다. 내용 중에 scsi1: /dev/disk/by-id/ata-XF1230-1A1920_7CX01BJ5,size=1875374424K 을 확인할 수 있습니다.

root@pve-home:~# cat /etc/pve/qemu-server/100.conf
boot: order=sata0;ide2;net0
cores: 4
cpu: x86-64-v2-AES
ide2: local:iso/TrueNAS-SCALE-24.10.1.iso,media=cdrom,size=1830396K
memory: 8192
meta: creation-qemu=9.0.2,ctime=1735615421
name: TrueNAS
net0: virtio=BC:24:11:BB:69:55,bridge=vmbr0,firewall=1
numa: 0
ostype: other
sata0: local-lvm:vm-100-disk-0,size=40G
scsi1: /dev/disk/by-id/ata-XF1230-1A1920_7CX01BJ5,size=1875374424K
scsihw: virtio-scsi-single
smbios1: uuid=ab8f9fed-7ba5-47b5-bc5b-36349414c6fe
sockets: 1
vmgenid: fda1c745-9d33-4d54-97fb-d77366faf7cc
root@pve-home:~#

TrueNAS 가상머신을 켜고 설치를 진행하니 잘 인식되는게 확인됐습니다.

TrueNAS 설치를 끝내고, Storage 풀 구성도 잘 됐습니다.

맺음말

웹 UI를 통해서 할 수 없는게 좀 아쉽기는 합니다. 그래도 간단히 2개의 명령어만 사용하면 되니, 큰 어려움은 없어 보입니다.

제 경우 간단하게 SATA 디스크 하나만 연결했습니다. RAID 콘트롤러를 통해 구성한 볼륨의 경우에도 같은 방식으로 진행됩니다.

NVMe SSD의 경우는 디스크가 아니라 PCIe 장치다 보니 PCIe 패스스루 방식으로 진행해야 합니다.

참고 자료

  • https://pve.proxmox.com/wiki/Passthrough_Physical_Disk_to_Virtual_Machine_(VM)
  • https://dannyda.com/2020/08/26/how-to-passthrough-hdd-ssd-physical-disks-to-vm-on-proxmox-vepve/
답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You May Also Like