Proxmox Disk Passthrough Guide#


1. Discovery Commands#

Use these commands to identify physical disks on the Proxmox host.

# Install hardware lister
apt install lshw

# List disks and storage controllers
lshw -class disk -class storage

# List all Physical Disk IDs (The ID needed for passthrough)
ls -l /dev/disk/by-id/

# Advanced list: Maps Device to ID and filters out partitions/LVM
lsblk |awk 'NR==1{print $0" DEVICE-ID(S)"}NR>1{dev=$1;printf $0" ";system("find /dev/disk/by-id -lname \"*"dev"\" -printf \" %p\"");print "";}'|grep -v -E 'part|lvm'

2. Configuration Requirements#

Adding Serials (Crucial for TrueNAS/ZFS)#

In TrueNAS manually edit the VM config file to ensure disk serials persist:

# change VM number
nano /etc/pve/qemu-server/212.conf
##Add the ,serial=XXX
scsi0: Storage:vm-212-disk-0,discard=on,size=32G,ssd=1,serial=PROX-001
scsi1: Storage:vm-212-disk-1,discard=on,size=1G,ssd=1,serial=PROX-002

Critical Post-Passthrough Steps (GUI)#

For every disk added via CLI:

  1. Go to VM > Hardware.
  2. Select the disk and click Edit.
  3. Uncheck “Backup” (to prevent Proxmox from trying to snapshot a physical disk).
  4. Check “SSD Emulation” (if the physical disk is an SSD).

3. HP1 Node Passthrough#

VM 201 (TrueNAS - Documents)#

3.84 TB SAS SSD 12Gbps:

qm set 201 -scsi4 /dev/disk/by-id/scsi-35002538a0664f320 | qm set 201 -scsi5 /dev/disk/by-id/scsi-35002538a0664cf40 | qm set 201 -scsi6 /dev/disk/by-id/scsi-35002538a0688ed00

VM 211 (HP1BackupServer)#

960 Gb SAS SSD 12Gbps:

qm set 211 -scsi1 /dev/disk/by-id/scsi-35002538a47483b10 | qm set 211 -scsi2 /dev/disk/by-id/scsi-35002538a4747be50 | qm set 211 -scsi3 /dev/disk/by-id/scsi-35002538a47484e10

VM 221 (HP1SynologyDSM)#

3.84 TB SAS SSD 12Gbps:

qm set 221 -sata2 /dev/disk/by-id/scsi-35002538a06654510

Bypassing the 6 SATA limit (Manual Edit): nano /etc/pve/qemu-server/221.conf Add to args: (ensure no line breaks between commands and CPU settings):

args: -device ahci,id=ahci1,multifunction=on,bus=pci.0,addr=0xb, -drive 'file=/dev/disk/by-id/scsi-35002538a47483b10,if=none,id=drive-sata3,format=raw,aio=threads,detect-zeroes=unmap' -device ide-hd,bus=ahci1.0,drive=drive-sata3,id=sata3 -drive 'file=/dev/disk/by-id/scsi-35002538a47484e10,if=none,id=drive-sata4,format=raw,aio=threads,detect-zeroes=unmap' -device ide-hd,bus=ahci1.1,drive=drive-sata4,id=sata4 -drive 'file=/dev/disk/by-id/scsi-35002538a474840f0,if=none,id=drive-sata5,format=raw,aio=threads,detect-zeroes=unmap' -device ide-hd,bus=ahci1.2,drive=drive-sata5,id=sata5 -drive 'file=/dev/disk/by-id/scsi-35002538a4747c300,if=none,id=drive-sata6,format=raw,aio=threads,detect-zeroes=unmap' -device ide-hd,bus=ahci1.3,drive=drive-sata6,id=sata6 -drive 'file=/dev/disk/by-id/scsi-35002538a4747be60,if=none,id=drive-sata7,format=raw,aio=threads,detect-zeroes=unmap' -device ide-hd,bus=ahci1.4,drive=drive-sata7,id=sata7

4. HP2 Node Passthrough#

VM 222 (HP2SynologyDSM)#

qm set 222 -sata2 /dev/disk/by-id/ata-Patriot_P210_1TB_P210HBCB230711000653 | qm set 222 -sata3 /dev/disk/by-id/ata-Patriot_P210_1TB_P210HBCB230711000902 | qm set 222 -sata4 /dev/disk/by-id/ata-SPCC_Solid_State_Disk_A20231231S301KG13068 | qm set 222 -sata5 /dev/disk/by-id/ata-Samsung_SSD_860_QVO_1TB_S59HNG0N300017Z

VM 242 (HP2BackupServer)#

qm set 242 -scsi1 /dev/disk/by-id/scsi-35002538a0664d030

VM 212 (HP2TrueNAS - UnasPro Backup)#

qm set 212 -scsi3 /dev/disk/by-id/scsi-358ce38ee20cbbbfd | qm set 212 -scsi4 /dev/disk/by-id/scsi-358ce38ee20cb1d1d | qm set 212 -scsi5 /dev/disk/by-id/scsi-358ce38ee20cbbbd1 | qm set 212 -scsi6 /dev/disk/by-id/scsi-358ce38ee20cb1d59

