Lezione approfondita sui Sistemi Operativi
1. Cos'è un sistema operativo (OS)
Un sistema operativo è il software fondamentale che gestisce l'hardware del computer e fornisce servizi alle applicazioni e all'utente. Senza un OS, il computer non sarebbe utilizzabile.
Le sue funzioni principali sono:
Gestione della CPU (processi e thread)
Gestione della memoria RAM
Gestione dei dispositivi di I/O (dischi, rete, USB, ecc.)
Gestione dei filesystem
Sicurezza (utenti, permessi, isolamento)
Interfaccia utente (grafica o a riga di comando)
Esempi di sistemi operativi:
Desktop: Windows, macOS, Linux (Mint, Ubuntu, Fedora)
Server: Linux (Debian, AlmaLinux, Rocky), Windows Server, *BSD
2. Architettura a 32 bit e 64 bit
2.1 Differenze concettuali
La differenza tra 32 bit e 64 bit riguarda:
La dimensione dei registri della CPU
Lo spazio di indirizzamento della memoria
Le istruzioni supportate dalla CPU
Caratteristica |
32 bit |
64 bit |
|---|---|---|
Indirizzi di memoria |
2³² |
2⁶⁴ |
RAM teorica indirizzabile |
~4 GB |
~16 Exabyte |
Registri CPU |
Più piccoli |
Più grandi |
Prestazioni |
Limitate |
Migliori su carichi moderni |
2.2 Gestione della RAM
Sistemi a 32 bit
Possono indirizzare al massimo 4 GB di RAM
In pratica, l'OS ne utilizza circa 3–3,5 GB
Parte dello spazio di indirizzi è riservata a:
BIOS/UEFI
Scheda video
Dispositivi hardware
Tecniche come PAE (Physical Address Extension) permettono di superare i 4 GB teorici, ma:
Ogni processo resta limitato a 4 GB
Maggiore complessità e minori prestazioni
Sistemi a 64 bit
Possono gestire decine o centinaia di GB di RAM (dipende dall'OS)
Migliore gestione della memoria virtuale
Processi possono usare grandi quantità di RAM
Essenziali per:
Server
Virtualizzazione
Database
Applicazioni moderne
2.3 CPU a 32 bit e 64 bit
CPU a 32 bit
Istruzioni più semplici
Limiti evidenti su RAM e prestazioni
Ormai obsolete
Tipiche di:
Vecchi PC
Embedded datati
CPU a 64 bit
Registri più ampi → calcoli più rapidi
Supporto a istruzioni moderne (SSE, AVX, AES)
Maggiore sicurezza (ASLR, NX bit)
Standard attuale per desktop e server
👉 Un OS a 64 bit richiede una CPU a 64 bit, mentre una CPU a 64 bit può eseguire anche OS a 32 bit (con limitazioni).
3. Filesystem: ruolo e importanza
Il filesystem stabilisce come i dati sono:
Salvati
Organizzati
Protetti
Recuperati
Le differenze principali riguardano:
Dimensione massima dei file
Dimensione massima del disco
Journaling
Prestazioni
AffidabilitÃ
4. FAT32
Caratteristiche
Molto vecchio (MS-DOS)
Massima compatibilitÃ
Limiti
File massimo: 4 GB
Volume massimo: 2 TB
Nessun journaling
Nessuna gestione permessi
Uso tipico
Chiavette USB
Dispositivi embedded
Compatibilità universale
5. NTFS
Caratteristiche
Filesystem principale di Windows
Journaling
Supporto permessi ACL
Vantaggi
File e volumi molto grandi
Compressione
Crittografia (EFS)
Affidabile
Svantaggi
Proprietario
Prestazioni inferiori su Linux
Uso tipico
Desktop Windows
Server Windows
6. ext4
Caratteristiche
Filesystem standard Linux
Evoluzione di ext2/ext3
Journaling
Vantaggi
Molto stabile
Ottime prestazioni
Supporto file fino a 16 TB
Recupero rapido dopo crash
Svantaggi
Meno avanzato di filesystem di nuova generazione
Uso tipico
Desktop Linux
Server Linux general purpose
7. XFS
Caratteristiche
Filesystem ad alte prestazioni
Ottimizzato per file grandi
Vantaggi
Estrema scalabilitÃ
Ottimo per carichi server
Molto veloce con grandi volumi
Svantaggi
Recupero dati più complesso
Poco adatto a dischi piccoli
Uso tipico
Server
Database
Storage enterprise
8. Btrfs
Caratteristiche
Filesystem di nuova generazione
Copy-on-write (CoW)
Funzioni avanzate
Snapshot
Subvolume
Compressione trasparente
RAID software integrato
Checksum dei dati
Vantaggi
Protezione contro corruzione dati
Snapshot istantanei
Svantaggi
Maggiore complessitÃ
Prestazioni variabili
Uso tipico
Server moderni
NAS
Sistemi con snapshot (backup)
9. Altri filesystem importanti
exFAT
Caratteristiche:
Evoluzione di FAT32
Sviluppato da Microsoft
Supportato nativamente da Windows, macOS e Linux moderni
Vantaggi:
Nessun limite dei 4 GB per file
Ottimo per memorie flash
Ampia compatibilitÃ
Svantaggi:
Nessun journaling
Meno robusto di filesystem moderni
Uso tipico:
Chiavette USB
Schede SD di grandi dimensioni
ZFS
Caratteristiche:
Filesystem e volume manager avanzato
Originario di Sun Microsystems
Copy-on-write
Funzioni avanzate:
Snapshot e rollback
Checksum end-to-end
Compressione
RAID-Z
Autorepair dei dati
Vantaggi:
Altissima affidabilitÃ
Ideale per grandi sistemi storage
Svantaggi:
Molto esigente in RAM
Non incluso direttamente nel kernel Linux
Uso tipico:
Server enterprise
NAS (TrueNAS)
ReFS
Caratteristiche:
Filesystem moderno Microsoft
Progettato per resilienza
Vantaggi:
Integrità dei dati
Autoriparazione
Scalabilità elevata
Svantaggi:
Supporto limitato
Solo Windows Server / versioni specifiche
Uso tipico:
Server Windows
Storage resiliente
F2FS
Caratteristiche:
Filesystem Flash-Friendly
Ottimizzato per SSD ed eMMC
Vantaggi:
Riduce write amplification
Ottime prestazioni su flash
Svantaggi:
Meno diffuso
Funzioni avanzate limitate
Uso tipico:
Dispositivi embedded
Android
JFS
Caratteristiche:
Sviluppato da IBM
Journaling
Vantaggi:
Basso utilizzo CPU
Stabile
Svantaggi:
Poco aggiornato
Comunità ridotta
Uso tipico:
Sistemi Linux legacy
UFS
Caratteristiche:
Unix File System storico
Vantaggi:
Semplice
Affidabile
Svantaggi:
Mancanza di funzioni moderne
Uso tipico:
Sistemi BSD
tmpfs
Caratteristiche:
Filesystem in RAM
Vantaggi:
Estremamente veloce
Nessuna scrittura su disco
Svantaggi:
Volatile
Usa RAM
Uso tipico:
/tmp
Cache di sistema
10. Confronto filesystem
Filesystem |
Journaling |
Snapshot |
Max file |
Uso tipico |
FAT32 |
❌ |
❌ |
4 GB |
USB |
exFAT |
❌ |
❌ |
Molto grande |
Flash |
NTFS |
✅ |
❌ |
Molto grande |
Windows |
ext4 |
✅ |
❌ |
16 TB |
Linux |
XFS |
✅ |
❌ |
Molto grande |
Server |
Btrfs |
✅ |
✅ |
Molto grande |
NAS / Server |
ZFS |
✅ |
✅ |
Molto grande |
Enterprise |
ReFS |
✅ |
❌ |
Molto grande |
Windows Server |
F2FS |
❌ |
❌ |
Molto grande |
Flash |
tmpfs |
❌ |
❌ |
RAM |
Temporaneo |
10. Sistemi operativi Desktop vs Server
OS Desktop
Caratteristiche:
Interfaccia grafica
Ottimizzati per l'utente
Avvio rapido
Supporto hardware ampio
Esempi:
Windows 11
Linux Mint / Ufficio zero
Ubuntu Desktop
Uso tipico:
Ufficio
Casa
Multimedia
OS web Server
Caratteristiche:
Stabilità a lungo termine
Aggiornamenti controllati
Ottimizzati per servizi di rete
Spesso senza GUI
Esempi:
AlmaLinux
Debian Server piu usato e meno esoso in termini da RAM
Windows Server
Uso tipico:
Web server
Mail server
Database
Virtualizzazione
11. Quale filesystem scegliere (livello sistemista / server)
Desktop Linux (SSD / NVMe)
ext4 → scelta solida, semplice, prevedibile
Btrfs → se servono snapshot e rollback
👉 Consigliato: ext4 per workstation, btrfs
per ambienti di test
Server Web / Mail / Applicativi
ext4 → stabilità , recovery rapido
XFS → alte prestazioni su grandi volumi
👉 Consigliato: XFS per web ad alto traffico, ext4
per mail server
Database (MySQL, PostgreSQL)
XFS → I/O parallelo efficiente
ext4 (tuning dedicato)
❌ Evitare CoW (Btrfs/ZFS) senza configurazioni specifiche
NAS / Storage / RAID
ZFS → massima integrità e snapshot
Btrfs → buon compromesso
👉 ZFS ideale per RAID-Z e storage critico
Backup
Btrfs → snapshot incrementali
ZFS → send/receive
12. Filesystem e SSD / NVMe
ext4
Supporta TRIM
Bassa write amplification
Ottimo per SSD consumer
XFS
Prestazioni elevate su NVMe
Ottimo parallelismo
Recovery più lento
Btrfs
Copy-on-write → più scritture
Ottimo con compressione (
zstd)Ideale per snapshot
ZFS
Estrema affidabilitÃ
Richiede molta RAM
Consigliato solo su server dedicati
13. Comandi pratici (Linux)
Verifica architettura CPU
uname -m
lscpu | grep Architecture
Verifica filesystem
lsblk -f
df -T
Creazione filesystem
mkfs.ext4 /dev/sdX
mkfs.xfs /dev/sdX
mkfs.btrfs /dev/sdX
Mount ottimizzato SSD
mount -o noatime,discard /dev/sdX /mnt
14. Buone pratiche sistemistiche
Separare
/,/var,/homeEvitare swap eccessivo su SSD
Monitorare SMART
Allineare partizioni
Backup automatici
15. Finale
Scenario |
Filesystem consigliato |
Desktop Linux |
ext4 |
Server web |
XFS |
Mail server |
ext4 |
Database |
XFS |
NAS |
ZFS / Btrfs |
Backup |
Btrfs / ZFS |
16. Virtualizzazione e filesystem (KVM, Docker, Overlay)
La virtualizzazione introduce ulteriori livelli di astrazione tra hardware, filesystem e applicazioni. La scelta del filesystem diventa quindi critica per prestazioni, affidabilità e manutenzione.
Per l’uso su VPS ci sono diverse alternative a KVM a seconda del livello di virtualizzazione desiderato, delle prestazioni e del supporto del provider. Ecco una panoramica dettagliata:
1. KVM (Kernel-based Virtual Machine)
Tipo: virtualizzazione completa (full virtualization)
Vantaggi:
Ogni VPS ha un kernel proprio
Supporto a sistemi guest diversi (Linux, Windows)
Ottime prestazioni su CPU moderne
Snapshot e live migration possibili con strumenti come
libvirt/virt-manager
Svantaggi:
Più overhead rispetto a container
Richiede supporto hardware (VT-x / AMD-V)
Uso tipico: VPS con piena indipendenza del kernel, hosting multi-OS, ambienti isolati
2. Xen
Tipo: paravirtualizzazione e full virtualization
Vantaggi:
Bassa latenza per la paravirtualizzazione Linux
Stabile e collaudato in hosting VPS (es. OVH, Linode)
Supporta domini guest Linux e Windows
Svantaggi:
Complessità di setup
Meno supporto recente per hardware moderno rispetto a KVM
Uso tipico: VPS Linux con prestazioni elevate e isolamenti forti
3. OpenVZ / Virtuozzo
Tipo: container-based virtualization (OS-level virtualization)
Vantaggi:
Molto leggero → basso overhead
Boot VPS molto rapido
Condivisione kernel host ottimizzata
Svantaggi:
Tutti i VPS devono usare lo stesso kernel dell’host
Meno flessibile per sistemi guest diversi da Linux
Uso tipico: hosting massivo Linux VPS a basso costo, siti web e applicazioni leggere
4. LXC / LXD (Linux Containers)
Tipo: container virtualization (OS-level)
Vantaggi:
VPS ultra leggeri
Gestione avanzata con snapshot e profili
Consumo RAM minimo
Svantaggi:
Condivisione kernel → limitazioni su modulazioni kernel
Alcune applicazioni non compatibili senza privilegio root completo
Uso tipico: VPS Linux altamente scalabile, microservizi, test/CI/CD
5. VMware ESXi / vSphere
Tipo: hypervisor bare-metal
Vantaggi:
Stabilità enterprise
Ottimo supporto hardware e snapshot
Strumenti di gestione avanzata (vCenter)
Svantaggi:
Licenze a pagamento
Non sempre disponibile nei provider VPS pubblici
Uso tipico: VPS enterprise o private cloud, laboratori, test multi-OS
6. Proxmox VE
Tipo: gestione ibrida KVM + LXC
Vantaggi:
KVM per VM full, LXC per container leggeri
Web interface avanzata
Backup e snapshot integrati
Svantaggi:
Richiede server fisico dedicato (non VPS shared)
Uso tipico: server privati o cloud privato VPS, laboratorio home / aziendale
🔹 Riepilogo per VPS
Tecnologia |
Tipo |
OS guest |
Overhead |
Note principali |
|---|---|---|---|---|
KVM |
Full virtualization |
Linux, Windows |
Medio |
Standard VPS moderno, kernel indipendente |
Xen |
Full / paravirtualization |
Linux, Windows |
Medio |
Storico, stabile, meno usato oggi |
OpenVZ / Virtuozzo |
Container-based |
Linux solo |
Basso |
Molto leggero, kernel condiviso |
LXC / LXD |
OS-level containers |
Linux solo |
Molto basso |
Ideale microservizi, VPS leggeri |
VMware ESXi |
Full virtualization |
Multi-OS |
Medio |
Enterprise, licenze costose |
Proxmox |
KVM + LXC |
Linux / Windows |
Medio / basso |
Hypervisor ibrido, gestione semplice |
Docker e container su VPS
1. Cos’è Docker
Docker è una piattaforma di containerizzazione, basata su isolamento a livello di kernel.
A differenza di KVM o Xen, non crea un kernel separato, ma usa il kernel dell’host.
Ogni container è un ambiente isolato con filesystem, rete e processi separati.
2. Vantaggi dei container
Leggeri: avviano molto più velocemente di una VM.
Efficienza RAM/CPU: condividono risorse dell’host.
Portabilità : le immagini Docker funzionano su qualsiasi VPS Linux compatibile.
Snapshot e rollback: con i layer delle immagini.
3. Limitazioni
Tutti i container condividono il kernel host → impossibile usare kernel differente.
Alcune operazioni richiedono privilegi elevati.
Persistenza dei dati va gestita tramite volumi o bind mount.
4. Storage Docker
Docker utilizza driver di storage per gestire filesystem dei container.
Driver più comuni:
overlay2 (default su Linux moderne)
aufs (deprecato)
Btrfs / ZFS (backend nativo, supportato opzionale)
OverlayFS:
Layer read-only (immagine)
Layer read-write (container)
Scrittura tramite Copy-on-Write (CoW)
5. Filesystem host consigliato
Filesystem host |
Compatibilità Docker |
Note |
|---|---|---|
ext4 |
✅ overlay2 ottimo |
stabile e performante |
XFS (ftype=1) |
✅ overlay2 ottimo |
ottimo su VPS di produzione |
Btrfs |
⚠ driver dedicato |
snapshot nativo, più overhead |
ZFS |
⚠ driver dedicato |
snapshot e resilienza, RAM intensiva |
Best practice produzione: ext4 o XFS + overlay2.
6. Persistenza dei dati
Evitare di salvare dati critici nel container stesso.
Usare volumi Docker o bind mount verso directory host.
docker run -d -v /srv/mysql:/var/lib/mysql mysql:latest
Così i dati sopravvivono a eventuali ricreazioni o aggiornamenti del container.
7. Docker vs VM su VPS
Caratteristica |
Container Docker |
VM KVM/Xen |
|---|---|---|
Kernel |
condiviso host |
indipendente |
Avvio |
istantaneo |
30-60s |
Overhead |
basso |
medio-alto |
Portabilità |
molto alta |
alta |
Isolamento |
limitato |
completo |
Snapshot |
layer / commit |
snapshot hypervisor |
Uso di Docker su VPS
8. Quando usare Docker su VPS
Applicazioni isolate e leggere (web app, microservizi)
Gestione multi-tenant senza creare VM separate
Deploy rapido di stack software (LAMP, Node.js, PostgreSQL)
Ambiente di sviluppo replicabile e portabile
9. Requisiti
VPS Linux moderno (Ubuntu, Debian, CentOS, AlmaLinux)
Kernel ≥ 3.10 (per OverlayFS)
Minimo 512 MB RAM per container singolo, consigliati ≥1–2 GB per più container
Spazio su disco adeguato per immagini e volumi
Docker vs VPS tradizionale
Aspetto |
Docker su VPS |
VM KVM/Xen |
|---|---|---|
Risorse |
Condivide kernel host |
Indipendente |
Avvio |
< 1s |
30-60s |
Overhead |
Basso |
Medio-alto |
Portabilità |
Alta |
Alta |
Snapshot |
Layer / commit |
Hypervisor |
Backup |
Volumi e immagini |
Snapshot VM |