Objectiu 🚀
Quan tens dades en un pool ZFS dins d’un node Proxmox, és normal voler reutilitzar-les des d’altres nodes del clúster o exposar-les a containers.
El problema és que aquà hi ha una regla important:
ZFS no és un filesystem clusteritzat. Un pool ZFS només pot estar muntat en un únic node alhora.
Per això, si vols compartir datasets entre nodes, el camà més net acostuma a ser fer-ho per xarxa, i una de les opcions més directes és NFS.
El model mental correcte đź§
La idea no és “muntar el mateix pool ZFS a tot arreu”, sinó aquesta:
- Un node és el propietari del pool ZFS.
- Aquest node exporta un o més datasets via NFS.
- La resta de nodes del clĂşster consumeixen aquests exports com a storage remot.
- Si cal, aquests paths ja muntats es passen després a un CT mitjançant
mpX.
Quan ho veus aixĂ, tot queda bastant mĂ©s simple.
Instal·lar el servidor NFS
Al node que conté el pool ZFS:
apt update
apt install nfs-kernel-server
systemctl enable --now nfs-server
I comprova que el servei estĂ realment actiu:
systemctl status nfs-server
Exportar el dataset directament des de ZFS
Una part molt còmoda és que ZFS pot gestionar els exports NFS amb la propietat sharenfs.
Això evita haver de mantenir manualment /etc/exports per aquests datasets i, en general, és la manera més neta de fer-ho si ja treballes amb ZFS.
Exemple:
zfs set sharenfs="rw=@<SUBXARXA_DEL_CLUSTER>,no_root_squash,sync,no_subtree_check" <POOL>/apps
zfs set sharenfs="rw=@<SUBXARXA_DEL_CLUSTER>,no_root_squash,sync,no_subtree_check" <POOL>/media_root
zfs set sharenfs="rw=@<SUBXARXA_DEL_CLUSTER>,no_root_squash,sync,no_subtree_check" <POOL>/timemachine
Les opcions més útils aquà són:
-
rw: permet escriptura als nodes autoritzats -
no_root_squash: Ăştil si Proxmox o els CTs han de crear fitxers com aroot -
sync: més segur per coherència -
no_subtree_check: evita problemes tĂpics amb exports sobre datasets
Si el teu clúster està en una xarxa concreta, pots restringir l’accés a aquella subxarxa o als nodes que t’interessin.
Comprovar que l’export és actiu
Primer des del costat de ZFS:
zfs get sharenfs
I després des del costat del servei NFS:
exportfs -v
Hauries de veure el path exportat amb les opcions corresponents.
La recomanació important aquà és aquesta: si uses sharenfs, no repliquis el mateix export a /etc/exports.
Afegir l’export NFS a Proxmox
Des de la interfĂcie de Proxmox:
Datacenter -> Storage -> Add -> NFS- Omple els camps principals:
-
Server: IP o hostname del node propietari -
Export: path exportat -
Content: segons l’ús que hi vulguis donar -
Nodes: quins nodes del clĂşster el poden fer servir
-
- Desa la configuraciĂł
Un cop fet això, Proxmox el muntarà automà ticament sota:
/mnt/pve/<storage_id>
Exposar aquestes dades a un container
AquĂ hi ha un detall important: el CT no ha de muntar NFS pel seu compte si ja ho estĂ fent el node Proxmox.
El més net és:
- Proxmox munta l’NFS
- El CT rep aquest path com a bind mount
Per exemple, editant la configuraciĂł del CT:
nano /etc/pve/lxc/104.conf
I afegint:
mp0: /mnt/pve/zfs_apps,mp=/srv/apps
mp1: /mnt/pve/zfs_media,mp=/srv/media
mp2: /mnt/pve/zfs_timemachine,mp=/srv/timemachine
Després reinicies el container:
pct stop 104
pct start 104
I el CT ja veu les dades compartides com si fossin locals al path que li has assignat.
Permisos si el CT és unprivileged
Si el container és:
unprivileged: 1
llavors és bastant probable que hagis d’ajustar UID i GID.
Per exemple:
chown -R 100000:100000 /srv/zfs/apps
El valor concret dependrà del mapping del teu CT i del servei que estigui accedint a les dades, però la idea és sempre la mateixa: fer quadrar els permisos entre host, export i container.
Desactivar un export
Si en algun moment ja no vols publicar un dataset via NFS:
zfs set sharenfs=off <POOL>/media_root
L’export desapareix immediatament.
Tancant 🪂
Aquest enfocament m’agrada perquè respecta la naturalesa de ZFS i evita fer invents estranys dins d’un clúster Proxmox.
La idea clau és senzilla:
- ZFS viu en un node propietari
- NFS distribueix l’accés
- Proxmox munta l’export
- els CTs reben el path ja resolt
No és una solució “mà gica”, però sà una solució bastant neta, comprensible i fà cil de mantenir. 🤗