298 lines
8.4 KiB
Markdown
298 lines
8.4 KiB
Markdown
---
|
|
marp: true
|
|
theme: kant
|
|
author: Emiliano Vavassori
|
|
title: "Proxmox VE: dalle enteprise a casa tua"
|
|
style: |
|
|
div.columns {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
gap: 1rem;
|
|
}
|
|
---
|
|
|
|
# Proxmox VE: dalle *enteprise* a casa tua
|
|
|
|
Emiliano Vavassori
|
|
|
|

|
|
|
|
Linux Day 2025 Spring Edition
|
|
|
|
Creative LAB, Lunetta (MN) — 10 maggio 2025
|
|
|
|
---
|
|
<!-- paginate: true -->
|
|
<!-- footer: "Linux Day 2025 SE - 10/05/2025 - Mantova" -->
|
|
|
|
## Agenda
|
|
|
|
- Cos'è Proxmox Virtual Environment
|
|
- Sostenibilità del progetto e modello di *business*
|
|
- Supporto della *community*
|
|
- Approccio *enterprise* e "casalingo"
|
|
- Considerazioni sullo *storage* locale
|
|
- Pro e contro delle tre modalità di configurazione dello *storage*
|
|
- Esempio avanzato di configurazione dello *storage* locale
|
|
- Considerazioni su CPU
|
|
- Considerazioni su RAM
|
|
- Meccanismi di *passthrough*
|
|
|
|
---
|
|
|
|
## Cos'è Proxmox Virtual Environment
|
|
|
|

