Proxmox VE(PVE)를 설치한 홈클라우드 서버에 TrueNAS를 설치하고, 공유용으로 사용할 디스크를 직접 연결해서 구성해 보았습니다. 고성능이 필요해서는 아니고, 그냥 이런 것도 한번 해봐야겠다는 생각이 들어서 였구요. 홈서버에 2TB SATA SSD를 추가하고 이 디스크를 TrueNAS VM에 직접 연결했습니다.
서버의 물리 디스크를 VM에 직접 연결하는 것을 ESXi에서는 RDM(Raw Device Mapping)이라 했습니다. PVE에서는 특별히 지칭하는 용어는 없고 Passthrough Physical Disk로 표기하는 것 같습니다.
작업은 크게 3단계로 진행 됩니다.
- 디스크의 ID 파악
- VM에 ID로 디스크 연결
- 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/