Red Hat розвиває нову ФС NVFS, ефективну для NVM-пам'яті

Мікулаш Паточка (Mikuláš Patočka), один із розробників LVM та автор ряду винаходів, пов'язаних з оптимізацією роботи систем зберігання, що працює в компанії Red Hat, представив у списку розсилки розробників ядра Linux нову файлову систему NVFS, націлену створення компактної і швидкої ФС для чіпів енергонезалежної пам'яті (NVM, non-volatile memory, наприклад NVDIMM), що поєднують продуктивність ОЗУ з можливістю постійного зберігання вмісту.

Під час розробки NVFS враховано досвід ФС NEW, у 2017 році створеної спеціально для NVM-пам'яті, але не прийнятої до складу ядра Linux та обмеженою підтримкою ядер Linux з 4.13 до 5.1.
Запропонована ФС NVFS значно простіше NOVA (4972 рядків коду проти 21459), надає утиліту fsck, має більш високу продуктивність, підтримує розширені атрибути (xattrs), мітки безпеки, ACL та квоти, але не підтримує снапшоти. Архітектура NVFS близька до
ФС Ext4 і добре укладається в модель файлових систем на основі підсистеми VFS, що дозволяє звести до мінімуму кількість прошарків і обійтися модулем, що не вимагає внесення патчів в ядро.

NVFS використовує інтерфейс ядра DAX для прямого доступу до пристроїв постійної пам'яті в обхід сторінкового кешу. Для оптимізації роботи з пам'яттю NVM, в якій застосовується байтова адресація, вміст накопичувача відображається в лінійному адресному просторі ядра без застосування традиційного рівня блокових пристроїв та проміжного кешу. Для зберігання вмісту каталогів використовується базисне дерево (radix tree), в якому кожне ім'я файлу прохешовано і значення хешу використовується при пошуку дерева.

Цілісність даних забезпечується за допомогою механізмуsoft updates» (як у 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-пам'яті обумовлено тим, що вони не розраховані на байтову адресацію, що застосовується в незалежній пам'яті, яка виглядає як звичайна ОЗУ. Читання з звичайних накопичувачів забезпечує атомарність операції на рівні читання/запису сектора, тоді як NVM пам'ять забезпечує доступ на рівні окремих машинних слів. Крім того, традиційні ФС намагаються знизити інтенсивність звернення до носія, який розглядається як повільніше, ніж оперативна пам'ять, а також намагаються групувати операції для забезпечення послідовного читання при застосуванні жорстких дисків, обробляти черги запитів, боротися з фрагментацією і розділяти пріоритети виконання різних операцій. . Для NVM-пам'яті подібні ускладнення зайві, оскільки швидкість звернення до даних можна порівняти з ОЗУ, а порядок доступу не має значення.

Джерело: opennet.ru

Додати коментар або відгук