|
|
|
|
* Un *hypervisor* di tipo 1
|
|
<!-- Un hypervisor è un software che permette di virtualizzare -->
|
|
<!-- Tipo 1: leggero strato software, no interfaccia GUI -->
|
|
<!-- Tipo 2: interfaccia GUI, meno leggero - VirtualBox, ecc. -->
|
|
<!-- La virtualizzazione è basata su KVM/QEMU -->
|
|
* Anche una soluzione di containerizzazione
|
|
<!--- basata su LXC -->
|
|
* Basata su Debian GNU/Linux (più alcune *patch* per *performance*)
|
|
<!-- Proprio perché è basata su Debian, supporto hardware molto esteso -->
|
|
* Licenza GNU AGPLv3 ⇒ Software libero!
|
|
|
|
---
|
|
|
|
## *Feature* di Proxmox VE — 1
|
|
|
|
* Virtualizzazione basata su KVM/QEMU
|
|
* Containerizzazione basata su LXC
|
|
* Gestione centralizzata (*clustering*) via web e CLI
|
|
* REST API (diversi *wrapper* già sviluppati)
|
|
* Funzionalità di backup/restore integrate
|
|
* Supporto ad altri motori d'autenticazione (LDAP, Active Directory, OpenID
|
|
Connect)
|
|
* *High availability* (HA) e *live migrations*
|
|
* *Software Defined Networks* e *stack* di rete con tecnologie Linux
|
|
* Firewall
|
|
|
|
---
|
|
|
|
## *Feature* di Proxmox VE — 2
|
|
|
|
<div class="columns">
|
|
<div>
|
|
|
|
Storage interni:
|
|
|
|
- LVM
|
|
- Directory
|
|
- ZFS
|
|
- **Ceph Cluster**
|
|
</div>
|
|
<div>
|
|
|
|
Storage esterni:
|
|
|
|
- LVM
|
|
- iSCSI
|
|
- NFS
|
|
- SMB/CIFS
|
|
- Ceph
|
|
- GlusterFS
|
|
</div>
|
|
</div>
|
|
|
|
---
|
|
|
|
## Sostenibilità del progetto e modello di *business*
|
|
|
|
Proxmox Server Solutions GmbH è l'azienda che sviluppa Proxmox VE dal 2005.
|
|
|
|
Il modello di *business* è basato sulla vendita di servizi di supporto (con diversi livelli).
|
|
|
|
Gli altri prodotti:
|
|
- Proxmox Mail Gateway (è stato il primo)
|
|
- Proxmox Backup Server
|
|
- Proxmox Datacenter Manager (alpha)
|
|
|
|
---
|
|
|
|
## Supporto della community
|
|
|
|
Il metodo principale per contattare la *community* e farsi supportare è quello
|
|
del forum ufficiale: [https://forum.proxmox.com/](https://forum.proxmox.com/).
|
|
|
|
In italiano c'è un canale dedicato su Telegram: [Proxmox Italia](https://t.me/utentiproxmoxitalia).
|
|
|
|
Un'interessante risorsa per tutti è [Proxmox VE Helper-Scripts](https://community-scripts.github.io/ProxmoxVE/), che è una raccolta di script da poter far girare direttamente su Proxmox VE per ottenere diverse applicazioni già pronte.
|
|
|
|
---
|
|
|
|
## Approccio *enterprise* o "casalingo"?
|
|
|
|
I due approcci sono quasi antitetici e tengono in considerazione esigenze
|
|
differenti
|
|
|
|
<center>
|
|
|
|

|
|
|
|
</center>
|
|
|
|
<!--
|
|
Approccio *enterprise*:
|
|
- Consumi **non** sono un problema
|
|
- Fattore di forma: *rack*
|
|
- Potenza di calcolo massima
|
|
- Necessità di HA
|
|
- Ridondanza **necessaria**
|
|
- Storage condiviso
|
|
- Backup frequenti e rapidi
|
|
- *Budget* di qualche decina di k€ o superiore
|
|
|
|
Approccio "casalingo":
|
|
- Consumi sono **importanti**
|
|
- Il più compatto possibile
|
|
- Potenza di calcolo << Consumi
|
|
- Non c'è necessità di HA
|
|
- Ridondanza limitata/assente
|
|
- No storage costosi condivisi
|
|
- Backup non frequenti, non rapidi
|
|
- *Budget* è fattore importante, tendente a zero
|
|
-->
|
|
|
|
---
|
|
|
|
## Configurazione dello *storage* locale
|
|
|
|
* Utilizzo di un *hardware RAID controller*: non è sempre il meglio!
|
|
* Modalità di configurazione:
|
|
- LVM-Thin
|
|
- ZFS
|
|
- btrfs
|
|
* Parametri avanzati differenti per ciascuna modalità
|
|
* ZFS e btrfs sono quelli che necessitano di più RAM per poter lavorare
|
|
⇒ tenerne conto nel dimensionamento!
|
|
* I dischi a sistema vengono usati *tutti* e per *tutta la loro dimensione* (ma: configurazione avanzata)
|
|
|
|
---
|
|
|
|
## Storage locale LVM-Thin: pro e contro
|
|
|
|
* Non supporta meccanismi di RAID (LVM non è ridondanza!)
|
|
* RAID Controller hardware
|
|
* Installazione Debian con `mdadm`, poi aggiornamento a Proxmox VE
|
|
* I dischi delle VM sono effettivamente dei *logical volume* di LVM
|
|
* Per via dell'estensione LVM-Thin, viene utilizzato solo lo spazio
|
|
effettivamente occupato dai dati all'interno del disco
|
|
* A seconda dei casi d'uso, l'installer finisce per dedicare troppo spazio al
|
|
sistema
|
|
|
|
---
|
|
|
|
## Storage locale ZFS: pro e contro
|
|
|
|
* In Proxmox VE è stato portato OpenZFS/ZFS on Linux (versione attuale: 2.3.2)
|
|
* Supporta uso di più dischi in ridondanza (RAID)
|
|
* *Just a Bunch Of Disks* (JBOD)
|
|
* con controller in modalità *Host Bus Adapter* (HBA)
|
|
* Uso della RAM considerevole (*ARC cache*, di default la metà della RAM)
|
|
* *Cache* opzionali, di lettura o scrittura, meglio se su dischi *flash*:
|
|
- Cache scrittura: *ZFS Intent Log* (ZIL) ⇒ `log`
|
|
- Cache lettura: *Level 2 ARC* (L2ARC) ⇒ `cache`
|
|
* Sicuramente il metodo più flessibile e potente
|
|
* Supporto via interfaccia web non completo
|
|
|
|
---
|
|
|
|
## Storage locale btrfs: pro e contro
|
|
|
|
* Richiede molte risorse sul sistema (RAM ma anche CPU)
|
|
* Meno utilizzato
|
|
* A parità di macchina, spesso si preferisce ZFS (per stabilità e *feature set*)
|
|
|
|
---
|
|
|
|
## Esempio di configurazione avanzata con ZFS — 1
|
|
|
|
- 2x dischi NVMe 120GB
|
|
- 3x dischi HDD 8TB
|
|
- RAM: almeno 26-32 GB dedicati a ZFS, resto per le VM
|
|
|
|
---
|
|
|
|
## Esempio di configurazione avanzata con ZFS — 2
|
|
|
|
* All'installer si indica di usare solo i due dischi NVMe, si chiede di configurare in modalità `mirror` e si lascia 60GB di spazio (diminuire `hdsize` a 60GB)
|
|
* Si partiziona lo spazio libero con due partizioni: una da 8GB e una da 52GB circa (CLI)
|
|
|
|
---
|
|
|
|
## Esempio di configurazione avanzata con ZFS — 3
|
|
|
|
* Viene creato un nuovo zpool `datastore` in modalità `raidz` (RAID 5) con i dischi rotativi; circa 16TB di spazio per i dischi delle VM e dei Container (via web)
|
|
* A questo zpool vengono agganciate le due *cache* (CLI)
|
|
* *Cache* di lettura: in modalità *striping* sulle due partizioni da 52GB circa
|
|
* *Cache* di scrittura: in modalità `mirror` sulle due partizioni da 8GB
|
|
* Si riconfigura `zfs_arc_max` per usare solo 26-32GB di RAM (CLI)
|
|
- 2-8 GB per la sola presenza di ZFS
|
|
- 1GB di RAM per ogni TB di storage "grezzo" (non considerando RAID)
|
|
|
|
---
|
|
|
|
## Considerazioni sulla CPU — 1
|
|
|
|
Caratteristiche notevoli della CPU:
|
|
|
|
* Numero di Core
|
|
* Numero di Thread - *Hyperthreading*
|
|
* Set di istruzioni (es. AVX2)
|
|
* Velocità di clock
|
|
* Consumo (*Thermal Design Point*, TDP)
|
|
|
|
<!--
|
|
Hyperthreading:
|
|
* Disabilita da BIOS
|
|
* Considerata **vulnerabilità**
|
|
|
|
Set istruzioni: verificare con massiccio uso di CT
|
|
-->
|
|
|
|
---
|
|
|
|
## Considerazioni sulla CPU — 2
|
|
|
|
In ambienti Enterprise si scelgono CPU *multicore* e *hyperthreading* e,
|
|
possibilmente, si installano più processori (*socket*).
|
|
|
|
In ambienti casalinghi, magari è preferibile utilizzare CPU appena meno
|
|
performanti ma più parsimoniose:
|
|
|
|
<center>
|
|
|
|
| Modello | Clock (GHz) | TDP (W) | Core | Thread |
|
|
|---------------------|:-----------:|:-------:|:----:|:------:|
|
|
| Intel Core i7 6700 | 3.40 | 65 | 4 | 8 |
|
|
| Intel Core i7 6700T | 2.80 | 35 | 4 | 8 |
|
|
|
|
</center>
|
|
|
|
---
|
|
|
|
## Considerazioni sulla RAM
|
|
|
|
* Dimensionamento anche sulla base del filesystem che si vuole utilizzare!
|
|
* *Ballooning*
|
|
* Condivisione della RAM su più macchine
|
|
* *Overprovisioning*: assegnare più RAM di quanta è fisicamente disponibile
|
|
sul sistema
|
|
|
|
---
|
|
|
|
## Dispositivi in *passthrough*
|
|
|
|
*Mettere in passthrough* un dispositivo hardware dell'host vuol dire **dedicarlo alla VM/CT** a cui viene associato.
|
|
|
|
Utile e ampiamente utilizzato per associare GPU a macchine virtuali specifiche:
|
|
* disegno CAD/3D, rendering, altre applicazioni grafiche
|
|
* *mining* di Cryptovalute
|
|
* Utilizzo GPU per Intelligenze Artificiali Generative
|
|
|
|
**Necessari**
|
|
* Supporto hardware dell'host (IOMMU: Intel VT-d, AMD AMD-Vi)
|
|
* Modifiche alla configurazione di Proxmox VE (non abilitato di default)
|