Proxmox ZFS over iSCSI: De complete gids voor snelle gedeelde opslag
Ontdek hoe je Proxmox ZFS over iSCSI instelt met een Linux-server en waarom het niet compatibel is met TrueNAS. Krijg inzicht in prestaties en configuratie.

Proxmox Virtual Environment (VE) is een krachtige open-source platform voor virtualisatie dat populair is in zowel homelabs als professionele omgevingen. Een van de interessante opslagbackends die Proxmox VE biedt, is “ZFS over iSCSI”. Deze methode combineert de robuuste functies van ZFS, zoals snapshots en dataconsistentie, met de flexibiliteit van iSCSI voor gedeelde opslag. Maar hoewel het veelbelovend klinkt, is de implementatie specifiek en niet compatibel met alle opslagoplossingen, met TrueNAS als een prominent voorbeeld.
In dit artikel duiken we diep in de werking van Proxmox ZFS over iSCSI. Je leert hoe het mechanisme in elkaar zit, welke iSCSI-doelen worden ondersteund, en we begeleiden je stap voor stap bij het opzetten van een compatibele Linux-opslagserver. Daarnaast bespreken we uitgebreid waarom TrueNAS-gebruikers voorzichtig moeten zijn met deze functie en welke risico’s het met zich meebrengt.
Hoe werkt Proxmox ZFS over iSCSI?
Proxmox VE’s ZFS over iSCSI-functionaliteit is een slimme aanpak om de geavanceerde features van ZFS te benutten voor virtuele machines op gedeelde opslag. Het kernprincipe is dat Proxmox VE niet alleen een iSCSI-target consumeert, maar ook actief het onderliggende ZFS-bestandssysteem op een externe opslagserver beheert.
Het mechanisme uitgelegd
Wanneer je een ZFS over iSCSI-opslag aan Proxmox toevoegt, gebeurt het volgende:
- SSH-toegang: Proxmox VE maakt via SSH verbinding met de externe opslagserver. Deze verbinding moet root-toegang hebben en beveiligd zijn met een wachtwoordloze SSH-sleutel.
- ZVOL-beheer: Wanneer je een virtuele schijf voor een VM aanmaakt in Proxmox, stuurt Proxmox via SSH ZFS-commando’s naar de externe server. Hierdoor wordt een ZFS Volume (ZVOL) aangemaakt binnen de opgegeven ZFS-pool op die externe server. Deze ZVOL fungeert als de opslagruimte voor je VM-schijf.
- iSCSI-export: Tegelijkertijd configureert Proxmox via SSH de iSCSI-targetsoftware op de externe server om die nieuw aangemaakte ZVOL te exporteren als een iSCSI Logical Unit Number (LUN).
- LUN-verbinding: Proxmox VE maakt vervolgens zelf via iSCSI verbinding met dit LUN, waardoor de VM toegang krijgt tot zijn virtuele schijf.
Deze architectuur biedt een significant voordeel: Proxmox kan direct ZFS-snapshots en klonen maken van je VM-schijven op de opslagserver. Dit maakt snelle back-ups, herstelpunten en het testen van software-updates veel eenvoudiger en efficiënter dan met standaard iSCSI-LUNs.
SSH-authenticatie: een cruciaal detail
De basis van deze integratie is de SSH-verbinding. Proxmox verwacht een SSH-sleutel opgeslagen in /etc/pve/priv/zfs/<target_ip>_id_rsa op de Proxmox-host. Het is belangrijk te weten dat Proxmox de bestandsnaam _id_rsa verwacht, ongeacht het type sleutel dat je gebruikt (bijvoorbeeld ed25519). Zorg ervoor dat de private sleutel correct is benoemd en dat de bijbehorende publieke sleutel op de remote opslagserver in de authorized_keys van de root-gebruiker staat.
Ondersteunde iSCSI-providers
Proxmox VE is specifiek in de iSCSI-targetimplementaties die het ondersteunt voor ZFS over iSCSI. Dit zijn:
- LIO (Linux I/O Target): De standaard en aanbevolen iSCSI-target voor Linux-systemen. Wordt beheerd via
targetcli-fb. - IET (iSCSI Enterprise Target): Een oudere Linux-implementatie.
- ISTGT: Een populaire iSCSI-target voor FreeBSD.
- Comstar: Solaris’s eigen opslagbeheersysteem.
Voor de meeste homelab-gebruikers die een Linux-server als opslagbackend willen gebruiken, is LIO de aangewezen keuze, beheerd door de targetcli-fb tool.
Praktische implementatie: een Linux-opslagserver opzetten voor Proxmox ZFS over iSCSI
Het opzetten van een dedicated Linux-server als backend voor Proxmox ZFS over iSCSI is een bewezen en krachtige oplossing voor je homelab. Dit geeft je de vrijheid om een high-performance opslagsysteem te bouwen.
Hardware-overwegingen
Om het maximale uit ZFS over iSCSI te halen, is de hardwarekeuze van je opslagserver essentieel:
- Snelle opslag: NVMe SSD’s via PCIe bieden aanzienlijk betere prestaties dan SATA SSD’s of HDD’s, wat cruciaal is voor de I/O van virtuele machines.
- Voldoende RAM: ZFS profiteert enorm van veel RAM voor caching (ARC). Streef naar minimaal 16 GB, liever 32 GB of meer, afhankelijk van je ZFS-poolgrootte en werkbelasting.
- Snelle netwerken: Een 10 Gigabit Ethernet (10GbE) verbinding tussen je Proxmox-hosts en de opslagserver is sterk aanbevolen om iSCSI-latentie te minimaliseren en hoge doorvoer te garanderen.
Software-vereisten en voorbereiding
Voor een succesvolle implementatie raden we Debian of Ubuntu aan als besturingssysteem voor je opslagserver.
- Installeer Debian/Ubuntu: Voer een minimale installatie uit.
- Installeer ZFS utils:
sudo apt update sudo apt install zfsutils-linux - Creëer een ZFS-pool: Gebruik je snelle schijven om een ZFS-pool aan te maken.
sudo zpool create testpool /dev/nvme0n1 # Vervang /dev/nvme0n1 door je daadwerkelijke schijf Je kunt hierbij ook RAIDZ-configuraties toepassen voor redundantie. Zorg ervoor dat je poolnaam eenvoudig en herkenbaar is, bijvoorbeeld `datastore` of `vmpool`. - Installeer
targetcli-fb(LIO iSCSI Target):sudo apt -y install targetcli-fb - Configureer
targetcli-fb: Proxmox vereist een iSCSI-target met specifieke instellingen. Het is gebruikelijk om authenticatie uit te schakelen, aangezien Proxmox zelf de LUNs beheert.sudo targetcli /> /iscsi create /> /iscsi/iqn.2003-01.org.linux-iscsi.target.hostname: proxmoxzfs/tpg1/luns create /backstores/block/zfs_testpool /> /iscsi/iqn.2003-01.org.linux-iscsi.target.hostname: proxmoxzfs/tpg1 set attribute authentication=0 demo_mode_write_protect=0 generate_node_acls=1 cache_dynamic_acls=1 /> saveconfig /> exit * Vervang `iqn.2003-01.org.linux-iscsi.target.hostname: proxmoxzfs` door een unieke IQN (iSCSI Qualified Name) voor je target. Deel `hostname` kan de hostname van je opslagserver zijn. * De `luns create` opdracht is een voorbeeld; Proxmox zal later de *daadwerkelijke* ZVOLs aanmaken en exporteren. * `authentication=0` schakelt authenticatie uit, wat Proxmox voor dit specifieke type opslag verwacht.
SSH-sleutelbeheer op de Proxmox-host
Op je Proxmox VE-host moet je de SSH-sleutel genereren en distribueren:
- Maak de sleutel directory aan:
mkdir /etc/pve/priv/zfs - Genereer de SSH-sleutel: Gebruik de IP van je opslagserver in de bestandsnaam.
ssh-keygen -f /etc/pve/priv/zfs/192.0.2.1_id_rsa # Vervang 192.0.2.1 door het IP van je opslagserver Druk op Enter voor lege passphrase. - Kopieer de publieke sleutel naar de opslagserver:
ssh-copy-id -i /etc/pve/priv/zfs/192.0.2.1_id_rsa root@192.0.2.1 Voer het root-wachtwoord van de opslagserver in. - Test de SSH-verbinding:
ssh -i /etc/pve/priv/zfs/192.0.2.1_id_rsa root@192.0.2.1 hostname Als dit de hostname van je opslagserver teruggeeft zonder om een wachtwoord te vragen, is de verbinding succesvol.
Waarom Alpine Linux niet werkt
Een belangrijke opmerking uit homelab-ervaringen is dat Alpine Linux niet geschikt is als opslagbackend voor Proxmox ZFS over iSCSI. Dit komt doordat Proxmox directe toegang nodig heeft tot ZVOLs en pools via paden zoals /dev/poolnaam/zvolnaam. Alpine Linux’s afwijkende manier van apparaatbeheer biedt deze toegang niet op de manier die Proxmox verwacht.
De valkuil van TrueNAS: Waarom Proxmox ZFS over iSCSI niet werkt
Dit is een van de meest cruciale lessen als je Proxmox en TrueNAS combineert: Proxmox VE’s ZFS over iSCSI-plugin is niet compatibel met TrueNAS SCALE of TrueNAS CORE. Hoewel beide systemen ZFS en iSCSI gebruiken, hanteren ze fundamenteel verschillende beheermethoden.
Fundamentele incompatibiliteit
- TrueNAS’s interne beheer: TrueNAS (SCALE met
scst, CORE metctl) beheert zijn iSCSI-targets en ZFS-pools strikt via zijn eigen UI, API en interne services. Het verwacht dat alle wijzigingen via deze kanalen plaatsvinden om consistentie en stabiliteit te garanderen. - Afwezigheid van
targetcli: TrueNAS-systemen hebben detargetcli-tool (die Proxmox verwacht voor LIO) simpelweg niet geïnstalleerd en gebruiken deze ook niet voor hun iSCSI-configuratie. Proxmox kan dus de iSCSI-targets op TrueNAS niet beheren zoals het bedoeld is. - Directe ZFS-manipulatie door Proxmox: Proxmox’s ZFS over iSCSI-implementatie vereist dat het direct ZFS-commando’s kan uitvoeren op de remote server, zoals
zfs create -b 4k -V 1048576k main/vm-101-disk-X. Dit bypasset volledig de TrueNAS-beheerlaag.
De risico’s van een geforceerde integratie
Het negeren van deze incompatibiliteit en toch proberen Proxmox ZFS over iSCSI met TrueNAS te gebruiken, leidt tot ernstige problemen:
- Onbeheerde ZVOLs: Proxmox creëert ZVOLs direct op je TrueNAS-pool, maar TrueNAS is zich hier niet van bewust en beheert ze niet via zijn UI of API. Dit maakt het onmogelijk om ze op een normale manier te beheren, te back-uppen, of zelfs te verwijderen vanuit TrueNAS.
- Dataloss en corruptie: Als Proxmox en TrueNAS tegelijkertijd ZFS-pools proberen te beheren zonder van elkaars acties af te weten, kan dit leiden tot inconsistenties in de ZFS-metadata en potentieel dataloss.
- Onstabiele configuratie: Je creëert een ‘frankenstein’-opstelling die door geen van beide leveranciers wordt ondersteund. Probleemoplossing wordt extreem moeilijk.
- Beveiligingsrisico’s: Door Proxmox root SSH-toegang te geven tot je TrueNAS-systeem om willekeurige ZFS-commando’s uit te voeren, omzeil je alle beveiligingslagen en best practices van TrueNAS.
De consensus binnen de community is glashelder: “Proxmox’s ‘ZFS over iSCSI’-plugin ondersteunt de iSCSI-targets die in TrueNAS worden gebruikt (scst in SCALE, ctl in CORE) niet.” Het is een integratie die Proxmox verwacht te ‘bezitten’, wat TrueNAS niet toelaat.
Alternatieven voor TrueNAS-gebruikers
Als je TrueNAS SCALE of CORE gebruikt en Proxmox VE, zijn er betrouwbare en ondersteunde manieren om opslag te delen:
- Standaard iSCSI LUNs: De meest directe en ondersteunde methode. Maak simpelweg iSCSI-LUNs aan via de TrueNAS UI en verbind deze als ‘standaard’ iSCSI-opslag in Proxmox. Je verliest de directe ZFS-snapshotintegratie vanuit Proxmox, maar je hebt wel gedeelde opslag die volledig beheerd wordt door TrueNAS.
- NFS/SMB-shares: Voor VM-opslag kan NFS of SMB (met VirtIO-SCSI) ook worden gebruikt, hoewel iSCSI vaak betere prestaties biedt voor VM-schijven.
- Community-plugins of API-integraties: Er kunnen community-ontwikkelde scripts of plugins bestaan die de TrueNAS API gebruiken om op een meer gecontroleerde manier met ZFS-pools te interacteren. Dit vereist echter extra onderzoek en is niet officieel ondersteund.
De les van “eigenzinnige” integraties
Dit scenario met Proxmox ZFS over iSCSI en TrueNAS illustreert een belangrijk principe in software-integratie: sommige features zijn zeer “eigenzinnig” (opinionated). Ze zijn ontworpen om te werken met een specifieke set tools en aannames over de omgeving. Proxmox verwacht een pure Linux ZFS-server waar het de controle heeft over de targetcli-configuratie en directe ZFS-commando’s. TrueNAS daarentegen is een complete opslagoplossing met zijn eigen beheerlaag die niet bedoeld is om door externe systemen te worden omzeild.
Het is cruciaal om de compatibiliteitseisen van dergelijke functies zorgvuldig te begrijpen voordat je ze implementeert. Het forceren van incompatibele integraties leidt bijna altijd tot frustratie, instabiliteit en potentieel dataloss.
Conclusie
Proxmox VE’s ZFS over iSCSI-functionaliteit is een krachtige en geavanceerde oplossing voor het creëren van gedeelde opslag met rijke ZFS-features in een Proxmox-homelab of productieomgeving. Mits correct geïmplementeerd met een dedicated Linux-server als backend, biedt het uitstekende prestaties en flexibiliteit, vooral als je gebruikmaakt van snelle NVMe-schijven en een 10GbE-netwerk.
Voor Proxmox-gebruikers die hun eigen opslagserver willen bouwen op basis van Debian of Ubuntu, is dit een uitstekende keuze om de voordelen van ZFS-snapshots en klonen volledig te benutten. Echter, TrueNAS-gebruikers moeten de waarschuwingen serieus nemen. Probeer niet Proxmox ZFS over iSCSI te forceren met TrueNAS. Kies in plaats daarvan voor bewezen, ondersteunde integratiemethoden zoals standaard iSCSI LUNs via de TrueNAS UI. Dit garandeert een stabiele, beheersbare en veilige opslagoplossing voor je virtuele omgeving. Door de specifieke eisen van software-integraties te respecteren, voorkom je problemen en bouw je een robuuster systeem.