File systems (Italiano)

Translation Status:
This article is a localized version of
File systems
. Last translation date: 2024-02-07. You can help to synchronize the translation, if there were
changes
in the English version.
Articoli correlati
Partitioning
Device file#lsblk
File permissions and attributes
fsck
fstab
List of applications/Utilities#Mount tools
QEMU#Mounting a partition from a raw image
udev
udisks
umask
USB storage devices
Da
Wikipedia
:
Un file system (in acronimo FS) è una struttura dati deputata alla gestione e all'archiviazione dei file su un computer. Il termine viene utilizzato anche in riferimento al file system driver, ovvero tutta quella serie di programmi solitamente integrati nel sistema operativo che sono necessari ad operare il file system. E' importante non confondere i file system con i file database o le basi di dati più in generale. Anche se in alcuni casi possono sembrare (superficialmente) sovrapponibili sono progettati per servire casi d'uso molto diversi.
Ogni singola partizione del drive può essere configurata utilizzando uno dei tanti file system diversi disponibili. Ognuno presenta i propri vantaggi, svantaggi e le proprie idiosincrasie peculiari. Segue una breve panoramica dei file system supportati, i rispettivi link indirizzano alle pagine di Wikipedia che forniscono molte più informazioni.
Tipi di file system
Vedere
filesystems(5)
per una panoramica generale e
Wikipedia:Comparison of file systems
per un confronto dettagliato. I file system già caricati dal kernel o integrati sono elencati in
/proc/filesystems
, mentre tutti i moduli installati possono essere visualizzati eseguendo
ls /lib/modules/$(uname -r)/kernel/fs
.
File system in-tree e FUSE
File system
Comando per creazione
Utility userspace
Archiso
[1]
Documentazione kernel
[2]
Note
Bcachefs
bcachefs(8)
bcachefs-tools
Sì
Disponibile in Linux 6.7+, sperimentale
Btrfs
mkfs.btrfs(8)
btrfs-progs
Sì
btrfs.html
Stato stabilità
VFAT
mkfs.fat(8)
dosfstools
Sì
vfat.html
File system
Windows 9x
exFAT
mkfs.exfat(8)
exfatprogs
Sì
File system nativo in Linux 5.4
[3]
mkexfatfs(8)
exfat-utils
No
N/A (basato su FUSE)
F2FS
mkfs.f2fs(8)
f2fs-tools
Sì
f2fs.html
Dispositivi basati su flash
ext3
mkfs.ext3(8)
e2fsprogs
Sì
ext3.html
ext4
mkfs.ext4(8)
e2fsprogs
Sì
ext4.html
HFS
mkfs.hfsplus(8)
hfsprogs
AUR
No
hfs.html
File system
Mac OS Classic
HFS+
mkfs.hfsplus(8)
hfsprogs
AUR
No
hfsplus.html
File system
macOS
(8–10.12)
JFS
mkfs.jfs(8)
jfsutils
Sì
jfs.html
NILFS2
mkfs.nilfs2(8)
nilfs-utils
Sì
nilfs2.html
Dispositivi flash raw, ad es. scheda SD
NTFS
Sì
ntfs3.html
File system
Windows NT
file system.
Nuovo driver
disponibile dalla versione 5.15 di Linux.
ntfs-3g
[4]
No
ntfs.html
[
link interrotto
2024-07-30]
Vecchio driver. Supporto in scrittura estremamente limitato. I
kernel ufficialmente supportati
sono compilati senza l'opzione
CONFIG_NTFS_FS
, pertanto questo driver non è disponibile.
mkfs.ntfs(8)
Sì
N/A (basato su FUSE)
Driver FUSE con funzionalità estese.
ReiserFS
mkfs.reiserfs(8)
[
link interrotto
2025-05-13]
reiserfsprogs
AUR
Sì
ReiserFS è
deprecato
nella versione 5.18 di Linux e ne è prevista la rimozione dal kernel nel 2025.
UDF
mkfs.udf(8)
udftools
Sì
udf.html
XFS
mkfs.xfs(8)
xfsprogs
Sì
xfs.html
xfs-delayed-logging-design.html
[
link interrotto
2024-03-03]
xfs-self-describing-metadata.html
[
link interrotto
2024-03-03]
Impossibile ridurne le dimensioni
File system out-of-tree
File system
Comando per creazione
Patchset del kernel
Utility userspace
Note
APFS
mkapfs(8)
linux-apfs-rw-dkms-git
AUR
apfsprogs-git
AUR
File system
macOS
(versione 10.13 e successive). Sola lettura, sperimentale. Vedere anche la versione FUSE
apfs-fuse-git
AUR
.
Reiser4
mkfs.reiser4(8)
reiser4progs
AUR
ZFS
zfs-linux
AUR
,
zfs-dkms
AUR
zfs-utils
AUR
Esiste un suo porting:
OpenZFS
Journaling
Tutti i file system precedentemente citati, con le eccezioni di exFAT, FAT16/32, Reiser4 (opzionale), Bcachefs, Btrfs e ZFS, fanno ricorso al
journaling
. Il journal garantisce la fault resilience registrando in un log le modifiche prima che queste vengano effettivamente applicate al file system. In caso di un crash di sistema o di interruzione improvvisa dell'alimentazione elettrica, questi file system sono più veloci a tornare online e presentano una probabilità più bassa di corrompersi. Le registrazione dei log avviene in un'area appositamente dedicata del file system.
Non tutte le tecniche di journaling sono uguali. Ext3 ed ext4 offrono il journaling data-mode, il quale registra nei log sia i dati che i metadati, ma può eventualmente effettuare il log dei soli metadati. Il journaling data-mode comporta una perdita di velocità e non è attivo per impostazione predefinita. Similmente, Reiser4 offre i cosiddetti
"modelli di transazione"
che modificano non solo le funzionalità fornite ma anche la modalità di journaling. Questo file system utilizza diverse tecniche di journaling: un modello speciale chiamato
wandering logs
che elimina la necessità di scrivere su disco due volte,
write-anywhere
un approccio copy-on-write puro (pressoché equivalente a quello predefinito di btrfs, ma con una differenza sostanziale nella struttura dell'"albero") e un approccio combinato detto
ibrido
, che alterna in modo euristico i due precedenti.
Nota
Reiser4 presenta un comportamento pressoché equivalente a quello del journaling predefinito di ext4 (solo metadati) con l'uso del plugin
node41
, il quale offre anche metadati e checksum inline, opzionalmente combinati con la funzione wandering logs che può essere o meno disponibile a seconda del modello di transazione scelto al momento del montaggio.
Gli altri file system offrono una tipologia di journaling ordered-mode, che registra nei log solo i metadati. Benché tutti i file system con journaling sono in grado di riportare il sistema in uno stato valido in seguito a un crash, solo il journaling data-mode offre la massima protezione contro la corruzione e la perdita di dati. Tutto ciò tuttavia a prezzo di un compromesso in termini di prestazioni, in quanto il journaling data-mode effettua due operazioni di scrittura: la prima nel journal e la seconda su disco (Reiser4 evita questa limitazione grazie alla sua funzione "wandering logs"). Quando si sceglie il tipo di file system da utilizzare è opportuno valutare il compromesso necessario tra velocità del sistema e sicurezza dei dati. Reiser4 è l'unico file system che, in virtù del modo in cui è progettato, opera con piena atomicità e fornisce i checksum sia per i metadati che per i dati inline (un'operazione viene eseguita per intero o non viene eseguita del tutto e questo evita la corruzione o la distruzione di dati dovuta a operazioni solo parzialmente eseguite), ed è pertanto molto meno incline alla perdita di dati rispetto ad altri file system come
Btrfs
.
I file system basati su tecnologia copy-on-write (nota anche come write-anywhere), quali Reiser4, Btrfs, Bcachefs e ZFS, non necessitano di un journal tradizionale per proteggere i metadati, in quanto il loro aggiornamento non avviene mai in-place. Sebbene Btrfs continui a possedere un albero di log simile a un journal, questo viene utilizzato esclusivamente per velocizzare le operazioni di fdatasync/fsync.
File system basati su FUSE
Vedere
FUSE
.
File system configurabili in stack
eCryptfs
— Il file system enterprise crittografico è un pacchetto di software per la cifratura dei dischi in Linux. È implementato come un layer di cifratura conforme allo standard POSIX a livello di file system, con l'obiettivo di offrire funzionalità simili a quelle di GnuPG ma a livello di sistema operativo.
https://ecryptfs.org
||
ecryptfs-utils
mergerfs
— uno union file system basato su FUSE.
https://github.com/trapexit/mergerfs
||
mergerfs
AUR
mhddfs
— File system FUSE per HDD multipli, uno union file system basato su FUSE.
http://mhddfs.uvw.ru
||
mhddfs
AUR
overlayfs
— OverlayFS è un servizio di file system per Linux che offre un'implementazione union mount per altri file system.
https://docs.kernel.org/filesystems/overlayfs.html
||
linux
unionfs-fuse
— Un'implementazione a livello di spazio utente di Unionfs.
https://github.com/rpodgorny/unionfs-fuse
||
unionfs-fuse
AUR
File systems in sola lettura
EROFS
— Enhanced Read-Only File System è un file system in sola lettura leggero, che si prefigge di migliorare le prestazioni e offrire la compressione della capacità di archiviazione.
https://docs.kernel.org/filesystems/erofs.html
||
erofs-utils
SquashFS
— SquashFS è un file system compresso in sola lettura. SquashFS comprime i file, gli inode e le cartelle e supporta blocchi di dimensioni massime di 1 MiB, per una migliore compressione.
https://squashfs.sourceforge.net/
||
squashfs-tools
Clustered file system
BeeGFS
— Un file system parallelo, sviluppato e ottimizzato per computing ad alte prestazioni.
https://www.beegfs.io/c/
||
beegfs-client
AUR
Ceph
— Sistema di archiviazione unificato e distribuito, progettato per offrire prestazioni, affidabilità e scalabilità eccellenti.
https://ceph.com/
||
ceph
AUR
Glusterfs
— Cluster file system che offre una scalabilità fino a diversi petabyte.
https://www.gluster.org/
||
glusterfs
IPFS
— Un protocollo hypermedia peer-to-peer per rendere il web più veloce, più sicuro, e più aperto. IPFS mira a sostituire HTTP e a costruire un web migliore per tutti. Utilizza dei blocchi per archiviare parti di un file, ogni nodo di rete archivia solo il contenuto di proprio interesse, offre funzionalità di deduplicazione e distribuzione, oltre a un sistema scalabile, il cui unico limite è costituito dagli utenti. (Attualmente in stadio di sviluppo alpha)
https://ipfs.io/
||
kubo
MinIO
— MinIO offre alte prestazioni oltre ad archiviazione degli oggetti compatibile con S3.
https://min.io
||
minio
AUR
MooseFS
— MooseFS è un file system con tolleranza agli errori, ad alta disponibilità ed elevate prestazioni, scalabile e distribuito sulla rete.
https://moosefs.com
||
moosefs
OpenAFS
— Implementazione open source del file system distribuito AFS
https://www.openafs.org
||
openafs
AUR
OrangeFS
— OrangeFS è un file system di rete scalabile progettato per l'accesso parallelo e trasparente a sistemi di storage multi-server. Offre supporto MPI-IO ottimizzato per applicazioni parallele e distribuite. Semplifica l'utilizzo di soluzioni di storage parallelo non solo per i client Linux, ma anche per Windows, Hadoop, e WebDAV. È compatibile con gli standard POSIX. È parte del kernel Linux a partire dalla versione 4.6.
https://www.orangefs.org/
||
not packaged?
search in AUR
Sheepdog
— Un sistema di archiviazione di oggetti distribuito per volumi e servizi di container, gestisce dischi e nodi in modo intelligente.
https://sheepdog.github.io/sheepdog/
||
sheepdog
AUR
Tahoe-LAFS
— Tahoe Least-Authority File Store è un data store distribuito e un file system distribuito libero e aperto, sicuro, decentralizzato, con tolleranza agli errori e con distribuzione peer-to-peer.
https://tahoe-lafs.org/
||
tahoe-lafs
AUR
[
collegamento interrotto
: package not found]
File system con condivisione dei dischi
GFS2
— GFS2 permette a tutti i membri di un cluster di avere accesso diretto e simultaneo alla medesima unità di archiviazione a blocchi condivisa
https://pagure.io/gfs2-utils
||
gfs2-utils
AUR
OCFS2
— Oracle Cluster File System (versione 2) è un file system con condivisione dei dischi sviluppato da Oracle Corporation e rilasciato sotto licenza GNU General Public License
https://oss.oracle.com/projects/ocfs2/
||
ocfs2-tools
AUR
VMware VMFS
— VMFS (Virtual Machine File System) di VMware è utilizzato dalla suite di virtualizzazione server della società, vSphere.
https://www.vmware.com/products/vi/esx/vmfs.html
[
link interrotto
2024-07-30]
||
vmfs-tools
AUR
Identificazione dei file system esistenti
Per identificare i file system esistenti è possibile utilizzare
lsblk
:
$ lsblk -f
NAME   FSTYPE LABEL     UUID                                 MOUNTPOINT
sdb
└─sdb1 vfat   Transcend 4A3C-A9E9
Un eventuale file system, se presente, verrà indicato nella colonna
FSTYPE
. Se è già
montato
, apparirà nella colonna
MOUNTPOINT
.
Creazione di un file system
Di norma i file system vengono creati su una
partizione
, all'interno di container logici come
LVM
,
RAID
e
dm-crypt
, o su un normale file (vedere
Wikipedia:it:Loop device
). La presente sezione descrive come creare un file system su una partizione.
Nota
Un file system può essere scritto direttamente su un disco, noto come un
superfloppy
o su un
disco privo di partizioni
. L'utilizzo di questo metodo comporta delle limitazioni, in particolare se il
boot
viene eseguito da un drive di questo tipo. Vedere a tal proposito l'esempio con
Btrfs
.
Warning
Dopo aver creato un nuovo file system, è improbabile che i dati precedentemente presenti sulla partizione interessata possano essere recuperati.
Creare un backup di tutti i dati che si si desidera conservare
.
L'utilizzo che si farà di una partizione può restringere il ventaglio di scelta dei file system. Ad esempio, una
partizione di sistema EFI
può contenere un file system
FAT32
, e il file system che conterrà la cartella
/boot
deve essere supportato dal
boot loader
.
Prima di continuare,
identificare il dispositivo
su cui verrà creato il file system e controllare se è montato o meno. Ad esempio:
$ lsblk -f
NAME   FSTYPE   LABEL       UUID                                 MOUNTPOINT
sda
├─sda1                      C4DA-2C4D
├─sda2 ext4                 5b1564b2-2e2c-452c-bcfa-d1f572ae99f2 /mnt
└─sda3                      56adc99b-a61e-46af-aab7-a6d07e504652
I file system montati
devono
essere
smontati
prima di procedere. Nell'esempio precedente la partizione
/dev/sda2
contiene un file system ed è montata in
/mnt
. Per smontarla andrebbe eseguito:
# umount /dev/sda2
Per trovare solo i file system montati, vedere
#Elenco dei file system montati
.
Per creare un nuovo file system, utilizzare
mkfs(8)
. Vedere
#Tipi di file system
per trovare il tipo esatto di file system e le utility in spazio utente da installare per un particolare file system.
Ad esempio, per creare un nuovo file system di tipo
ext4
(comune per le partizioni dati Linux) su
/dev/sda1
, eseguire:
# mkfs.ext4 /dev/sda1
Suggerimento
Utilizzare la flag
-L
di
mkfs.ext4
per specificare un'
etichetta del file system
. È possibile utilizzare
e2label
per cambiare l'etichetta di un file system esistente.
I file system possono essere
ridimensionati
dopo la creazione, con alcune limitazioni. Ad esempio, le dimensioni di un file system
XFS
possono essere aumentate, ma non diminuite. Vedere
Wikipedia:Comparison of file systems#Resize capabilities
e la documentazione del rispettivo file system per i dettagli.
Il nuovo file system ora può essere montato nella cartella di preferenza.
Montaggio di un file system
Per montare manualmente un file system presente su un dispositivo (ad es., una partizione) in una cartella, utilizzare il comando
mount(8)
. Questo esempio esegue il montaggio di
/dev/sda1
in
/mnt
.
# mount /dev/sda1 /mnt
Questo comando collega il file system su
/dev/sda1
alla cartella
/mnt
, rendendo visibile il contenuto del file system stesso. Tutti i dati precedentemente esistenti nella cartella
/mnt
prima del comando non saranno più visibili fino a quando il file system non verrà smontato.
Il file
fstab
contiene le informazioni su come i dispositivi dovrebbero essere montati automaticamente, ove presenti. Vedere l'articolo
fstab
per maggiori informazioni su come modificare questo comportamento.
Se un dispositivo è specificato all'interno di
/etc/fstab
e si passa al comando di mount solo il dispositivo o il punto di montaggio, questa informazione verrà utilizzata per eseguire il montaggio. Ad esempio, se
/etc/fstab
contiene una linea che indica che
/dev/sda1
deve essere montato su
/mnt
, il comando seguente eseguirà automaticamente il montaggio del dispositivo in quella posizione:
# mount /dev/sda1
Oppure
# mount /mnt
mount
contiene diverse opzioni, molte delle quali dipendono dal file system specificato.
Le opzioni posso essere cambiate nei seguenti modi:
utilizzando le flag dalla linea di comando con il comando
mount
modificando
fstab
creando delle regole
udev
compilando il proprio kernel
o utilizzando script di montaggio specifici per il file system (disponibili in
/usr/bin/mount.*
).
Consultare questi articoli correlati e l'articolo inerente al file system di interesse per maggiori informazioni.
Suggerimento
I file system possono essere montati anche con
systemd-mount
in luogo di
mount
. Se il punto di montaggio non è specificato, il file system verrà montato in
/run/media/system/
identificatore_del_dispositivo
/
. Ciò permette di eseguire facilmente il montaggio di un file system senza bisogno di decidere la posizione. Vedere
systemd-mount(1)
per il suo utilizzo e per maggior dettagli.
Per eseguire il montaggio dei file system come utente non privilegiato, vedere
udisks#Usage
. Questa soluzione permette inoltre di eseguire il montaggio senza possedere i permessi di root, in assenza di un ambiente grafico completo o di un file manager che utilizzi udisks.
Elenco dei file system montati
Per visualizzare l'elenco di tutti i file system montati, utilizzare
findmnt(8)
:
$ findmnt
findmnt
accetta un'ampia serie di argomenti in grado di filtrare l'output e per mostrare informazioni aggiuntive. Ad esempio, accetta come argomento un dispositivo o un punto di montaggio per visualizzare solo le informazioni relative a quanto specificato:
$ findmnt /dev/sda1
findmnt
raccoglie le informazioni da
/etc/fstab
,
/etc/mtab
, e
/proc/self/mounts
.
Smontaggio di un file system
Per smontare un file system utilizzare
umount(8)
. È possibile specificare sia il dispositivo che lo contiene (ad es.,
/dev/sda1
) o il punto di montaggio (ad es.,
/mnt
):
# umount /dev/sda1
oppure
# umount /mnt
Risoluzione di problemi
"linux Structure needs cleaning"
Smontare
il file system ed eseguire
fsck
sul volume che presenta questo problema.
Vedere anche
filesystems(5)
systemd-mount(1)
Documentazione dei file system supportati da Linux
Articolo Wikipedia sui file system
Articolo Wikipedia sul comando mount