Western Digital опубликовала новую файловую систему Zonefs

Директор по программным разработкам компании Western Digital предложил в списке рассылки разработчиков ядра Linux новую файловую систему Zonefs, нацеленную на упрощение низкоуровневой работы с зонированными устройствами хранения. Zonefs связывает каждую зону в накопителе с отдельным файлом, который можно использовать для хранения данных в raw-режиме без манипуляции на уровне секторов и блоков.

Zonefs не является POSIX-совместимой ФС и ограничена достаточно узкой областью применения, позволяющей приложениям использовать файловый API вместо прямого обращения к блочному устройству при помощи ioctl. Связанные с зонами файлы требуют выполнения операций последовательной записи, начиная с конца файла (запись в режиме дополнения).

Предоставляемые в Zonefs файлы могут применяться для размещения поверх зонированных накопителей БД, использующие структуры хранения в форме лога LSM (log-structured merge), отталкиваясь от концепции один файл — одна зона хранения. Например, подобные структуры применяются в БД RocksDB и LevelDB. Предложенный подход даёт возможность сократить затраты на портирование кода, изначально рассчитанного на манипуляцию с файлами, а не блочными устройствами, а также организовать низкоуровневую работу с зонированными накопителями из приложений на языках программирования отличных от Си.

Под зонированными накопителями подразумеваются устройства на жёстких магнитных дисках или NVMe SSD, пространство для хранения в которых разбито на зоны, составляющие группы блоков или секторов, в которые допускается лишь последовательное добавление данных с обновлением целиком всей группы блоков.

Например, зонирование записи применяется в устройствах c черепичной магнитной записью (Shingled Magnetic Recording, SMR), в которых ширина дорожки меньше ширины магнитной головки, и запись производится с частичным перекрытием соседней дорожки, т.е. любая перезапись приводит к необходимости перезаписи всей группы дорожек. Что касается SSD-накопителей, то в них изначально имеется привязка к последовательным операциям записи с предварительной очисткой данных, но данные операции скрываются на уровне контроллера и прослойки FTL (Flash Translation Layer). Для повышения эффективности при некоторых видах нагрузки организация NVMe стандартизировала интерфейс ZNS (Zoned Namespaces), позволяющий напрямую обращаться к зонам в обход прослойки FTL.

В Linux для зонированных жёстких дисков начиная с ядра 4.10 предлагаются блочные устройства ZBC (SCSI) и ZAC (ATA), а начиная с выпуска 4.13 добавлен модуль dm-zoned, представляющий зонированный накопитель как обычное блочное устройство, скрывая применяемые в процессе работы ограничения записи. На уровне файловых систем поддержка зонирования уже интегрирована в ФС F2FS, а в разработке находится набор патчей для ФС Btrfs, адаптацию которой для зонированных накопителей упрощает работа в режиме CoW (copy-on-write). Работу Ext4 и XFS поверх зонированных накопителей можно организовать при помощи dm-zoned. Для упрощения перевода файловых систем предложен интерфейс ZBD, транслирующий операции случайной записи в файлы в потоки последовательных операций записи.

По материалам opennet.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *