Mikuláš Patočka, einer der Entwickler von LVM und Autor einer Reihe , die mit der Optimierung von Speichersystemen zusammenhängen, der bei Red Hat arbeitet, im Entwickler-Newsletter des Linux-Kernels ein neues Dateisystem , das darauf abzielt, ein kompaktes und schnelles Dateisystem für Chips mit nichtflüchtigem Speicher (NVM, non-volatile memory, wie z.B. NVDIMM) zu schaffen, das die Leistung von RAM mit der Möglichkeit der dauerhaften Speicherung des Inhalts kombiniert.
Bei der Entwicklung von NVFS wurde die Erfahrung des Dateisystems berücksichtigt, das 2017 speziell für NVM-Speicher entwickelt wurde, aber nicht in den Linux-Kernel aufgenommen und unterstützt von den Linux-Kerneln 4.13 bis 5.1.
Das vorgeschlagene Dateisystem NVFS ist deutlich einfacher als NOVA (4972 Codezeilen im Vergleich zu 21459), bietet ein fsck-Dienstprogramm, hat eine höhere Leistung, unterstützt erweiterte Attribute (xattrs), Sicherheits-Tags, ACLs und Quotas, unterstützt jedoch keine Snapshots. NVFS ähnelt
dem Dateisystem Ext4 und lässt sich gut in das Modell der Dateisysteme auf der Basis des VFS-Subsystems integrieren, was die Anzahl der Schichten minimiert und es ermöglicht, mit einem Modul auszukommen, das keine Patches im Kernel erfordert.
NVFS verwendet die Kernel-Schnittstelle für den direkten Zugriff auf Geräte mit permanentem Speicher, um den Seiten-Cache zu umgehen. Zur Optimierung der Arbeit mit NVM-Speicher, der Byte-Adressierung verwendet, wird der Inhalt des Speichermediums in den linearen Adressraum des Kernels abgebildet, ohne die traditionelle Ebene von Blockgeräten und zwischenspeicher zu verwenden. Zum Speichern des Inhalts von Verzeichnissen wird ein verwendet, in dem jeder Dateiname gehasht und der Hashwert zur Suche im Baum verwendet wird.
Die Integrität der Daten wird durch den Mechanismus „“ (ähnlich wie im UFS von FreeBSD und im FFS von OpenBSD) ohne Verwendung von Journaling gewährleistet. Um eine Beschädigung von Dateien in NVFS zu vermeiden, werden Datenänderungsoperationen so gruppiert, dass ein Absturz nicht zu einem Verlust von Blöcken oder Inodes führen kann, und die Integrität der Strukturen wird mithilfe des fsck-Dienstprogramms wiederhergestellt. Das fsck-Dienstprogramm arbeitet im Multithread-Modus und bietet eine Leistung von 1,6 Millionen Inodes pro Sekunde.
Im NVFS hat den Kopiervorgang des Baumangebots mit den ursprünglichen Texten des Linux-Kerns im NVM-Speicher etwa 10% schneller als NOVA, 30% schneller als ext4 und 37% schneller als XFS durchgeführt. Im Datensuch-Test erwies sich das NVFS als 3% schneller als NOVA und 15% schneller als ext4 und XFS (aber bei aktivem Cache war NOVA 15% langsamer).
Im Test mit einer Million Katalogoperationen übertraf NVFS NOVA um 40%, ext4 um 22% und XFS um 46%. Bei der Simulation von Datenbankaktivitäten übertraf das NVFS NOVA um 20%, ext4 um das 18-Fache und XFS um das 5-Fache. Im fs_mark-Test lagen die Werte von NVFS und NOVA auf einem ähnlichen Niveau, während ext4 und XFS etwa dreimal hinterherhinkten.
Der Rückstand der traditionellen FS im NVM-Speicher liegt darin begründet, dass sie nicht für die Byte-Adressierung ausgelegt sind, die im nicht-flüchtigen Speicher verwendet wird, der wie gewöhnlicher RAM aussieht. Das Lesen von herkömmlichen Speichermedien gewährleistet atomare Operationen auf der Ebene des Lesens/Schreibens von Sektoren, während der Zugriff auf NVM-Speicher auf der Ebene einzelner Maschinenworte erfolgt. Darüber hinaus versuchen traditionelle FS, die Intensität des Zugriffs auf das Medium zu verringern, das als nachweislich langsamer als der Arbeitsspeicher angesehen wird, und versuchen, Operationen zu gruppieren, um sequentielles Lesen bei der Verwendung von Festplatten zu gewährleisten, Anfragen zu verarbeiten, Fragmentierung zu bekämpfen und Prioritäten verschiedener Operationen zu trennen. Für NVM-Speicher sind solche Komplikationen überflüssig, da die Zugriffszeiten mit dem RAM vergleichbar sind und die Zugriffsreihenfolge keine Rolle spielt.
Quelle: opennet.ru
