Флэш-файловая система
Флэш -файловая система — это файловая система, предназначенная для хранения файлов на устройствах хранения данных с флэш-памятью . Хотя флэш-файловые системы тесно связаны с файловыми системами в целом, они оптимизированы с учетом характера и характеристик флэш-памяти (например, чтобы избежать усиления записи ), а также для использования в определенных операционных системах .
Обзор
[ редактировать ]Хотя уровень блочного устройства может эмулировать диск, чтобы можно было использовать файловую систему общего назначения на флэш-устройстве хранения данных, это неоптимально по нескольким причинам:
- Стирание блоков: блоки флэш-памяти должны быть явно стерты, прежде чем в них можно будет записать. Время, затрачиваемое на стирание блоков, может быть значительным, поэтому полезно стирать неиспользуемые блоки, пока устройство находится в режиме ожидания.
- Произвольный доступ : файловые системы общего назначения оптимизированы таким образом, чтобы по возможности избегать поиска на диске из-за высокой стоимости поиска. Устройства флэш-памяти не имеют задержки поиска.
- Выравнивание износа : устройства флэш-памяти имеют тенденцию изнашиваться при многократной перезаписи одного блока; Файловые системы флэш-памяти предназначены для равномерного распределения записи.
Файловые системы с журнальной структурой обладают всеми желаемыми свойствами флэш-файловой системы. [1] К таким файловым системам относятся JFFS2 и YAFFS .
Из-за особых характеристик флэш-памяти ее лучше всего использовать либо с контроллером для выравнивания износа и исправления ошибок , либо со специально разработанными флэш- файловыми системами , которые распределяют записи по носителю и справляются с длительным временем стирания флэш-блоков NAND. Основная концепция флэш-файловых систем такова: когда флэш-память должна быть обновлена, файловая система записывает новую копию измененных данных в новый блок, переназначает указатели файлов, а затем стирает старый блок позже, когда он будет время.
На практике флэш-файловые системы используются только для устройств памяти (MTD), которые представляют собой встроенную флэш-память, не имеющую контроллера. Съемные карты флэш-памяти и USB-накопители имеют встроенные контроллеры для управления MTD с помощью специальных алгоритмов. [2] [3] такие как выравнивание износа, восстановление поврежденных блоков, восстановление при потере питания, сбор мусора и исправление ошибок , поэтому использование флэш-файловой системы имеет ограниченную пользу.
Устройства флэш-памяти становятся все более распространенными по мере увеличения количества мобильных устройств, снижения стоимости объема памяти и увеличения емкости микросхем флэш-памяти.
Происхождение
[ редактировать ]Самой ранней файловой системой флэш-памяти, управляющей массивом флэш-памяти как свободно записываемым диском, была TrueFFS израильской компании M-Systems , представленная как программный продукт на выставке PC-Card Expo в Санта-Кларе, Калифорния , в июле 1992 года и запатентованная в 1993 году. [4]
Одной из первых флэш-файловых систем была Microsoft FFS2 для использования с 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.
Флэш-файловые системы Linux
[ редактировать ]- JFFS, JFFS2 и YAFFS
- JFFS была первой файловой системой для Linux , предназначенной для флэш-памяти , но ее быстро заменила JFFS2 , первоначально разработанная для флэш-памяти NOR. Затем в 2002 году был выпущен YAFFS , посвященный специально флэш-памяти NAND, а JFFS2 был обновлен для поддержки флэш-памяти NAND.
- БИФС
- UBIFS объединен с Linux 2.6.22. [7] в 2008 году. UBIFS активно развивался с момента его первоначального слияния. [8] UBIFS Документация размещена на сайте infradead.org вместе с драйверами JFFS2 и MTD. Некоторые первоначальные сравнения показывают, что UBIFS обеспечивает более быстрое сжатие, чем F2FS. [9]
- ЛогФС
- LogFS , еще одна файловая система, предназначенная для флэш-памяти Linux, в настоящее время [update] разрабатывается для решения проблем масштабируемости JFFS2.
- Ф2ФС
- F2FS (файловая система, дружественная к Flash) была добавлена в ядро Linux 3.8. [10] Вместо того, чтобы напрямую обращаться к устройствам с необработанной флэш-памятью, F2FS предназначен для использования на устройствах хранения на основе флэш-памяти, которые уже включают уровень трансляции флэш-памяти, таких как SD-карты . [11]
Объединение файловых систем
[ редактировать ]Overlayfs, Unionfs и aufs — это объединенные файловые системы, которые позволяют объединять несколько файловых систем и представлять их пользователю как одно дерево. Это позволяет разработчику системы размещать части операционной системы, которые номинально доступны только для чтения, на разных носителях в обычных областях чтения и записи. OpenWrt обычно устанавливается на сырые флэш-чипы без FTL. Он использует overlayfs для объединения сжатой SquashFS, доступной только для чтения, с JFFS2 .
Слои перевода
[ редактировать ]См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Арнд Бергманн (18 февраля 2011 г.). «Оптимизация Linux с помощью дешевых флешек» . LWN.net . Проверено 26 января 2013 г.
- ^ «Контроллер USBkey от Phison PS2251-63» . Архивировано из оригинала 28 июля 2011 г. Проверено 26 мая 2011 г.
- ^ OpenNFM: NAND FTL с открытым исходным кодом для SSD и встроенного модуля хранения.
- ^ Патент США 5404485 , «Файловая система Flash, Амир Бан».
- ^ «Патент Microsoft FFS2» . Архивировано из оригинала 19 декабря 2016 г. Проверено 9 января 2009 г.
- ^ «Понимание спецификации уровня трансляции Flash (FTL)» (PDF) . Интел . Декабрь 1998 г. Архивировано из оригинала (PDF) 19 июля 2014 г. Проверено 27 июля 2015 г.
- ^ Джонатан Корбет (2 апреля 2008 г.). «ЮБИФС» . ЛВН.
- ^ Ричард Вайнбергер (24 сентября 2012 г.). «UBI: запрос Fastmap на включение» . ЛКМЛ.
- ^ Нил Браун (11 декабря 2012 г.). «JFFS2, UBIFS и рост флэш-памяти» . ЛВН.
- ^ «Файловые системы и хранилища» . Журнал ядра — появится в версии 3.8 . Х. 21 января 2013 г. Проверено 23 января 2013 г.
- ^ Нил Браун (10 октября 2012 г.). «Разборка f2fs» . LWN.net . Проверено 9 апреля 2014 г.
Внешние ссылки
[ редактировать ]- Презентация различных файловых систем Flash – 24 сентября 2007 г.
- Статья о различных файловых системах Flash - Ежегодная конференция USENIX 2005 г.
- Обзор различных файловых систем Flash – 10 августа 2005 г.
- Анатомия флэш-файловых систем Linux – 20 мая 2008 г.