os e FileSystem

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, /home

  • Evitare 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



no image
  • Titolo : os e FileSystem
  • Etichette :
++++
Recente.
Post più vecchio