Red Hat развивает новую ФС NVFS, эффективную для NVM-памяти
18 сентября 2020 года
Микулаш Паточка (Mikuláš Patočka), один из разработчиков LVM и автор ряда изобретений, связанных с оптимизацией работы систем хранения, работающий в компании Red Hat, представил в списке рассылки разработчиков ядра Linux новую файловую систему NVFS, нацеленную на создание компактной и быстрой ФС для чипов энергонезависимой памяти (NVM, non-volatile memory, например NVDIMM), сочетающих производительность ОЗУ с возможностью постоянного хранения содержимого.
При разработке NVFS учтён опыт ФС NOVA, в 2017 году созданной специально для NVM-памяти, но не принятой в состав ядра Linux и ограниченной поддержкой ядер Linux с 4.13 по 5.1.Предложенная ФС NVFS значительно проще NOVA (4972 строк кода против 21459), предоставляет утилиту fsck, обладает более высокой производительностью, поддерживает расширенные атрибуты (xattrs), метки безопасности, ACL и квоты, но не поддерживает снапшоты. Aрхитектура 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-памяти подобные усложнения излишни, так как скорость обращения к данным сопоставима с ОЗУ, а порядок доступа не имеет значения.
Источники править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.