Proxmox Best Practice Parte 2 – Stoccaggio: LVM-Thin e molto altro

Proxmox Proxmox Proxmox Proxmox Proxmox Proxmox Proxmox Proxmox Proxmox Proxmox Proxmox Proxmox Proxmox Proxmox Proxmox

Che cos'è l'archiviazione in Proxmox?

stoccaggio in Proxmox sono le diverse posizioni in cui finiscono i tuoi dati, ce ne sono diversi in una normale configurazione:

  • Dischi rigidi VM (Immagini): Gli HDD/SSD virtuali delle VM
  • File system per contenitori (Rootdir): Il file system dei contenitori LXC
  • Immagini ISO: CD/DVD di installazione per macchine virtuali
  • modelli: Immagini VM o container precostruite
  • backup: Dati VM/contenitore protetti
  • frammenti: Configurazioni cloud init, ganci, ecc.

Iniziamo classicamente con LVM-Thin: Il tuo coltellino svizzero per la gestione dello stoccaggio

Che cos'è LVM-Thin? Consideratela come "allocazione intelligente della memoria". Invece di riservare immediatamente l'intero spazio di archiviazione, viene occupato solo lo spazio effettivo utilizzato.

Esempio pratico: Si crea una VM da 100 GB, ma inizialmente utilizza solo 10 GB. Con l'archiviazione classica, 100GB sarebbero immediatamente occupati, con LVM-Thin solo i 10GB effettivamente utilizzati.

Configurazione del pool LVM-Thin

# Crea gruppo di volumi (se non già disponibile) pvcreate /dev/sdb vgcreate pve-data /dev/sdb # Crea pool sottile lvcreate -L 100G -n dati pve-dati lvconvert --tipo thin-pool pve-dati/dati # Configurare in Proxmox pvesm aggiungere lvmthin local-lvm --thinpool data --vgname pve-data --content images,rootdir

Configurazione dello storage in pratica

Per principianti: Proxmox imposta l'archiviazione locale per impostazione predefinita:

  • locale: Per immagini ISO, modelli, backup
  • locale-lvm: Per dischi rigidi VM

Per avanzato: Combina diversi tipi di storage:

# NFS per i modelli condivisi pvesm add nfs shared-templates --server 192.168.1.100 --export /exports/templates --content iso,template # ceph per stoccaggio ad alta disponibilità (cluster) pvesm aggiungere ceph ceph-storage --pool vm-storage --content images # ZFS per zpool locale ad alte prestazioni create -f tank mirror /dev/sdc /dev/sdd pvesm add zfspool zfs-local --pool tank --content images,rootdir

Diamo anche un'occhiata a questo nel dettaglio, perché questa è anche una delle aree più critiche per prestazioni e affidabilità!

Quali tipi di storage ho attualmente nella mia configurazione Proxmox?

# Visualizza tutto lo storage configurato Stato di pvesm # Esempio di output: Nome Tipo Stato Totale Utilizzato Disponibile % Dir locale attivo 50.0GB 20.0GB 30.0GB 40.00% local-lvm lvmthin attivo 500.0GB 100.0GB 400.0GB 20.00%

LVM-Thin: Capire il cuore

Cosa rende speciale LVM-Thin?

Stoccaggio tradizionale (fornitura spessa):

# VM ottiene un disco da 100 GB qm set 100 --scsi0 locale-lvm: 100 # Problema: 100 GB sono immediatamente occupati da spazio di archiviazione
# Anche se VM utilizza solo 5GB!

Migliore variante LVM-Thin (Thin Provisioning):

# VM ottiene un disco da 100 GB qm set 100 --scsi0 locale-lvm: 100 # Vantaggio: Solo i dati effettivamente utilizzati possono occupare la memoria
# VM utilizza 5GB → solo 5GB occupati
# VM utilizza 50GB → solo 50GB occupati

Creazione del pool LVM-Thin – passo dopo passo

Fase 1: Preparare il gruppo di volumi

# Disco rigido divisorio (ATTENZIONE: I dati saranno cancellati!) fdisk /dev/sdb # Tipo di partizione: 8e (Linux LVM)

# Creare un volume fisico pvcreate /dev/sdb1 # Creare o espandere il gruppo di volumi vgcreate pve-data /dev/sdb1 # o aggiungere al VG esistente:
# vgextend pve /dev/sdb1

Fase 2: Creare una piscina sottile

# Crea piscina sottile (80% delle dimensioni disponibili) VGSIZE=$(vgs --noheadings -o vg_size --unità g pve-data ?? tr -d ' G') POOLSIZE=$(eco "$VGSIZE * 0,8" ?? bc ?? tagliato -d. -f1) lvcreate -L ${POOLSIZE}G -n dati pve-dati lvconvert --tipo thin-pool pve-dati/dati # Regolare la dimensione del pool di metadati (se necessario) lvextend --poolmetadatasize +1G pve-data/dati

Fase 3: Integrazione con Proxmox

# Aggiungere spazio di archiviazione in Proxmox pvesm aggiunge lvmthin local-lvm-thin \ --thinpool data \ --vgname pve-data \ --content images,rootdir

Ottimizzare la configurazione LVM-Thin

Configura l'estensione automatica

In questo esempio, l'allocazione di memoria LVM-Thin si espanderà automaticamente di altri 20% Quantità di memoria non appena la memoria occupata raggiunge 80% Brand ha raggiunto. Fondamentalmente una cosa bella, ma devi anche tenerlo d'occhio e d'altra parte avere lo spazio di archiviazione "libero".

