Файловая система флэш-памяти — это файловая система, разработанная для хранения файлов на устройствах хранения на основе флэш-памяти . Хотя файловые системы флэш-памяти тесно связаны с файловыми системами в целом, они оптимизированы для природы и характеристик флэш-памяти (например, для предотвращения усиления записи ), а также для использования в определенных операционных системах .
Хотя уровень блочного устройства может эмулировать дисковый накопитель, что позволяет использовать файловую систему общего назначения на флэш-устройстве хранения данных, это неоптимально по нескольким причинам:
Файловые системы с журнальной структурой обладают всеми желаемыми свойствами для файловой системы на основе флэш-памяти. [1] К таким файловым системам относятся JFFS2 и YAFFS .
Из-за особых характеристик флэш-памяти ее лучше всего использовать либо с контроллером для выполнения выравнивания износа и исправления ошибок , либо со специально разработанными флэш- файловыми системами , которые распределяют записи по носителям и справляются с длительным временем стирания блоков флэш-памяти NAND. Основная концепция флэш-файловых систем заключается в следующем: когда флэш-хранилище должно быть обновлено, файловая система запишет новую копию измененных данных в новый блок, переназначит указатели файлов, а затем сотрет старый блок позже, когда у нее будет время.
На практике файловые системы флэш-памяти используются только для устройств с технологией памяти (MTD), которые представляют собой встроенную флэш-память без контроллера. Съемные карты флэш-памяти и USB-флеш-накопители имеют встроенные контроллеры для управления MTD с помощью специальных алгоритмов, [2] [3] таких как выравнивание износа, восстановление плохих блоков, восстановление после потери питания, сборка мусора и исправление ошибок , поэтому использование файловой системы флэш-памяти имеет ограниченные преимущества. Однако некоторые файловые системы флэш-памяти, такие как APFS и F2FS , могут использоваться на флэш-устройствах на основе FTL, таких как SSD и eUFS .
Устройства на основе флэш-памяти становятся все более распространенными, поскольку число мобильных устройств растет, стоимость за единицу объема памяти снижается, а емкость микросхем флэш-памяти увеличивается.
Самая ранняя файловая система на основе флэш-памяти, управляющая массивом флэш-памяти как свободно записываемым диском, была TrueFFS от M-Systems of Israel, представленная как программный продукт на выставке PC-Card Expo в Санта-Кларе, штат Калифорния , в июле 1992 года и запатентованная в 1993 году. [4]
Одной из первых флеш-файловых систем была FFS2 от Microsoft , предназначенная для использования с MS-DOS , выпущенная осенью 1992 года. [5] FFS2 предшествовал более ранний продукт под названием «FFS», который, однако, не был флеш-файловой системой, управляя флеш-массивом как пространством с возможностью однократной записи и многократного чтения (WORM), а не как свободно записываемым диском.
Около 1994 года отраслевая группа PCMCIA одобрила спецификацию Flash Translation Layer (FTL), основанную на дизайне TrueFFS от M-Systems. Спецификация была разработана и совместно предложена M-Systems и SCM Microsystems, которые также предоставили первые рабочие реализации FTL. Одобренная Intel [6], FTL стала популярной разработкой файловой системы флэш-памяти и в носителях, не являющихся PCMCIA.
Overlayfs, Unionfs и aufs — это объединенные файловые системы, которые позволяют объединять несколько файловых систем и представлять их пользователю в виде единого дерева. Это позволяет разработчику системы размещать части операционной системы, которые номинально доступны только для чтения, на разных носителях в обычных областях чтения-записи. OpenWrt обычно устанавливается на сырые флэш-чипы без FTL. Он использует overlayfs для объединения сжатой SquashFS только для чтения с JFFS2 .