Mikuláš Patočka, uno dei sviluppatori di LVM e autore di diversi , relative all'ottimizzazione del lavoro dei sistemi di storage, attualmente impiegato presso Red Hat, ha presentato nella mailing list degli sviluppatori del kernel Linux un nuovo file system , mirato a creare un file system compatto e veloce per chip di memoria non volatile (NVM), come NVDIMM, che combina le prestazioni della RAM con la possibilità di memorizzare permanentemente il contenuto.
Nello sviluppo di NVFS sono state considerate le esperienze del file system , creato nel 2017 specificamente per la memoria NVM, ma non incluso nel kernel Linux e supportato dai kernel Linux dalla versione 4.13 fino alla 5.1.
Il file system NVFS proposto è significativamente più semplice di NOVA (4972 righe di codice contro 21459), offre un'utilità fsck, ha prestazioni superiori, supporta attributi estesi (xattrs), etichette di sicurezza, ACL e quote, ma non supporta snapshot. NVFS è simile a
Ext4 e si integra bene nel modello dei file system basato sul sottosistema VFS, il che consente di ridurre al minimo il numero di strati e di utilizzare un modulo che non richiede patch nel kernel.
NVFS utilizza l'interfaccia del kernel per l'accesso diretto ai dispositivi di memoria persistente bypassando la cache di pagina. Per ottimizzare l'uso della memoria NVM, che utilizza l'indirizzamento byte, il contenuto del dispositivo è mappato in uno spazio di indirizzamento lineare del kernel senza utilizzare il tradizionale livello di dispositivi a blocchi e cache intermedie. Per memorizzare il contenuto delle directory si utilizza , in cui ogni nome di file è hashato e il valore dell'hash è utilizzato durante la ricerca nell'albero.
L'integrità dei dati è garantita tramite il meccanismo "" (come in UFS di FreeBSD e in FFS di OpenBSD) senza l'uso del journaling. Per evitare la corruzione dei file in NVFS, le operazioni di modifica dei dati sono raggruppate in modo tale che un crash non possa portare alla perdita di blocchi o inode, e l'integrità delle strutture viene ripristinata tramite l'utility fsck. L'utility fsck opera in modalità multithreading e garantisce prestazioni a livello di scansione di 1,6 milioni di inode al secondo.
In NVFS ha completato l'operazione di copia dell'albero con i testi sorgente del kernel Linux su memoria NVM circa il 10% più velocemente di NOVA, il 30% più velocemente di ext4 e il 37% più velocemente di XFS. Nel test di ricerca dei dati, il file system NVFS si è dimostrato più veloce di NOVA del 3% e di ext4 e XFS del 15% (ma con una cache disco attiva, NOVA è risultata più lenta del 15%).
Nel test su un milione di operazioni con le directory, NVFS ha superato NOVA del 40%, ext4 del 22% e XFS del 46%. Durante la simulazione dell'attività del DBMS, il file system NVFS ha superato NOVA del 20%, ext4 di 18 volte e XFS di 5 volte. Nel test fs_mark, le prestazioni di NVFS e NOVA sono risultate sostanzialmente equivalenti, mentre ext4 e XFS sono rimasti indietro di circa 3 volte.
Il rallentamento dei file system tradizionali sulla memoria NVM è dovuto al fatto che non sono progettati per l'indirizzamento byte a byte, applicato nella memoria non volatile, che appare come una normale RAM. La lettura da una memoria tradizionale garantisce l'atomicità dell'operazione a livello di lettura/scrittura del settore, mentre la memoria NVM fornisce accesso a livello di singole parole di macchina. Inoltre, i file system tradizionali cercano di ridurre l'intensità delle operazioni sul supporto, considerato intrinsecamente più lento della RAM, ed eliminano tentativi di raggruppare operazioni per garantire letture sequenziali quando si utilizzano dischi rigidi, gestiscono le code di richiesta, affrontano la frammentazione e dividono le priorità di esecuzione delle diverse operazioni. Per la memoria NVM, tali complicazioni sono superflue, poiché la velocità di accesso ai dati è comparabile a quella della RAM e l'ordine di accesso non è rilevante.
Fonte: opennet.ru