# /etc/lvm/lvm.conf cat >> /etc/lvm/lvm.conf << Attivazione 'EOF' { thin_pool_autoextend_threshold = 80 thin_pool_autoextend_percent = 20 } EOF # Significato:
# A 80 anni% Riempi automaticamente il livello intorno a 20% espandere

Ottimizzare il pool di metadati

Anche i metadati memorizzati vogliono essere archiviati da qualche parte.

# Controlla le dimensioni del pool di metadati lvs -a ?? metadati grep # Aumentare se necessario lvextend --poolmetadatasize +1G pve-data/dati # Perché è importante? Memorizza i metadati:
# Quali volumi sottili esistono
# - Quali blocchi sono occupati
# - Informazioni sull'istantanea

Andiamo più in dettaglio su cosa significano i comandi:

Il primo ordine, # Controlla le dimensioni del pool di metadati lvs -a ?? metadati grep, è utilizzato per verificare lo stato attuale dei metadati:

lvs -a: Elenca tutti i volumi logici, compresi quelli interni come il volume di metadati e ?? metadati grep: Filtra l'output in modo che vengano visualizzate solo le righe contenenti la parola "metadati".

Il secondo ordine, # Aumentare se necessario lvextend --poolmetadatasize +1G pve-data/dati, aumenta il volume dei metadati di 1 gigabyte di memoria se diventa troppo pieno con lvextend: Un comando per espandere un volume logico, --poolmetadatasize +1G: Questa opzione mira specificamente al volume di metadati del thin pool e lo aumenta di 1 GB. E naturalmente il pathagabe pve-data/dati: Questo è il percorso verso la piscina sottile che deve essere ampliata. In questo esempio, pve-dati il Gruppo Volume e dati La piscina sottile.

Perché i metadati sono così importanti

I metadati sono, per così dire, l'indice della tua piscina sottile. Memorizzano tutte le informazioni importanti in modo che Proxmox sappia dove si trovano i dati. Quando lo spazio dei metadati è pieno, non è più possibile creare nuove macchine virtuali, contenitori o istantanee e le macchine virtuali esistenti potrebbero non essere più in grado di scrivere nuovi dati.

Comprendere l'over-provisioning

Fondamentalmente, è possibile allocare molta più memoria alle VM o LXC nel sistema di quanto sia effettivamente disponibile, purché questo non venga utilizzato anche completamente senza problemi.

# 500GB piscina sottile
# 10×100GB VMs = 1000GB virtuale
# Ma solo i dati effettivamente utilizzati occupano spazio

# Problemi con 100% Utilizzo degli impianti:
# Tutte le VM ottengono errori di I/O!

Monitoraggio e avvisi

Tuttavia, è necessario tenerlo d'occhio, perché non appena la memoria "trabocca", le VM e LXC si limiteranno a generare errori di I/O.

# Script per il monitoraggio della piscina sottile cat > /usr/local/bin/thin-pool-monitor.sh << 'EOF' #!/bin/bash UTILIZZO=$(lvs --noheadings -o data_percent pve-data/data ?? tr -d ' %') METADATA=$(lvs --noheadings -o metadata_percent pve-data/data ?? tr -d ' %') se [ "$USO" -gt 90 ]; Poi logger "ATTENZIONE: Utilizzo dei dati della piscina sottile: ${USAGGIO}%" echo "La piscina sottile è piena: ${USAGGIO}%" ?? \ mail -s "Avviso di archiviazione Proxmox" admin@company.com fi se [ "$METADATA" -gt 90 ]; Poi logger "ATTENZIONE: Utilizzo dei metadati del pool sottile: ${METADATA}%" fi EOF # Cronjob ogni 5 minuti echo "*/5 * * * root /usr/local/bin/thin-pool-monitor.sh" >> /etc/crontab

In questo esempio, uno script bash assicurerebbe che la memoria non superi 90% Il livello aumenta, altrimenti il messaggio di avviso "Thin pool is full with the current percentage and sent to admin@company.com by e-mail. Inoltre, lo stesso viene registrato per l'archivio dei metadati.
Il cronjob nell'ultima riga assicura che lo script di monitoraggio venga eseguito ogni 5 minuti.

Espandere il Thin Pool

# Aggiungi nuovo disco rigido pvcreate /dev/sdc1 vgextend pve-data /dev/sdc1 # Allargare la piscina sottile lvextend -L +200G pve-dati/dati

Casi d'uso pratici

Creazione di macchine virtuali basata su modelli

# Crea modello qm creare 9000 --memoria 2048 --scsi0 locale-lvm:20 # Configura il modello... qm modello 9000 # Creare cloni collegati (super veloce!) qm clone 9000 101 --nome web-server-1 qm clone 9000 102 --nome web-server-2 # Linked Clone utilizza solo memoria aggiuntiva per le modifiche lvs # vm-9000-disk-0 pve-data Vwi---tz-- 20.00g dati # Modello
# vm-101-disk-0 pve-data Vwi-aotz-- 20.00g dati vm-9000-disk-0 # clone
# vm-102-disk-0 pve-data Vwi-aotz-- 20.00g dati vm-9000-disk-0 # clone

Gestione delle istantanee

# Istantanea prima di cambiamenti importanti qm snapshot 100 prima dell'aggiornamento # Elenca le istantanee qm listsnapshot 100 # Torna all'istantanea qm rollback 100 prima dell'aggiornamento # Elimina snapshot qm delsnapshot 100 prima dell'aggiornamento

Archiviazione NFS: Memoria condivisa per il cluster Proxmox

