Mikuláš Patočka, een van de ontwikkelaars van LVM en auteur van verschillende , gerelateerd aan de optimalisatie van de werking van opslagsystemen, werkt bij het bedrijf Red Hat, in de mailinglijst van Linux kernelontwikkelaars een nieuw bestandssysteem , gericht op het creëren van een compact en snel FS voor chips met niet-vluchtig geheugen (NVM, non-volatile memory, zoals NVDIMM), dat de prestaties van RAM combineert met de mogelijkheid voor permanente opslag van inhoud.
Bij de ontwikkeling van NVFS is rekening gehouden met de ervaring van de FS , in 2017 speciaal ontwikkeld voor NVM-geheugen, maar niet opgenomen in de Linux-kernel en ondersteuning voor Linux-kernels van 4.13 tot 5.1.
Het voorgestelde FS NVFS is aanzienlijk eenvoudiger dan NOVA (4972 regels code tegen 21459), biedt een utiliteit fsck, heeft een hogere prestaties, ondersteunt uitgebreide attributen (xattrs), beveiligingslabels, ACL en quotas, maar ondersteunt geen snapshots. NVFS is vergelijkbaar met
FS Ext4 en past goed in het model van bestandssystemen op basis van de VFS-subsysteem, waardoor het aantal tussenlagen tot een minimum kan worden beperkt en het kan worden uitgevoerd met een module die geen patches in de kernel vereist.
NVFS maakt gebruik van de kerninterface voor directe toegang tot niet-vluchtige geheugentoestellen om de paginacache heen. Voor het optimaliseren van de interactie met NVM-geheugen, dat byte-addressing gebruikt, wordt de inhoud van de opslag weergegeven in de lineaire adresruimte van de kernel zonder gebruik te maken van de traditionele laag van block devices en tussencache. Voor het opslaan van de inhoud van directories wordt gebruikgemaakt van waarbij elke bestandsnaam is gehashed en de hashwaarde wordt gebruikt bij het zoeken in de boom.
De integriteit van gegevens wordt gewaarborgd door middel van het mechanisme "" (zoals in UFS van FreeBSD en FFS van OpenBSD) zonder gebruik van journaling. Om beschadiging van bestanden in NVFS te voorkomen, worden gegevenswijzigingsoperaties zo gegroepeerd dat een crash niet kan leiden tot verlies van blokken of inode, en de integriteit van structuren wordt hersteld met behulp van de utiliteit fsck. De fsck-utiliteit werkt in een multi-threaded modus en biedt een prestatie op het niveau van het doorlopen van 1,6 miljoen inode per seconde.
In NVFS heeft de boomstructuurkopie van de bronteksten van de Linux-kernel uitgevoerd op NVM-geheugen ongeveer 10% sneller dan NOVA, 30% sneller dan ext4 en 37% sneller dan XFS. In de gegevenszoektest was het NVFS-bestandssysteem 3% sneller dan NOVA, en 15% sneller dan ext4 en XFS (maar met actieve schijfcache was NOVA 15% trager).
In de test met een miljoen directory-operaties overtrof NVFS NOVA met 40%, ext4 met 22% en XFS met 46%. Bij de simulatie van database-activiteit overtrof het NVFS-bestandssysteem NOVA met 20%, ext4 met 18 keer en XFS met 5 keer. In de fs_mark-test waren de prestaties van NVFS en NOVA ongeveer gelijk, terwijl ext4 en XFS ongeveer 3 keer achterbleven.
De achterstand van traditionele bestandssystemen op NVM-geheugen is te wijten aan het feit dat ze niet zijn ontworpen voor byte-adressering, die wordt toegepast in niet-vluchtig geheugen, dat eruitziet als gewoon RAM. Lezen van reguliere opslagmedia zorgt voor atomiciteit van de operatie op het niveau van lezen/schrijven van sectoren, terwijl NVM-geheugen toegang biedt op het niveau van individuele machinewoorden. Bovendien proberen traditionele bestandssystemen de intensiteit van toegang tot het opslagmedium te verminderen, dat als vanzelfsprekend trager wordt beschouwd dan RAM, en ze proberen operaties te groeperen voor sequentieel lezen bij het gebruik van harde schijven, verzoeken te verwerken, met fragmentatie om te gaan en prioriteiten van verschillende operaties te scheiden. Voor NVM-geheugen zijn dergelijke complicaties overbodig, aangezien de toegangssnelheid vergelijkbaar is met die van RAM en de volgorde van toegang er niet toe doet.
Bron: opennet.ru
