Микулаш Паточка, един от разработчиците на LVM и изобретател на няколко изобретения за оптимизиране на съхранението в Red Hat, представи новата файлова система NVFS в пощенския списък на ядрото на Linux.
Тази нова система има за цел да създаде бърза и компактна файлова система за енергонезависими чипове памет (NVM, например NVDIMM), който съчетава производителността на RAM с възможност за постоянно съхраняване на съдържание.
При разработване на NVFS беше взет предвид опитът на FS NOVA, през 2017 г. създаден специално за NVM памет, но не е включен в ядрото на Linux и с ограничена поддръжка за ядра на Linux от 4.13 до 5.1.
Предложената FS NVFS тя е много по-проста от NOVA (4972 реда код срещу 21459), осигурява помощна програма fsck, има по-добра производителност, поддържа разширени атрибути (xattrs), етикети за сигурност, ACL и квоти, но не поддържа моментни снимки.
Архитектурата на NVFS е близка до FS Ext4 и той се вписва добре в модела на файловата система, базиран на подсистемата VFS, което позволява да се намали броят на средните слоеве и да се справи с модул, който не изисква корекции на ядрото.
NVFS използва интерфейса на ядрото DAX за директен достъп до устройства постоянно съхранение, заобикаляйки кеша на страниците. За да се оптимизира работата с NVM памет, която използва байтово адресиране, съдържанието на устройството се преобразува в линейното адресно пространство на ядрото, без да се използва традиционният слой на блоково устройство и междинен кеш. Той се използва за съхраняване на съдържанието на директориите на кореновото дърво (кореново дърво), в което всяко прохеширано име на файл и хеш стойност се използва за търсене в дървото.
Целостта на данните се осигурява чрез механизма за "актуализации" (както при FreeBSD UFS и OpenBSD FFS), без да се използва дневникът.
За да се избегне повреда на файлове в NVFS, lОперациите за обмен на данни са групирани такъв, че сривът не може да доведе до загуба на блокове или иноди, а целостта на структурите се възстановява от помощната програма fsck.
Помощната програма fsck е многонишкова и осигурява груба сила от 1,6 милиона иноди в секунда.
- В тестовете NVFS извърши операция за копиране на дърво с източници на ядро на Linux в NVM памет приблизително 10% по-бързо от NOVA, 30% по-бързо от ext4 и 37% по-бързо от XFS.
- В теста за търсене на данни NVFS е по-бърз от NOVA с 3% и ext4 и XFS с 15% (но с активен кеш на диска NOVA е установено, че е с 15% по-бавен).
- В теста за Million Directory Operations NVFS превъзхожда NOVA с 40%, ext4 с 22% и XFS с 46%. При симулация на DBMS активност файловата система NVFS превъзхожда NOVA с 20%, ext4 с 18 пъти и XFS с 5 пъти. В теста fs_mark NVFS и NOVA бяха приблизително еднакви, докато ext4 и XFS бяха около 3 пъти по-назад.
Изоставането на традиционните FS в паметта на NVM се дължи на факта, че те не са предназначени за байтово адресиране, използвано в енергонезависима памет, което прилича на нормална RAM.
Обикновеното четене на единица осигурява атомност на работа на ниво сектор за четене / запис, докато NVM паметта осигурява достъп на ниво отделна машинна дума.
В допълнение, традиционните файлови системи се опитват да намалят интензивността на медийния достъп, което очевидно се счита за по-бавно от RAM, а също така се опитват да обединяват операции, за да осигурят последователно четене при използване на твърди дискове, обработка на опашки за заявки, борба с фрагментацията и отделни приоритети за изпълнение на различни операции.
За NVM паметта такива усложнения са излишни, тъй като скоростта на достъп до данни е сравнима с RAM.
Fuente: https://lkml.org/lkml/2020/9/15/517