NFS (Network File System) è una delle classiche soluzioni di archiviazione di rete ed è, ad esempio, adatto per ambienti Proxmox in cui lo storage desidera condividere tra più nodi. La particolarità: NFS si basa sul backend della directory, ma ha il vantaggio che Proxmox può montare automaticamente le condivisioni NFS.

Cosa rende speciale NFS in Proxmox?

Il grande vantaggio di NFS in Proxmox: Non c'è bisogno di manualmente /etc/fstab Vaffanculo in giro! Proxmox assume la gestione completa della montatura per te. Il backend può anche testare se il server NFS è online e mostrare tutte le esportazioni disponibili.

Questo è particolarmente utile se:

  • Stoccaggio condiviso Abbiamo bisogno di una migrazione dal vivo.
  • Modelli e ISO Vuoi gestire centralmente
  • Soluzioni di backup semplici vuole implementare
  • Estensione dello stoccaggio efficace sotto il profilo dei costi necessario

Configurazione dello storage NFS - Passo dopo passo

La configurazione di base

# Aggiungere NFS Storage in Proxmox pvesm aggiunge nfs iso-templates \ --server 10.0.0.10 \ --export /space/iso-templates \ --content iso,vztmpl \ --options vers=3,soft

Cosa succede qui in dettaglio?

--server 10.0.0.10: Questo è il tuo server NFS. Pro tip: Usa gli indirizzi IP invece dei nomi DNS per evitare ritardi nella ricerca DNS. Se si desidera utilizzare DNS, inserire il server nel /etc/hosts uno:

echo "10.0.0.10 nfs-server.local" >> /etc/hosts

--export /spazio/iso-modelli: Il percorso di esportazione NFS sul server. Puoi scansionarlo in anticipo:

# Mostra le esportazioni NFS disponibili scansione pvesm nfs 10.0.0.10 # Esempio di output:
# /spazio/iso-modelli
# /spazio/vm-stoccaggio 
# /spazio/backup

-- contenuto iso, vztmpl: Specifica cosa può essere memorizzato in questo spazio di archiviazione:

  • iso: Immagini ISO per installazioni di macchine virtuali
  • vztmpl: Modelli di contenitori LXC

--opzioni vers=3,soft: Questo sarà interessante per la performance:

  • vers=3: Utilizza NFSv3 (di solito più stabile della v4 per la virtualizzazione)
  • morbido: E' importante! Limita i tentativi di riprova a 3, impedisce l'impiccagione di VM da problemi NFS

La configurazione di archiviazione in /etc/pve/storage.cfg

Dopo il comando, nel file apparirà automaticamente quanto segue:

nfs: Percorso iso-templates /mnt/pve/iso-templates server 10.0.0.10 esportare /space/iso-templates opzioni vers=3,soft content iso,vztmpl

percorso /mnt/pve/iso-templates: Questo è il punto di mount locale su ogni nodo Proxmox. Proxmox crea automaticamente la directory e monta la condivisione NFS.

Configurazioni NFS avanzate

Impostazioni ottimizzate per le prestazioni

# Per le immagini VM (sono richieste prestazioni più elevate) pvesm aggiunge nfs vm-storage \ --server 10.0.0.10 \ --export /space/vm-storage \ --content images,rootdir \ --options vers=3,hard,intr,rsize=32768,wsize=32768,tcp

Le opzioni Mount spiegano:

  • difficile: Le richieste NFS vengono ripetute all'infinito (per i dati critici)
  • intr: I processi possono essere interrotti con Ctrl+C
  • rsize/wsize=32768: Blocchi da 32KB per prestazioni migliori
  • tcp: TCP invece di UDP (più affidabile per le VM)

Configura l'archiviazione di backup

# Archiviazione di backup dedicata pvesm aggiunge nfs backup-nfs \ --server backup.internal.lan \ --export /backup/proxmox \ --content backup \ --options vers=4,soft,bg \ --maxfiles 3

Opzioni specifiche per il backup:

  • vers=4: NFSv4 per una migliore sicurezza e prestazioni
  • bg: Montaggio in background se il server non è disponibile
  • maxfiles 3: Massimo 3 file di backup per VM (deprecati ma funzionali)

Comprensione delle funzionalità di archiviazione NFS

Istantanea e cloni con qcow2

Poiché NFS non supporta le istantanee hardware, Proxmox utilizza formato qcow2 per queste caratteristiche:

# Creare VM con qcow2 su NFS qm set 100 --scsi0 nfs-storage: vm-100-disk-0.qcow2 # Creare snapshot (istantanea interna di qcow2) qm snapshot 100 prima dell'aggiornamento # Creare clone (qcow2-backed) qm clone 100 101 --nome clonato-vm

La differenza con LVM-Thin:

  • LVM-Thin: Istantanee a livello hardware (molto veloci)
  • NFS + qcow2: snapshot a livello di software (più flessibili, ma più lenti)

Migrazione e migrazione dal vivo

Questa è la Vantaggio principale di NFS nei cluster:

# Migrazione in tempo reale tra i nodi (senza trasferimento di archiviazione!) qm migra 100 node2 --online # Perché è così veloce? 
# - I dati delle VM sono su NFS (accessibili a tutti i nodi)
# - Viene trasferito solo il contenuto della RAM
# - Nessuna copia del disco richiesta

Scenari applicativi pratici

Scenario 1: Homelab con Synology NAS

# Abilita Synology NFS e crea esportazione
# Tutto sul DSM: Pannello di controllo → File Services → NFS → Abilita

# Configurazione in Proxmox pvesm aggiunge nfs synology-storage \ --server 192.168.1.200 \ --export /volume1/proxmox \ --content images,backup,iso \ --options vers=3,hard,intr

Scenario 2: Server NFS dedicato (Ubuntu/Debian)

Configurazione del server NFS:

# Sul server NFS apt install nfs-kernel-server # Configurazione delle esportazioni cat >> /etc/exports << 'EOF' /exports/proxmox-vms 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash) /exports/proxmox-backup 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash) /exports/proxmox-iso 192.168.1.0/24(ro,sync,no_subtree_check) EOF exportfs -ra systemctl enable nfs-server

Uso in Proxmox:

# Archiviazione delle macchine virtuali pvesm aggiunge nfs nfs-vms \ --server 192.168.1.100 \ --export /exports/proxmox-vms \ --content images,rootdir # Archiviazione di backup  pvesm aggiunge nfs nfs-backup \ --server 192.168.1.100 \ --export /exports/proxmox-backup \ --backup dei contenuti # Archiviazione ISO (in sola lettura) pvesm aggiunge nfs nfs-iso \ --server 192.168.1.100 \ --export /exports/proxmox-iso \ --content iso,vztmpl

Risoluzione dei problemi e monitoraggio

Frequenti problemi NFS

Problema: "Connessione rifiutata" o "Nessun percorso per ospitare"

# 1. Testare la connettività di rete ping 10.0.0.10 # 2. Controlla il servizio NFS  rpcinfo -p 10.0.0.10 # 3. Controlla firewall (lato server)
# NFS richiede diverse porte:
# - 111 (rpcbind)
# - 2049 (nfs) 
# - Porte dinamiche per rpc.statd, rpc.mountd

Problema: «Maniglia del file di spia»

# Esecuzione del Mount Renewal umount /mnt/pve/nfs-storage pvesm set nfs-storage --disable 1 pvesm set nfs-storage --disable 0 # O ri-aggiungere completamente lo stoccaggio pvesm rimuovere nfs-storage pvesm aggiungere nfs nfs-storage --server ... --esportazione ...

Problema: Scarse prestazioni

# Ottimizzare le opzioni di montaggio NFS pvesm set nfs-storage --opzioni vers=3,hard,intr,rsize=65536,wsize=65536,tcp # Testare le prestazioni della rete iperf3 -c nfs-server # Prestazioni di I/O di prova  dd if=/dev/zero di=/mnt/pve/nfs-storage/test bs=1M count=1000

Impostazione del monitoraggio NFS

# Monitorare lo stato NFS cat > /usr/local/bin/nfs-health-check.sh << 'EOF' #!/bin/bash per l'archiviazione in $(stato pvesm ?? grep nfs ?? awk '{stampa $1}'); fare se ! stato pvesm --magazzino $stoccaggio >/dev/null 2>&1; poi echo "NFS Storage $archiviazione offline!" ?? \ logger -t nfs-monitor # Mail/Alert inviare fi fatto EOF # Controlla ogni 2 minuti echo "*/2 * * * radice /usr/local/bin/nfs-health-check.sh" >> /etc/crontab

Migliori pratiche per NFS in Proxmox

Progettazione della rete

# Utilizzo di una rete di storage dedicata
# Gestione: 192.168.1.x 
# Stoccaggio: 10.0.0.x (Gigabit o superiore) auto vmbr1 iface vmbr1 inet indirizzo statico 10.0.0.11/24 bridge-ports eth1 # Nessun gateway - solo traffico di archiviazione

Opzioni di montaggio a seconda dell'applicazione

# Per contenuti in sola lettura (ISO, modelli) --opzioni vers=3,ro,soft,intr # Per immagini VM (critiche)  --opzioni vers=3,hard,intr,tcp,rsize=32768,wsize=32768 # Per i backup (può essere interrotto) --opzioni vers=3,soft,bg,intr

Ridondanza e alta disponibilità

# Server NFS con failover
# Primario: 10.0.0.10
# Secondario: 10.0.0.11

# Heartbeat script per failover automatico cat > /usr/local/bin/nfs-failover.sh << 'EOF' #!/bin/bash PRIMARY="10.0.0.10" SECONDARY="10.0.0.11" se ! ping -c 3 $PRIMARIA >/dev/null 2>&1; allora # Primario offline - passare al set pvesm secondario nfs-storage --server $Registratore SECONDARIO "NFS failover al server secondario" fi EOF

NFS è particolarmente adatto se stai cercando una soluzione di archiviazione condivisa semplice ma professionale per il tuo cluster Proxmox. La configurazione è semplice, le prestazioni sono completamente sufficienti per la maggior parte dei casi d'uso e la manutenzione è minima!

