F2FS potrà usare ZSTD per la compressione

Di sicuro la varietà di filesystem disponibili è ormai una caratteristica di Linux, e tale abbondanza è dovuta all’architettura del Kernel: piuttosto che integrare ogni filesystem internamente, è disponibile un’interfaccia standard (VFS – Virtual FileSystem) che l’implementazione del filesystem deve rispettare. In questa maniera lo sviluppo di filesystem alternativo diventa (relativamente) facile, mentre il Kernel dovrà preoccuparsi di una sola interfaccia, idealmente senza richiede modifiche.

Samsung qualche tempo fa si è dedicata alla creazione di un nuovo filesystem specificatamente studiato per la memoria usata dai cellulari, sfruttando la presenza Kernel Linux in Android per l’implementazione, prendendo spunto per il nome da quello delle memorie stesse: Flash-Friendly File-System, abbreviato in F2FS.
Ora il principale sviluppatore è Huawei.

L’obbiettivo è usare logiche di allocazione dei dati che permettano prestazioni superiori rispetto ai filesystem generici.
Un primo metodo particolare è poter impostare parametri tecnici specifici per ogni device al mount, come opzioni. Normalmente, le opzioni regolano come il Kernel comunica attraverso VFS, non come si deve comportare il filesystem nelle sue logiche interne.
Inoltre, le memorie Flash non sono riscrivibili all’infinito (per quanto il numero permesso di riscritture dovrebbe garantire decenni di uso), quindi una delle caratteristiche peculiari diventa la riduzione al minimo delle operazioni di scrittura.

E forse in quest’ottica, già per il Kernel 5.6 era stata aggiunta la compressione trasparente dei dati. Questa opzione, presente in altri filesystem Linux (come btrfs), ma anche nell’NTFS di Windows fin dagli esordi, consiste nel comprimere i dati dei file prima di scriverli sul disco: nella maggior parte delle situazioni, si usa meno spazio – il che indica anche un minor numero di operazioni di scrittura.
Per la compressione sono stati impiegati LZO ed LZ4: algoritmi leggeri, adatti alla limitata potenza di calcolo della maggior parte di dispositivi mobili, che al costo di rapporti di compressione modesti garantisce velocità nell’esecuzione. Dettaglio questo non trascurabile, per non introdurre lentezze nelle operazioni su disco.

Negli ultimi tempi un algoritmo sta diventando monopolista: zstd. Questo algoritmo riesce a coniugare alta velocità di decompressione (ma anche compressione) con risparmi di spazio notevoli. Ed è anche già usato per lo stesso scopo in btrfs, nonché previsto per ZFS.
Anche F2FS implementerà questa alternativa. Sono gli amici di Phoronix a raccontarci che, per il Kernel 5.7, sembra sia pronta la patch. Il default sarà LZ4 (più veloce di LZO ma con prestazioni di compressioni simili), ma zstd sarà disponibile.

L’uso ottimale di F2FS prevede la conoscenza di dettagli tecnici piuttosto particolari, ma le caratteristiche intrinseche potrebbero renderlo molto attraente per tutte quelle situazioni in cui la memoria principale sia del tipo flash. Sì, il caso tipico è (il solito) Raspberry.
L’uso della compressione (come per zswap) risulterà molto utile sia per prestazioni che – soprattutto – per longevità del sistema, e la possibilità di avere zstd è davvero interessante.
Non ci resta che aspettare il Kernel 5.7 su Raspbian… o tenterete prima?

Ho coltivato la mia passione per l'informatica fin da bambino, coi primi programmi BASIC. In età adulta mi sono avvicinato a Linux ed alla programmazione C, per poi interessarmi di reti. Infine, il mio hobby è diventato anche il mio lavoro.
Per me il modo migliore di imparare è fare, e per questo devo utilizzare le tecnologie che ritengo interessanti; a questo scopo, il mondo opensource offre gli strumenti perfetti.

Tags: ,