YAFFS (Yet Another Flash File System)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 14:34, 31 января 2019.
YAFFS (Yet Another Flash File System)
Yaffs omega logo.png
Полное название Yet Another Flash File System
Содержимое каталога Log-structured
Распределение файлов Tnodes
Limits
Макс. количество файлов 32GB
Features
Даты зарегистрирован конец 2001-начало 2002г.
Другие
Операционная система Android
Firefox OS
Linux
Windows CE
pSOS
eCos
ThreadX RTOS

YAFFS (англ. Yet Another Flash File System) — файловая система, разработанная специально для использования на NAND накопителях. Автором является Чарльз Мэннинг из Новой Зеландии. Работает со страницами памяти размером в 512 байт + 16 служебных байт. Старые модели флеш-памяти позволяли выполнять всего 2 или 3 цикла перезаписи, при отказе записи на страницу, YAFFS помечала её как сбойную, выставляя байт в служебной области.

YAFFS1

Нет никакой специальной процедуры для инициализации файловой системы YAFFS, кроме простого стирания флэш-памяти. При обнаружении поврежденного блока YAFFS следует схеме Smart media, заключающейся в маркировке пятого байта резервной области блока. С этого момента блоки, помеченные как таковые, остаются нераспределенными.

Чтобы записать данные файла, YAFFS изначально записывает целую страницу (фрагмент в терминологии YAFFS), которая описывает метаданные файла, такие как метки времени, имя, путь и т.д. Новому файлу присваивается уникальный идентификатор объекта; каждый блок данных в файле будет содержать этот уникальный идентификатор объекта в резервной области. YAFFS поддерживает древовидную структуру в ОЗУ физического расположения этих блоков. Когда кусок больше не является допустимым (файл удаляется, или части файла перезаписываются), YAFFS отмечает определенный байт в резервной области блока как "грязный". Когда весь блок (32 страницы) отмечен как грязный, YAFFS может стереть блок и освободить место. Когда в файловой системе мало свободного места, YAFFS объединяет группу хороших страниц в новый блок. YAFFS затем восстанавливает пространство, используемое грязными страницами в каждом из исходных блоков.

Когда система YAFFS монтирует флэш-устройство NAND, она должна посетить каждый блок, чтобы проверить достоверность данных путем сканирования его запасной области. С этой информацией потом он воссоздает в памяти структуры данных.[Источник 1]

YAFFS2

YAFFS2 разработана на базе YAFFS, формат данных остался таким же для обратной совместимости. Главное отличие — новая версия файловой системы позволяет в современных моделях флеш-памяти пропускать страницы, помеченные для однократной записи. Так же YAFFS2 использует еще более абстрактные определения флеш-памяти, которые позволяют использовать эту файловую систему с большим количеством разных типов памяти со своей геометрией, правилами определения.[Источник 2]

Таким образом, в большинстве файловых систем для флэш-памяти блоки с неактуальной информацией просто помечаются как таковые. Однако в YAFFS2 эти блоки дополнительно маркируются числами возрастающей арифметической прогрессии. Во время монтирования происходит сканирование файловой системы, при котором пакеты с актуальными данными легко идентифицируются. Расположение блоков хранится в виде деревьев в оперативной памяти, что позволяет значительно ускорить монтирование за счет снимков. Снимок подразумевает сохранение этих деревьев во флэш-память при размонтировании. Тогда при последующем монтировании эти структуры быстро считываются и восстанавливаются в памяти. Быстрое монтирование -- одно из главных преимуществ YAFFS2 перед аналогами.[Источник 3]

Рисунок 1 – Сокращение времени монтирования в YAFFS2 за счет снимков

Сравнение YAFFS, YAFFS1, YAFFS2

Существует две версии Yaffs кода: исходный код Yaffs и текущий Yaffs2 код. Кодовая база Yaffs2 поддерживает функциональность, предоставляемую кодовой базой Yaffs, а также расширяется новыми функциями для обеспечения дополнительных режимов работы, что особенно важно для работы с более крупными и современными частями NAND. Кодовая база Yaffs2 поддерживает режим работы Yaffs1 в режиме обратной совместимости. Oтличие:

  • Yaffs1 является более простым режимом работы, который использует маркеры удаления для отслеживания состояния.
  • Yaffs2-более сложный режим, который был разработан для поддержки крупных современных типов Flash, в частности, к тому, что не используются маркеры удаление.
  • Yaffs означает операции, общие для обоих.
  • Yaffs1 первоначально работал только с 512-байтовыми устройствами страниц, но был расширен для поддержки больших флэш-страниц.
  • Yaffs2 первоначально был разработан для 1K или больших размеров страниц, но может использоваться с меньшими страницами с помощью внутриполосных тегов.[Источник 4]

Объекты YAFFS

В Yaffs-speak объектом является все, что хранится в файловой системе. это:

  • Обычные файлы
  • Директории
  • Жесткие ссылки
  • Символические ссылки

Все объекты идентифицируются уникальным целочисленным идентификатором объекта (obj_id).В стандартной модели POSIX, используемой Linux, существуют индексные дескрипторы и записи каталогов .Записи каталога предоставляют механизм именования, используемый для поиска индексных дескрипторов.В POSIX каждый каталог может иметь ноль, одну или несколько записей:Нулевые записи на узел реже понимаются.

