NOVA (файловая система) - NOVA (filesystem)

НОВАЯ ЗВЕЗДА
Разработчики)Цзянь (Эндири) Сюй, Лу Чжан, Стивен Свонсон, Калифорнийский университет в Сан-Диего, Департамент компьютерных наук и инженерии
Предварительный выпуск
Ядро Linux 4.13[1]
Написано вC
Операционная системаLinux
ТипФайловая система Водитель
ЛицензияGPL
Интернет сайтgithub.com/ NVSL/ linux-nova

В НОВАЯ ЗВЕЗДА (энергонезависимая память ускоренный) файловая система Открытый исходный код, файловая система с лог-структурой для байтовой адресации постоянная память (Например энергонезависимый двухрядный модуль памяти (NVDIMM) и 3D XPoint DIMM) для Linux.

NOVA разработана специально для постоянных запоминающих устройств с байтовой адресацией и направлена ​​на обеспечение высокопроизводительных, атомарных операций с файлами и метаданными, а также отказоустойчивости. Для достижения этих целей NOVA сочетает в себе несколько методов, используемых в других файловых системах. NOVA использует бревенчатая структура, копирование при записи (КОРОВА), ведение журнала, и обновления метаданных с журнальной структурой для обеспечения надежных атомарность гарантии, и он использует комбинированную репликацию, метаданные контрольные суммы, и RAID 4 четность для защиты данных и метаданных от ошибок мультимедиа и программных ошибок. Он также поддерживает контрольные точки для облегчения резервного копирования.

Файловая система

NOVA была разработана в Калифорнийский университет в Сан-Диего в Лаборатории энергонезависимых систем факультета компьютерных наук и инженерии.[2][3] Патчи изначально были доступны для версии 4.12 Ядро Linux.[4] По состоянию на 2017 год это ограничено x86-64 Linux и не готов к слиянию с вышестоящим ядром.[3]

Структура журнала

NOVA - это прежде всего файловая система с журнальной структурой, но она отличается от других файловых систем с журнальной структурой в нескольких отношениях. Во-первых, вместо того, чтобы использовать один журнал для всей файловой системы, каждый индекс имеет собственный специализированный журнал, в котором записываются обновления inode.[3] Это позволяет увеличить параллелизм в файловых операциях, поскольку разные потоки может работать с инодами параллельно. Во-вторых, журналы не содержат данных о файлах, а только обновления метаданных, что приводит к уменьшению размера журналов. В-третьих, журналы не хранятся в физически непрерывной памяти. Вместо этого NOVA хранит журналы в связанный список страниц памяти 4 КБ.

NOVA использует журналы для обеспечения атомарности операций, которые влияют на отдельный файл (например, запись в файл или изменение его метаданных). Для этого NOVA записывает запись в журнал на пустое место после конца журнала, а затем атомарно обновляет указатель inode на конец журнала.

Копирование при записи

NOVA использует копирование при записи (COW) для обновления данных файла. Когда программа записывает данные в файл, NOVA выделяет некоторые неиспользуемые страницы памяти для хранения данных и записывает данные в них. Затем он добавляет в журнал индексного дескриптора запись журнала, которая указывает на новые страницы и описывает их логическое расположение в файле. Поскольку добавление записи в журнал является атомарным, запись также является атомарной.

Ведение журнала

Некоторые файловые операции (например, перемещение файла из одного каталога в другой) требуют изменения нескольких индексных дескрипторов. Чтобы сделать эти операции атомарными, NOVA использует простой ведение журнала механизмы. Сначала он записывает новые записи журнала в концы индексов, на которые повлияет операция, а затем использует журнал для записи необходимых обновлений указателей хвоста журнала индексов. Затем он отмечает журнал как зафиксированный и применяет обновления к указателям хвоста.

Защита метаданных

NOVA использует репликацию и контрольные суммы для обеспечения защиты от повреждения метаданных из-за ошибок носителя и программные ошибки. Каждая структура метаданных (например, индексы, суперблоки и записи журнала) содержит CRC32 контрольная сумма, которая позволяет NOVA определять, изменилось ли содержимое структур с ее помощью. NOVA также хранит две копии каждой структуры данных - «первичную» и «реплику» - и хранит их далеко друг от друга в памяти.

Когда NOVA обращается к структуре метаданных, она сначала пересчитывает контрольную сумму как на первичной, так и на реплике. Если одна из проверок приводит к несоответствию, NOVA устраняет повреждение, используя другую копию. Если ни одна из контрольных сумм не совпадает, структура теряется и NOVA возвращает ошибку.

Защита данных

NOVA использует RAID 4 для защиты файловых данных. Он разделяет каждую страницу размером 4 КБ на 512-байтовые полосы и сохраняет полосу четности в выделенной области постоянной памяти. Он также вычисляет (и сохраняет копию) CRC32 контрольная сумма для восьми полос данных и полосы четности.

Когда NOVA читает страницу, она подтверждает контрольную сумму на каждой полосе. Если одна из полосок повреждена, она пытается восстановить полосу, используя биты четности. Если никакие другие полосы не испытали повреждения данных, восстановление будет успешным. В противном случае восстановление не удастся, содержимое страницы будет потеряно, и NOVA вернет ошибку.

Рекомендации

  1. ^ "Linux Nova". Получено 21 сентября 2017 - через GitHub.
  2. ^ «NOVA: новейшая файловая система Linux, предназначенная для постоянной памяти - Phoronix». Фороникс.
  3. ^ а б c "Файловая система NOVA [LWN.net]". LWN.net.
  4. ^ «NOVA: новая файловая система для постоянной памяти [LWN.net]». LWN.net.

внешняя ссылка