Per completezza, vorrei anche concentrarmi sulla variante Windows di NFS. Ascolta il nome CIFS e si comporta ampiamente sotto Proxmox pari a: La differenza principale tra NFS e CIFS (oggi di solito indicato come SMB È nella loro Storia dello sviluppo e piattaforma target. NFS è stato progettato per sistemi basati su Unix come Linux, mentre CIFS / SMB è stato originariamente progettato per sistemi Windows.

NFS (Network File System)

  • origini: Sviluppato da Sun Microsystems per sistemi Unix.
  • funzionamento: Consente ai client di accedere a file e directory memorizzati su un server remoto come se fossero locali. L'accesso avviene tramite un processo di "importo".
  • prestazioni: Spesso considerato più performante per gli ambienti Unix / Linux perché è nativamente integrato lì e ha meno overhead.
  • limitazione: Può essere ad alta intensità di risorse quando viene utilizzato in ambienti non Linux, poiché è spesso necessario un software aggiuntivo.
  • Stato attuale: NFSv4 è l'ultima versione e offre funzionalità di sicurezza e prestazioni migliorate. È attivamente in fase di sviluppo.

CIFS (Common Internet File System) / SMB (Server Message Block)

Stato attuale: Il CIFS è tecnicamente obsoleto. Il protocollo attuale si chiama SMB (Server Message Block), che è in costante sviluppo e funge da standard per la condivisione di file nei moderni sistemi Windows. Con Samba, può essere utilizzato anche in ambienti Unix/Linux per stabilire la compatibilità con i sistemi Windows.

origini: CIFS è una versione speciale del SMB-Protocolli di Microsoft. Nel contesto moderno, i termini sono spesso usati in modo intercambiabile o CIFS denota la versione SMB 1.0 obsoleta.

funzionamento: I client possono accedere ai file, alle stampanti e ad altre risorse di un server tramite la rete. CIFS/SMB è un protocollo stateful, il che significa che il server tiene traccia delle connessioni e dello stato dei file aperti.

prestazioni: Può essere più lento di NFS (soprattutto le versioni precedenti) nelle connessioni WAN, ma le versioni SMB moderne (SMB2, SMB3) hanno miglioramenti significativi delle prestazioni.

limitazione: CIFS/SMB1 è considerato non sicuro ed è disabilitato o non più utilizzato di default nei sistemi moderni.


Mentre ci siamo, diamo un'occhiata più da vicino al resto. Il documentazione ufficiale mostra come Proxmox utilizza i tipi di memoria ZFS, BTRFS e CEPH come Backend di memoria uso. Ci sono chiare raccomandazioni per vari casi d'uso.


Proxmox e ZFS

Proxmox vede ZFS come un Soluzione potente e affidabile per l'archiviazione single host o piccole configurazioni replicate.

Implementazione in Proxmox: ZFS viene utilizzato in Proxmox come plug-in di archiviazione integrato. È possibile creare un pool ZFS su dischi rigidi locali direttamente nell'interfaccia web. Proxmox utilizza la funzionalità copy-on-write di ZFS per istantanee molto veloci e cloni di macchine virtuali per creare.

Integrità dei dati: I checksum ZFS proteggono i dati delle VM dalla corruzione silenziosa dei dati, essenziale per i carichi di lavoro critici.

Istantanee efficienti: Le istantanee sono molto veloci e consumano poco spazio, il che è estremamente utile per le strategie di backup + test / messa in scena.

RAID-Z: Proxmox supporta la creazione di configurazioni RAID ZFS (RAID-Z1, RAID-Z2, RAID-Z3) tramite l'interfaccia web, che aumenta la sicurezza dei dati.

Quando usare: ZFS è la scelta preferita per un Singolo server, che richiede elevata affidabilità, integrità dei dati e semplici funzioni di snapshot. La documentazione ufficiale lo consiglia anche per i cluster durante la sincronizzazione di ZFS tramite il Replication Engine di Proxmox.


Proxmox e BTRFS

BTRFS è descritto nella documentazione Proxmox come un moderno, Alternativa flessibile a ZFS Fornisce anche funzionalità di copy-on-write. È anche destinato all'archiviazione locale su un host.

Implementazione in Proxmox: Simile a ZFS, BTRFS può essere configurato direttamente nell'interfaccia web di Proxmox come file system e tipo di archiviazione. Proxmox utilizza le funzionalità di sottovolume e snapshot di BTRFS.

semplicità: BTRFS è spesso considerato più facile da gestire, soprattutto quando si gestiscono sottovolumi.

Funzioni RAID integrate: BTRFS offre un proprio livello RAID (RAID 0, 1, 10). Tuttavia, la documentazione menziona che RAID 5 e RAID 6 sono ancora considerati sperimentali. Quindi c'è sicuramente bisogno di cautela!

bilanciamento: BTRFS offre una funzione integrata denominata "Balance", che distribuisce i dati tra i dischi e ottimizza i metadati.

Quando usare: BTRFS è una buona opzione se si desidera la flessibilità e le caratteristiche di un moderno file system su un Ospitante singolo Si desidera utilizzarlo, ma si desidera evitare i requisiti di risorse di ZFS. È una scelta solida per gli ambienti più piccoli.


Proxmox e Ceph

Ceph è in Proxmox. Soluzione consigliata per lo storage cluster. È profondamente integrato nell'infrastruttura Proxmox e consente Altamente disponibile, pool di stoccaggio distribuito Crea su più host.

Quando usare: Ceph è la soluzione ideale per Ammassi più grandi (tre o più nodi). Consente di creare un pool di archiviazione centrale ad alta disponibilità per tutte le macchine virtuali nel cluster che non ha un singolo punto di guasto. La documentazione di Proxmox evidenzia inoltre chiaramente che Ceph è la scelta migliore per lo storage condiviso in un cluster Proxmox HA.

Implementazione in Proxmox: Proxmox offre un Integrazione nativa Ceph tramite l'interfaccia web, che consente di configurare e gestire un cluster Ceph sul proprio host Proxmox. Ogni host può fungere da nodo Ceph (OSD, Monitor, Manager).

Benefici:

Elevata scalabilità: Gli host aggiuntivi possono essere facilmente aggiunti al cluster per aumentare la capacità e le prestazioni.

Alta disponibilità: Ceph replica i dati attraverso i nodi del cluster. Se un host fallisce, la memoria rimane disponibile.

Stoccaggio unificato: È possibile utilizzare Ceph per distribuire dispositivi a blocchi (RBD) per VM, storage a oggetti (RADOS Gateway) e file system (CephFS).


I diversi backend di storage in dettaglio

1. Archiviazione directory (semplice ma flessibile)

# Directory locale come spazio di archiviazione pvesm aggiunge dir backup-local \ --path /backup \ --content backup,iso,template \ --shared 0 # NFS Condividi come Storage pvesm aggiunge nfs shared-storage \ --server 192.168.1.100 \ --export /exports/proxmox \ --content images,template,backup \ --options vers=3

Benefici:

  • Facile da capire e gestire
  • Flessibile per contenuti diversi
  • Snapshot tramite file system (quando si utilizza ZFS/BTRFS)

Svantaggi:

  • Istantanee più lente per immagini di grandi dimensioni
  • Utilizzo dello storage meno efficiente

2. ZFS Storage (Caratteristiche aziendali)

# Creazione di ZFS Pool zpool crea -f tank \ raidz2 /dev/sdb /dev/sdc /dev/sdd /dev/sde \ cache /dev/nvme0n1p1 \ log /dev/nvme0n1p2 # Ottimizzazione ZFS zfs set compression=lz4 serbatoio zfs set atime=off serbatoio zfs set xattr=sa serbatoio zfs set relatime=on serbatoio # Aggiungi come Proxmox Storage pvesm aggiungere zfspool zfs-storage \ --pool tank \ --content images,rootdir \ --sparse 1

Vantaggi di ZFS:

  • Istantanee e repliche integrate
  • Compressione e deduplicazione
  • Molto robusto grazie ai checksum
  • Cache e L2ARC per prestazioni

3. Stoccaggio Ceph (per cluster)

# Creare Ceph OSD ceph-deploy osd create --data /dev/sdb proxmox1 ceph-deploy osd create --data /dev/sdc proxmox2 ceph-deploy osd create --data /dev/sdd proxmox3 # Creare un pool per le VM ceph osd pool create vm storage 128 128 ceph osd pool application abilitare vm storage rbd # Integrazione con Proxmox pvesm aggiungere ceph ceph-storage \ --pool vm-storage \ --content images \ --krbd 0

ZFS e BTRFS: Approcci di scale-up (singolo server)

ZFS (file system di Zettabyte) è un file system maturo e un gestore di volumi che viene utilizzato principalmente per Forte integrità dei dati è noto. È progettato per l'uso su un singolo server ad alte prestazioni.

  • vantaggi: Integrità dei dati superiore grazie a copy-on-write e checksum. Varianti RAID flessibili (RAID-Z). Molto affidabile e stabile.
  • svantaggi: Può essere affamato di risorse (RAM). Scala principalmente solo verticalmente. A volte complesso nella gestione.
  • campo di applicazione: Sistemi host singoli, workstation, server medio-piccoli, sistemi NAS.

BTRFS (file system di B-Tree) è un moderno approccio di file system copy-on-write per Linux che replica molte funzionalità di ZFS, ma è spesso considerato più flessibile e più facile da gestire.

  • vantaggi: Funzionalità di gestione del volume integrate. Facile gestione di sottovolumi e istantanee. Backup incrementali. RAID incorporato.
  • svantaggi: L'implementazione RAID5/6 è ancora considerata sperimentale e non è robusta come ZFS.
  • campo di applicazione: Sistemi Linux in cui si desidera sfruttare le istantanee e l'integrità dei dati senza l'overhead delle risorse di ZFS. Ideale per i server domestici e gli host Proxmox che memorizzano i dati localmente.

Ceph: L'approccio scale-out (cluster)

Ceph non è un'alternativa a ZFS o BTRFS su un singolo server. Si tratta di un Soluzione di storage software-defined per cluster di grandi dimensioni e distribuiti. Il suo obiettivo principale è quello di fornire un pool di archiviazione centrale su molti server.

  • vantaggi: Scalabilità estremamente elevata (orizzontale). Alta affidabilità attraverso l'auto-guarigione e dati distribuiti. Fornisce l'archiviazione di blocchi, oggetti e file.
  • svantaggi: Molto complesso nell'impostazione e nell'amministrazione. Elevati requisiti infrastrutturali (consigliati almeno 3 nodi).
  • campo di applicazione: Ambienti cloud di grandi dimensioni, cluster di virtualizzazione, archivi di dati molto grandi.

Sintesi e raccomandazione

trattoZFSBTRFSCeph
concettoScale-Up (singolo server)Scale-Up (singolo server)Scale-out (cluster)
pubblicoAffidabilità, integrità dei datiFlessibilità, semplicità (Linux)Scalabilità, alta disponibilità
ridimensionamentoVerticale (più dischi in un server)Verticale (più dischi in un server)Orizzontale (più server nel cluster)
Dimensione dell'applicazionePiccole e mediePiccole e medieMedio-grande (da 3+ nodi)
Vantaggio principaleStandard di settore per l'integrità dei datiFlessibile e nativo in LinuxMassima affidabilità & scalabilità
Principale svantaggioElevati requisiti di RAMRAID5/6 non ancora completamente sviluppatoElevata complessità e requisiti infrastrutturali

In sintesi, si può quindi dire quanto segue:

Scegliere un singolo host Proxmox: ZFS o BTRFS sono la scelta giusta. Entrambi forniscono istantanee e una buona integrità dei dati. ZFS è il gold standard per l'affidabilità, ma BTRFS è spesso più semplice e sicuramente più efficiente in termini di risorse.

Scegliere un cluster Proxmox: Ceph è la scelta migliore se hai più host e vuoi costruire un pool di storage centrale ad alta disponibilità che possa crescere con il tuo cluster a lungo termine.


Ottimizzazione delle prestazioni in dettaglio

Ottimizzazione SSD

Attivare TRIM/Discard

# Per le singole VM qm set 100 --scsi0 local-lvm:vm-100-disk-0,discard=on,ssd=1 # Globale per tutte le nuove VM (in configurazione storage) pvesm set local-lvm --content immagini --discard-support 1 # Livello di sistema TRIM (settimanale) systemctl abilitare fstrim.timer

Schedulatori specifici per SSD

# Ideale per SSD echo mq-deadline > /sys/block/sda/queue/scheduler # Permanente via udev cat > /etc/udev/rules.d/60-ssd-scheduler.rules << 'EOF' ACTION=="aggiungi changechange", KERNEL=="sd[a-z] ?? nvme[0-9]n[0-9]", \ ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="mq-deadline" EOF

Ottimizzazione di thread e cache di I/O

# I/O thread per una migliore parallelizzazione qm set 100 --scsi0 local-lvm:vm-100-disk-0,iothread=1 qm set 100 --scsihw virtio-scsi-single # Modalità cache a seconda dell'applicazione
# scrittura: Certo, ma più lento qm set 100 --scsi0 local-lvm:vm-100-disk-0,cache=writethrough # writeback: Più veloce ma rischio di perdita di dati in caso di interruzione di corrente  qm set 100 --scsi0 local-lvm:vm-100-disk-0,cache=writeback # Nessuna: Per l'archiviazione condivisa (cluster) qm set 100 --scsi0 ceph-storage: vm-100-disk-0, cache=none

Multi-Path I/O per lo storage aziendale

# Installare e configurare Multipath apt install multipath-tools cat > /etc/multipath.conf < < 'EOF' defaults { user_friendly_names yes find_multipaths yes } multipaths { multipath { wwid 36001405d27e5d898dd34a9f98a9a8f55 alias shared-storage-lun1 } } EOF systemctl abilita multipathd systemctl start multipathd

Migliori pratiche di layout di archiviazione in TL:DR

Layout consigliato per diversi scenari

Homelab (1 o 2 server)

# SSD 1: Sistema + VM locali /dev/sda1: Avvio EFI (512MB) /dev/sda2: root (50GB) /dev/sda3: LVM-Thin Pool (riposo) # HDD 1: Backup + Archiviazione ISO /dev/sdb1: /backup (disco completo) # Configurazione:
# locale-lvm: Immagini,rootdir (SSD)
# locale di backup: backup, iso (HDD)

Piccolo ambiente di produzione (3+ server)

# Per server:
# NVMe 1: Sistema (RAID1 Specchio) /dev/nvme0n1: Sistema Proxmox # NVMe 2: VM locali (dati caldi)  /dev/nvme1n1: Locale LVM-Thin Pool # SAS/SATA: Stoccaggio condiviso tramite Ceph /dev/sd[a-c]: OSD di Ceph # NAS esterno: backup nfs://backup.internal.lan/proxmox

Enterprise (molti server, funzionamento del cluster)

# Stoccaggio dedicato:
# - SAN (iSCSI/FC) per immagini VM
# - NFS per modelli/ISO 
# - Sistema di backup dedicato
# - cluster Ceph separati

# Solo SSD del sistema nodo Pro Proxmox /dev/sda: Sistema Proxmox (RAID1) # Tutto il resto sulla rete

Implementare il tiering di stoccaggio

# Livello 1: NVMe per macchine virtuali critiche pvesm aggiunge lvmthin nvme-tier1 \ --vgname nvme-vg \ --thinpool nvme-pool \ --content images # Livello 2: SSD SATA per macchine virtuali standard  pvesm aggiunge lvmthin ssd-tier2 \ --vgname ssd-vg \ --thinpool ssd-pool \ --content images,rootdir # Livello 3: HDD per Archivio/Backup pvesm aggiungere dir hdd-tier3 \ --path /archive \ --content backup,template

Migliori pratiche dalla documentazione Proxmox

Assegnare correttamente i tipi di contenuto

Diversi tipi di storage supportano diversi tipi di contenuto stoccaggio:

# Stoccaggio specializzato per vari scopi pvesm add lvmthin vm-storage --vgname pve-fast --thinpool fast --content images pvesm add lvmthin ct-storage --vgname pve-bulk --thinpool bulk --content rootdir pvesm add dir iso-storage --path /var/lib/vz/template --content iso,vztmpl

Archiviazione senza aliasing

È problematico mostrare più configurazioni di storage sullo stesso storage stoccaggio:

# FALSO - Entrambi mostrano sulla stessa piscina sottile pvesm aggiungere lvmthin storage1 --vgname pve --thinpool data --content images pvesm aggiungere lvmthin storage2 --vgname pve --thinpool data --content rootdir # DIRITTO - Un solo spazio di archiviazione per entrambi i tipi di contenuto pvesm aggiunge lvmthin local-lvm --vgname pve --thinpool data --content images,rootdir

Comprendere la proprietà del volume

Ogni volume appartiene a una VM o a un contenitore stoccaggio:

# Comprendere il formato dell'ID del volume:
# local-lvm:vm-100-disk-0
# ^ ^ ^
# | | ?? ─ ─ Numero del disco 
# ?? ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ VM-ID # ?? ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ID di magazzinaggio

# Determinare il percorso del volume Percorso di pvesm local-lvm: vm-100-disk-0 # /dev/pve-data/vm-100-disk-0

Sintonizzazione delle prestazioni secondo gli standard Proxmox

Ottimizzare lo Scheduler I/O per LVM Thin

# Per SSD sotto LVM-Thin echo mq-deadline > /sys/block/sda/queue/scheduler # Personalizza Cue Depth echo 32 > /sys/block/sda/queue/nr_requests # Read-ahead per carichi di lavoro sequenziali blockdev --setra 4096 /dev/sda

Configurazione VM per prestazioni ottimali

# Le migliori impostazioni di prestazioni per LVM Thin qm set 100 --scsi0 local-lvm:vm-100-disk-0,iothread=1,discard=on,ssd=1 # Parametri spiegati:
# iothread=1: Fili di I/O separati per una migliore parallelizzazione
# discard=on: Supporto TRIM per l'ottimizzazione SSD 
# ssd=1: Dice alla VM che è un SSD

Manutenzione e monitoraggio

Controllo dello stato della piscina sottile

# Informazioni dettagliate sul pool stato dmsetup ?? grep sottile # Riparazione dello stagno sottile (quando corrotto) lvconvert --repair pve-data/dati # Sottile piscina Chunk-Usage thin_dump /dev/pve-data/data_tmeta ?? meno

Manutenzione periodica

# Manutenzione settimanale cat > /etc/cron.weekly/lvm-manutenzione << 'EOF' #!/bin/bash # Striscio di deframmentazione sottile dello stagno -av # Backup dei metadati LVM vgcfgbackup # Pulire i volumi logici inutilizzati lvremove $(lvs --noheadings -o lv_path,lv_attr ?? \ awk '$2 ~ /^V.*a.*z/ {stampa $1}' ?? \ testa -5) EOF

Questa sezione di codice è la base per l'archiviazione flessibile e ad alte prestazioni in Proxmox

Stoccaggio Migrazione e Manutenzione

Migrare le VM tra gli storage

# Migrazione offline (VM spento) qm migra 100 node2 --targetstorage new-storage # Migrazione online (VM continua)  qm migra 100 node2 --online --targetstorage new-storage # Cambia solo l'archiviazione (stesso nodo) qm move-disk 100 scsi0 new-storage --eliminare

Manutenzione dello stoccaggio senza tempi di inattività

# 1. Migrare le VM dallo storage per vm in $(qm lista ?? grep in esecuzione ?? awk '{stampa $1}'); migrare qm $vm node2 --targetstorage backup-storage --online fatto # 2. Eseguire la manutenzione dello stoccaggio
# - Scambio di dischi rigidi
# - Ricostruire RAID 
# - ecc.

# 3. Migrare indietro le VM per vm in $(qm lista ?? grep in esecuzione ?? awk '{stampa $1}'); migrare qm $vm node1 --targetstorage main-storage --online fatto

Monitoraggio e risoluzione dei problemi

Monitorare le prestazioni di archiviazione

# Statistiche I/O in diretta iostat -x 1 # Monitoraggio I/O per VM iotop -ao # Misurazione della latenza di storage ioping /var/lib/vz/

Risoluzione di problemi di archiviazione comuni

Problema: "Nessuno spazio lasciato sul dispositivo"

# 1. Analizzare il consumo di memoria df -h lvs --tutti voi -sh /var/lib/vz/* # 2. Espandere il Thin Pool lvextend -L +100G /dev/pve/dati # 3. Blocchi inutilizzati fstrim-av

Problema: Scarse prestazioni di I/O

# 1. Controllare Scheduler gatto /sys/block/sda/queue/scheduler # 2. Ottimizzare la profondità della coda di I/O echo 32 > /sys/block/sda/queue/nr_requests # 3. Controllare la configurazione della VM  mq config 100 ?? grep scsi # iothread=1, cache=none/writeback a seconda della configurazione

Problema: Immagazzinamento non disponibile

# 1. Verifica lo stato di conservazione Stato di pvesm # 2. Controllo dei punti di montaggio montare ?? grep /var/lib/vz # 3. Prova dell'archiviazione di rete ping storage-server showmount -e storage-server # 4. Riattivare l'archiviazione pvesm set storage-name --disabilita 0

L'archiviazione è alla base dell'installazione di Proxmox: dedica la maggior parte del tuo tempo alla pianificazione e all'installazione qui! Questo ripagherà sicuramente più tardi nel consumo di caffè e o consumo di pillole per il mal di testa. ??


Completamento e risorse avanzate

Proxmox è uno strumento potente, ma con grande potenza arriva una grande responsabilità. (winker) Le migliori pratiche qui mostrate sono il risultato dell'esperienza pratica. Inizia con le basi e gradualmente lavora fino alle funzionalità avanzate.

I tuoi prossimi passi:

  1. Costruire un ambiente di testing/staging: Testare tutte le configurazioni in un ambiente separato
  2. Attuare il monitoraggio: Monitora il tuo sistema fin dall'inizio
  3. Strategia di backup di prova: Esegue regolari test di ripristino
  4. Unisciti alla Community: Il forum Proxmox è molto utile

Quindi ricorda: Prenditi il tuo tempo, le basi Comprendi davanti a te Impostazioni più complesse svanisce. Il Guida di amministrazione di Proxmox Come sito web ho collegato più volte nell'articolo come riferimento vale anche l'oro. Dai un'occhiata nel forum intorno, Se hai una domanda. C'è anche un punto di ingresso per Canale YouTube.

Le restanti parti di questa serie di articoli che ho anche collegato qui di nuovo per voi: Parte 1: rete | Parte 2: stoccaggio | Parte 3: rinforzi | Parte 4: sicurezza | Parte 5: prestazioni