История развития файловых систем

Файловые системы прошли очень долгий по компьютерным меркам путь, усложняясь параллельно с развитием операционных систем и аппаратного обеспечения компьютеров. Так, используемая в MS-DOS 1.0 (1981 г.) FAT (или FAT12) изначально предназначалась для работы с гибкими дисками. Свое название она получила от наименования таблицы размещения файлов — File Allocation Table. Благодаря 12-битной адресации и кластеру в 4 Кбайта она, однако, поддерживала разделы до 16 Мбайт. В целом же это была простая файловая система, обеспечивавшая основные функции — имя файла в формате 8.3, каталоги, атрибут файла, время создания (изменения). Чуть позже с добавлением 16-битной адресации и максимального размера кластера в 32 Кбайта появилась FAT16, поддерживавшая разделы до 2 Гбайт. В первой версии Windows 95 была реализована поддержка длинных имен файлов (до 255 символов) и сохранение регистра символов в названии. Эта модификация получила название VFAT.

В Windows 95 OSR2 появилась файловая система, которую и сейчас можно встретить на многих домашних компьютерах (в офисах все-таки больше думают о сохранности данных) — FAT32. В целях обратной совместимости в FAT32 были введены незначительные изменения по сравнению с VFAT. 32-битная адресация теоретически позволяла работать с разделами до 2 терабайт. Корневой каталог (напомним, что каталог — это по сути своей файл с идентификаторами вложенных файлов и каталогов) теперь не располагался в определенном месте, а представлял собой обычную цепочку кластеров, таким образом, было снято старое ограничение на количество элементов в корне. Загрузочный сектор раздела дублировался для отказоустойчивости. В FAT32 были внесены еще некоторые «заплатки», кое-как подтянувшие характеристики файловой системы до нужд своего времени. Но по сути своей это была все та же FAT для MS DOS 1.0.

Файловая система NTFS (New Technology File System) была разработана еще для Windows NT 3.1, однако долго находилась в тени мейнстрима того времени — FAT, которому Microsoft в каждой новой версии «подкрашивала фасад» для соответствия запросам времени. Основным недостатком NTFS была большая требовательность к системным ресурсам, компьютеры просто не могли извлечь преимуществ из NTFS, зато замедление работы было очень заметно. Проблема недостатка вычислительной мощности процессора и объема оперативной памяти решалась «сам собой», и c Windows NT 4.0 начался поход NTFS на пользовательские компьютеры. Windows 2000 принес NTFS3 в качестве основной и рекомендуемой файловой системы как на рабочие, так и на домашние системы. На данный момент NTFS3.1 (не путайте версию файловой системы с версией ОС, далее просто NTFS) является самой распространенной файловой системой, и популярность ее нельзя «оправдать» лишь маркетингом Microsoft, NTFS на самом деле одна из самых функциональных и технологичных файловых систем на рынке.[Источник 5]

Другие популярные файловые системы

Название Дата представления,

платформа

Операционная система Разработчик Комментарий
ext 1992 (Linux 0.96c) Linux Реми Кард Расширенная ФС, разработанная для ОС на ядре Linux
ext2 1993 (Linux) Linux Реми Кард Вторая версия Расширенной файловой системы для Linux
ext3 2001 (Linux 2.4.15) Linux Стивен Твиди Журналируемая версия ext2
ext4 2008 (Linux) Linux Mingming Cao, Andreas Dilger, Alex Zhuravlev (Tomas), Dave Kleikamp, Theodore Ts'o, Eric Sandeen, и др. Новая версия файловой системы ext3, с поддержкой экстентов
ISO 9660  ???  ??? Используется на CD-ROM и DVD дисках. Имеет расширения Rock Ridge и Joliet.
NTFS 1993 Windows Microsoft Закрытая журналируемая файловая система

Источники

  1. История развития файловых систем. // Студенческая библиотека онлайн. [2013-2019]. Дата обновления:10.04.2009. URL:https://studbooks.net/2238702/informatika/istoriya_razvitiya_faylovyh_sistem (дата обращения: 10.01.2018).
  2. Collaborative Research: Programming Models and Storage System for High Performance Computation with Many-Core Processors // Jack B. Dennis; Guang R. Gao. [2019]. Дата обновления:10.04.2009. URL:https://www.researchgate.net/publication/228538302_Collaborative_Research_Programming_Models_and_Storage_System_for_High_Performance_Computation_with_Many-Core_Processors (дата обращения: 10.01.2018).
  3. YAFFS 2 Specification and Development Notes. // yaffs.net. [2019]. Дата обновления: 05.03.2017. URL: http://www.yaffs.net/yaffs-2-specification-and-development-notes (дата обращения: 10.01.2018).
  4. Yaffs 2 Specification // yaffs.net. [2019]. Дата обновления: 23.03.2016. URL: https://yaffs.net/yaffs-2-specification(дата обращения: 10.01.2018).
  5. История развития файловых систем. // Студенческая библиотека онлайн. [2013-2019]. Дата обновления:10.04.2009. URL:https://studbooks.net/2238702/informatika/istoriya_razvitiya_faylovyh_sistem (дата обращения: 10.01.2018).