Микулаш Паточка (Mikuláš Patočka), един от разработчиците на LVM и автор на редица , свързани с оптимизацията на работата на системите за съхранение, работещ в компанията Red Hat, в списъка на разработчиците на ядрото на Linux новата файлова система , насочена към създаването на компактна и бърза файлова система за чипове с нестабилна памет (NVM, non-volatile memory, например NVDIMM), съчетаваща производителността на оперативната памет с възможността за постоянно съхранение на съдържанието.
При разработването на NVFS е взет предвид опитът на файловата система , създадена през 2017 г. специално за NVM-памет, но неприета в ядрото на Linux и поддържаща ядрото на Linux от 4.13 до 5.1.
Предложената файлова система NVFS е значително по-проста от NOVA (4972 реда код срещу 21459), предлага утилита fsck, притежава по-висока производителност, поддържа разширени атрибути (xattrs), етикети за сигурност, ACL и квоти, но не поддържа снимки. NVFS е близка до
файловата система Ext4 и добре се вписва в модела на файловите системи, базирани на подсистемата VFS, което позволява минимизиране на броя на прослойките и обхождане с модул, който не изисква патчове в ядрото.
NVFS използва интерфейса на ядрото за директен достъп до устройства с постоянна памет, заобикаляйки страничния кеш. За оптимизация на работата с паметта NVM, в която се прилага байтова адресация, съдържанието на устройството е отразено в линейното адресно пространство на ядрото без традиционното ниво на блочни устройства и междинния кеш. За съхранение на съдържанието на директориите се използва (radix tree), в което всяко име на файл е хеширано и стойността на хеша се използва при търсене в дървото.
Цялостността на данните се осигурява чрез механизма "" (както в UFS от FreeBSD и в FFS от OpenBSD) без приложение на журнализация. За предотвратяване на повреда на файловете в NVFS операциите по изменение на данните са групирани по такъв начин, че срив не може да доведе до загуба на блокове или inode, а цялостността на структурите се възстановява с помощта на утилитата fsck. Утилитата fsck работи в многопоточен режим и осигурява производителност на ниво от 1.6 милиона inode в секунда.
В NVFS изпълнява операция по копиране на дърво с оригиналните текстове на ядрото на Linux на NVM-памет с около 10% по-бързо от NOVA, с 30% по-бързо от ext4 и с 37% по-бързо от XFS. В теста за търсене на данни, файлова система NVFS се оказа по-бърза от NOVA с 3%, а от ext4 и XFS с 15% (но при активно дисково кеширане NOVA беше по-бавна с 15%).
В теста на милион операции с каталози NVFS изпревари NOVA с 40%, ext4 с 22%, а XFS с 46%. При симулацията на активност на СУБД, файлова система NVFS изпревари NOVA с 20%, ext4 18 пъти и XFS 5 пъти. В теста fs_mark, показателите на NVFS и NOVA бяха на приблизително едно ниво, докато ext4 и XFS изостанаха с около 3 пъти.
Изоставането на традиционните файлови системи на NVM-памет е обусловено от факта, че те не са проектирани за байтова адресация, използвана в енергонезависимата памет, която изглежда като обикновен RAM. Четенето от обикновени носители осигурява атомарност на операцията на ниво четене/запис на сектора, докато NVM-паметта осигурява достъп на ниво отделни машинни думи. Освен това традиционните файлови системи се опитват да намалят интензивността на достъп до носителя, който се разглежда като значително по-бавен от оперативната памет, и да групират операциите, за да осигурят последователно четене при използване на механични дискове, обработват опашки от заявки, борят се с фрагментацията и разделят приоритетите на изпълнението на различни операции. За NVM-паметта подобни усложнения са излишни, тъй като скоростта на достъп до данните е сравнима с RAM, а редът на достъпа няма значение.
Източник: opennet.ru