5. HP3, HP4, HP6 & HP7 Node Passthrough#

HP3 - VM 213 (TrueNAS)#

qm set 213 -scsi2 /dev/disk/by-id/ata-ST12000NM0007-2A1101_ZJV0P1ZD | qm set 213 -scsi3 /dev/disk/by-id/ata-ST12000NM0007-2A1101_ZJV0P5Z7 | qm set 213 -scsi4 /dev/disk/by-id/ata-ST12000NM0007-2A1101_ZJV0PX4F | qm set 213 -scsi5 /dev/disk/by-id/ata-ST12000NM0007-2A1101_ZJV0PPJJ

HP4 - Backup & TrueNAS#

# VM 214 BackupServer
qm set 214 -scsi1 /dev/disk/by-id/scsi-35002538a068074d0

# VM 224 TrueNAS (800GB SAS SSD)
qm set 224 -scsi3 /dev/disk/by-id/scsi-358ce38ee20cb1d4d | qm set 224 -scsi4 /dev/disk/by-id/scsi-358ce38ee203e06d5

HP7 - VM 217 (TrueNAS - Validation Pending)#

qm set 217 -scsi2 /dev/disk/by-id/scsi-3600508b1001cbadc5e1fff8cd999a86c | qm set 217 -scsi3 /dev/disk/by-id/scsi-3600508b1001c74a18299f0e5ad7f5536 | qm set 217 -scsi4 /dev/disk/by-id/scsi-3600508b1001c254fe1b9f5f3de7a9b1f | qm set 217 -scsi5 /dev/disk/by-id/scsi-3600508b1001c24df65069c20dc34c840 | qm set 217 -scsi6 /dev/disk/by-id/scsi-3600508b1001cf4d57e99563d37697467 | qm set 217 -scsi7 /dev/disk/by-id/scsi-3600508b1001cdcd060d3506618447e34 | qm set 217 -scsi8 /dev/disk/by-id/scsi-3600508b1001c78a2695cce0a1b7dfb70

6. HP8 Node & NVMe Management#

Inventory (4TB CT4000P3PSSD8)#

  • nvme0: _2311E6BC8026 -> HP8BS (VM 218)
  • nvme1: _2311E6BC8023 -> Synology (VM 228)
  • nvme2: _2336E873F263 -> TrueNAS (VM 208)
  • nvme3: _2336E873F291 -> TrueNAS (VM 208)
  • nvme0 (Alt): _2402E88D3804 -> TrueNAS (VM 208)

HP8Truenas (VM 208)#

# VM 208 TrueNAS (Pool + Documents)
qm set 208 -scsi2 /dev/disk/by-id/ata-ST12000NM0007-2A1101_ZCH0GPX8 | qm set 208 -scsi3 /dev/disk/by-id/scsi-35000c500a6d47793 | qm set 208 -scsi4 /dev/disk/by-id/ata-ST12000VN0008-2YS101_ZR8014EY | qm set 208 -scsi5 /dev/disk/by-id/ata-ST12000NM0007-2A1101_ZJV0MYEK
#NVMe
qm set 208 -scsi6 /dev/disk/by-id/nvme-CT4000P3PSSD8_2336E873F263 | qm set 208 -scsi7 /dev/disk/by-id/nvme-CT4000P3PSSD8_2336E873F291 | qm set 208 -scsi8 /dev/disk/by-id/nvme-CT4000P3PSSD8_2402E88D3804

HP8Synology#

qm set 228 -scsi2 /dev/disk/by-id/nvme-CT4000P3PSSD8_2311E6BC8023

HP8BackupServer (High Performance Virtio)#

qm set 218 --virtio0 /dev/disk/by-id/nvme-CT4000P3PSSD8_2311E6BC8026,discard=on,iothread=1

7. Remote/Legacy Nodes (Garage & Shed)#

OLDHP8 - VM 218 (Shed PBS)#

qm set 218 -scsi1 /dev/disk/by-id/scsi-3600508b1001c323eb900f089ec6ffbbf

OLDHP9 - VM 219 (Garage PBS) & VM 229 (Synology)#

# VM 219 PBS
qm set 219 -scsi1 /dev/disk/by-id/scsi-3600508b1001c6028010aacd4b3cd603b | qm set 219 -scsi2 /dev/disk/by-id/scsi-3600508b1001ca6e6e968b9abaf63a658 | qm set 219 -scsi3 /dev/disk/by-id/scsi-3600508b1001cba3c655520c8bda56049 | qm set 219 -scsi4 /dev/disk/by-id/scsi-3600508b1001c04eac9ee19dd9bba2b02 | qm set 219 -scsi5 /dev/disk/by-id/scsi-3600508b1001c6c9ddae7e799465d5498 | qm set 219 -scsi6 /dev/disk/by-id/scsi-3600508b1001c203c09821043388f0051 | qm set 219 -scsi7 /dev/disk/by-id/scsi-3600508b1001ce4624a0d0b03f8dd40ee

