Директор по разработке программного обеспечения в Western Digital предложила новую файловую систему Zonefs en список рассылки разработчиков ядро linux, С цель упрощения низкоуровневой работы с накопителями по зонам. Zonefs связывает каждую зону на диске с отдельным файлом, который можно использовать для хранения данных в необработанном режиме без манипуляций на уровне секторов и блоков.
Зонефс не является POSIX-совместимой файловой системой и ограничена для довольно ограниченной области, которая позволяет приложениям использовать файловый API вместо прямого доступа к блочному устройству с помощью ioctl. Файлы, связанные с зонами, требуют последовательных операций записи начиная с конца файла (запись в режиме плагина).
Файлы, представленные в Zonefs, могут использоваться для размещения баз данных поверх зонированных единиц с использованием структур записей слияния структурированных записей (LSM), начиная с по понятию архива: складское помещение.
Например, аналогичные структуры используются в базах данных RocksDB и LevelDB. Предлагаемый подход позволяет снизить затраты на перенос кода, который изначально был разработан для управления файлами, а не для блокировки устройств, а также организовать низкоуровневую работу с зонированными модулями из приложений на языках программирования, отличных от C.
Под зонированные объекты предназначен для устройств HDD или NVMe SSD, пространство хранения, разделенное на зоны, секторы или блоки, составляющие группу, в которой разрешено только последовательное обновление данных также по всей группе блоков.
Например, записывающее зонирование используется на устройствах с Галька магнитная запись (SMR), в котором ширина дорожки меньше ширины магнитной головки, а запись ведется с частичным перекрытием соседней дорожки, то есть cuЛюбая перезапись приводит к необходимости перезаписать всю группу треков.
Дэмиен Ле Моаль из Western Digital описывает Zonefs как
Zonefs не является файловой системой, совместимой с POSIX. Его цель - упростить реализацию поддержки зонированных блочных устройств в приложениях за счет замены необработанных обращений к файлам блочных устройств на более богатый файловый API, избегая использования прямых ioctl файлов блочных устройств, которые могут быть более темными для разработчиков.
Примером этого подхода является реализация древовидной структуры LSM в зонированных блочных устройствах, позволяющая хранить SSTables в файле зоны, аналогичном обычной файловой системе, а не в диапазоне секторов зонированного устройства.
Что касается SSD-накопителей, изначально тесть ссылка на последовательные операции записи с предварительной очисткой данных, но эти операции скрыты на уровне контроллера и уровне FTL. (Слой перевода Flash). Чтобы повысить эффективность при определенных типах нагрузки, NVMe стандартизировал интерфейс ZNS (Zoned Namespaces), который обеспечивает прямой доступ к зонам без прохождения уровня FTL.
Linux для зонированных жестких дисков начиная с ядра 4.10 предлагает блочные устройства ZBC (SCSI) и ZAC (ATA) и от версия 4.13, добавлен модуль dm-zoned, который представляет зонированный диск как обычное блочное устройство, скрывая ограничения записи, используемые во время работы.
На уровне файловой системы, поддержка зонирования уже интегрирована в файловую систему F2FS и набор исправлений разрабатывается для файловой системы Btrfs, которая упрощена для адаптации к зонированным дискам за счет работы в режиме CoW копирования при записи. Ext4 и XFS, работающие на зонированных дисках, можно организовать с помощью dm-zoned.
Для упрощения трансляции файловых систем предлагается интерфейс ZBD, переводящий произвольные операции записи в файлы в последовательности последовательных операций записи.
источник: https://blog.westerndigital.com