exFAT (Extended File Allocation Table), o FAT64, è un file system introdotto da Microsoft nel 2006 insieme a Windows Embedded CE 6.0 e pensato specificamente per memorie di tipologia flash e dispositivi di archiviazione di dimensioni contenute. Il file system si è successivamente diffuso anche su Linux e, con la prossima versione del kernel, vale a dire Linux 6.13, delle nuove patch ne migliora ulteriormente le prestazioni.
exFAT è anche stato ideato come alternativa a FAT32, risultando particolarmente indicato nei casi in cui NTFS risulti poco flessibile, per via della sua complessa struttura d’organizzazione dei dati, introducendo diversi miglioramenti come un limite teorico fino a 16 exabyte per i file, così come una maggior dimensione dei cluster, la possibilità di memorizzare fino a 1000 file per cartella, supporto per le liste di controllo degli accessi, migliori prestazioni e supporto per Transaction-safe FAT.
Linux 6.13: migliorate le prestazioni del file system exFAT con una delle recenti patch
Su Linux 6.13 il file system è stato ottimizzato nelle sue funzionalità, riducendo la traversata della catena FAT. Di seguito la descrizione delle patch inviate per la richiesta di inserimento nel kernel:
-Gestiscilo come directory vuota se il cluster di avvio della voce di flusso non è valido.
-La dimensione valida della voce di Steam non può essere maggiore della dimensione dei dati.
Se valid_size non è valido, gestisci data_size.
– Sposta il controllo di allineamento Direct-IO prima di estendere la dimensione valida.
– Risolvi il problema uninit-value segnalato da syzbot.
– Ottimizza per trovare il set di voci di directory in write_inode, rinomina, scollega.
L’ultima voce in particolare descrive una funzionalità che consente di ottimizzare il set di voci di directory find per scrivere operazioni di inode, rename e unlink. Lo sviluppatore dietro il lavoro di ottimizzazione ha spiegato che:
“Prima di questo commit, ->dir e ->entry di exfat_inode_info registrano il primo cluster della directory padre e l’indice delle voci di directory a partire da questo cluster.
Il set di voci di directory verrà ottenuto durante write-back-inode/rmdir/unlink/rename. Se i cluster della directory padre non sono continui, la catena FAT verrà attraversata dal primo cluster della directory padre per trovare il cluster in cui si trova ->entry.
Dopo questo commit, ->dir registra il cluster in cui si trova la prima voce di directory nel set di voci di directory e ->entry registra l’indice delle voci di directory nel cluster, in modo che non ci sia quasi bisogno di accedere alla FAT quando si ottiene il set di voci di directory.”
Un’altra patch recente per Linux 6.13, realizzata dallo stesso Linus Torvalds, si è invece occupata di migliorare lo spazio utente.