# VM 229 Synology
qm set 229 -sata2 /dev/disk/by-id/scsi-3600508b1001c30613690d77e9e886720

OLDHP10 - VM 220 (Garage TrueNAS)#

# Mass Passthrough (SCSI 2-16)
qm set 220 -scsi2 /dev/disk/by-id/scsi-3600508b1001cbef7553fc107c8d53a3b | qm set 220 -scsi3 /dev/disk/by-id/scsi-3600508b1001c41f5dec471093d17547d | qm set 220 -scsi4 /dev/disk/by-id/scsi-3600508b1001cd83aa1b9c00dcb45f6fc | qm set 220 -scsi5 /dev/disk/by-id/scsi-3600508b1001cb8f3c7667de2ab4e5b85 | qm set 220 -scsi6 /dev/disk/by-id/scsi-3600508b1001c7ec7665613f60ba0ca40 | qm set 220 -scsi7 /dev/disk/by-id/scsi-3600508b1001cb81cb8c82325a2414a4e | qm set 220 -scsi8 /dev/disk/by-id/scsi-3600508b1001c0c546c50302a09fd3f4e | qm set 220 -scsi9 /dev/disk/by-id/scsi-3600508b1001c027960371ecb83af54a2 | qm set 220 -scsi10 /dev/disk/by-id/scsi-3600508b1001c6c9bfba98ff28b0d0948 | qm set 220 -scsi11 /dev/disk/by-id/scsi-3600508b1001c8498cd2b06f5ee88626e | qm set 220 -scsi12 /dev/disk/by-id/scsi-3600508b1001ce88eb659c8416ecfe5c9 | qm set 220 -scsi13 /dev/disk/by-id/scsi-3600508b1001c497353e6fbf51c271aeb | qm set 220 -scsi14 /dev/disk/by-id/scsi-3600508b1001cd83f2bbfd5da131cc6ba | qm set 220 -scsi15 /dev/disk/by-id/scsi-3600508b1001ccd62619595a035f9e94f | qm set 220 -scsi16 /dev/disk/by-id/scsi-3600508b1001c05a73c78ac74991a2f4d

8. MP5.2 Node - VM 252 (TrueNAS)#

qm set 252 -scsi2 /dev/disk/by-id/ata-ST4000DM000-1F2168_W300T362 | qm set 252 -scsi3 /dev/disk/by-id/ata-ST4000DM000-1F2168_Z300VMNK | qm set 252 -scsi4 /dev/disk/by-id/ata-ST4000DM000-1F2168_Z300XDJQ | qm set 252 -scsi5 /dev/disk/by-id/ata-ST4000DM000-1F2168_Z302L1GE | qm set 252 -scsi6 /dev/disk/by-id/ata-WDC_WD4003FZEX-00Z4SA0_WD-WCC130578883 | qm set 252 -scsi7 /dev/disk/by-id/ata-ST4000DM000-1F2168_Z300X431

9. Christian’s Configuration Reference#

HP1Synology (4TB SAS SSD)#

qm set 221 -scsi2 /dev/disk/by-id/scsi-3600508b1001cd87eceffba2a9dcee875 | qm set 221 -scsi3 /dev/disk/by-id/scsi-3600508b1001c9d3a0b597b377e127040

HP1Backup Server (480GB SAS SSD)#

qm set 231 -scsi1 /dev/disk/by-id/scsi-3600508b1001ccad1ed8d73c9ea2e20cb | qm set 231 -scsi2 /dev/disk/by-id/scsi-3600508b1001c8673960eaf47d5845faa | qm set 231 -scsi3 /dev/disk/by-id/scsi-3600508b1001cb857f21732c5fb4a4e8f | qm set 231 -scsi4 /dev/disk/by-id/scsi-3600508b1001c4ad438f3df5797963a8b 

TrueNAS 12TB Pools#

qm set 214 -scsi6 /dev/disk/by-id/ata-ST12000NM0007-2A1101_ZJV0NWJV | qm set 214 -scsi7 /dev/disk/by-id/ata-ST12000NM0007-2A1101_ZJV0NMT3 | qm set 214 -scsi8 /dev/disk/by-id/ata-ST12000NM0007-2A1101_ZJV0PWQE

# Backup Pool - ARCHIVES - Disques enlevés - Pool n'Mexiste plus car les disques sont trop $$$
qm set 214 -scsi3 /dev/disk/by-id/ata-ST12000NM0007-2A1101_ZJV0P7M0 | qm set 214 -scsi4 /dev/disk/by-id/ata-ST12000NM0007-2A1101_ZJV0P20N 

# 4TB SAS SSDs
qm set 214 -scsi10 /dev/disk/by-id/scsi-35002538a0664fa60 | qm set 214 -scsi11 /dev/disk/by-id/scsi-35002538a06653860

SMBackupServer (800GB SAS SSD)#

qm set 224 -scsi1 /dev/disk/by-id/scsi-358ce38ee20cb1d65 | qm set 224 -scsi2 /dev/disk/by-id/scsi-358ce38ee20cbbbf9