Владельцы смартфонов и планшетов на Android знают: сразу после покупки девайс работает, как молния, но через определенное время начинает больше напоминать черепаху. Этому есть много причин, и одна из главных – флэш-память, а именно ее фрагментация. Ежесекундно в Android происходят сотни или тысячи операций считывания-записи, но существующие файловые системы плохо приспособлены для мобильных девайсов. И в индустрии создали новую файловую систему F2FS, которая должна бороться с замедлением девайса со временем.
Что такое файловая система
Каждый раз, когда вы открываете фото, запускаете музыкальный трек или видео, файловая система играет ключевую роль в выполнении этих действий. Она является одним из многих программно-аппаратных слоев в электронных девайсах и определяет способы работы с файлами. Ведь на диске данные в виде нулей и единиц идут друг за другом сплошным потоком и не разделены на отдельные блоки.
Разделить этот поток и представить его в удобном виде файлов помогает файловая система. В первом приближении ее можно представить, как базу данных, в колонках которой указано имя файла, координаты его начала и размер, а также другие данные. Именно файловые системы делают возможной концепцию папок для размещения файлов.
Существуют десятки файловых систем. Самыми известными являются FAT (File Allocation Table) и ее модификация FAT32, которая сегодня используется на большинстве USB-накопителей, карт памяти и т. п. Также известна NTFS (New Technology File System), которая является основой для Microsoft Windows. Еще Microsoft создала exFAT – модификацию FAT для девайсов на базе флэш-памяти.
Файловая система Android сегодня
Смартфоны Android базируются на Linux, а потому сегодня преимущественно используют файловую систему ext4 (Fourth Extended File System). Она является эволюцией самой популярной файловой системы в операционной системе Linux – еxt3, которая также является эволюцией предыдущих версий ext. В еxt3 главное внимание уделили журналам для ведения истории операций. В еxt4 пошли дальше и модифицировали важные структуры для хранения данных.
В еxt4 добавили 48-битную адресацию блоков, благодаря чему максимальный размер этой файловой системы равен одному эксабайту, а файлы могут быть размером до 16 терабайт. Пользователям USB-флэшек с FAT32 знакома ситуация достижения максимального размера, ведь эта файловая система позволяет лишь файлы до 0,004 терабайтов.
Файловую систему еxt4 создали в период 2003-2006 годов, и она лучше всего адаптирована для работы с механическими жесткими дисками. У флэш-памяти совсем другой принцип: она имеет относительно низкую скорость работы, но это компенсируется распараллеливанием процедур записи и чтения на десятки каналов.
В ext4 также не учитывается одно из главных ограничений флэш-памяти – количество циклов записи в одну ячейку. С каждым поколением флэш-памяти оно уменьшается, и в памяти QLC достигает нескольких сотен. Журналы операций в ext4 быстро изнашивают флэш-память.
Потребность в альтернативе
Долгое время над файловой системой смартфонов не задумывались потому, что основным тормозом при работе с данными была аппаратная часть. Однако с появлением флэш-памяти в формате UFS на замену старому eMMC узким местом стала именно ext4.
Для учета особенностей флэш-памяти и максимального использования ее преимуществ в 2012 году в Samsung представили файловую систему F2FS.
F2FS является файловой системой с открытым исходным кодом, и она адаптирована к флэш-памяти типа NAND (существует еще флэш-память NOR). После презентации первого варианта разработчиками Samsung эта файловая система заинтересовала других производителей. Одной из первых внедрять ее начала Motorola, вслед за ней новинку стали использовать и другие производители, включая OnePlus и Huawei.
Что дает F2FS
Новая файловая система значительно ускоряет работу флэш-памяти: смартфоны загружаются быстрее, можно записывать «тяжелые» файлы 4K, фильмы на 360 градусов. Также снизилась латентность (задержка) между операционной системой и физическим накопителем, благодаря чему программы открываются и реагируют на действия пользователя быстрее. Она также потребляет меншьше энергии при записи-чтении.
Скорость работы файловой системы в Android является очень важным параметром, поскольку ежесекундно проходит сотни и тысячи операций записи-считывания. Популярные программы часто остаются работать в фоновом режиме, и поэтому они обращаются к накопителю, даже когда визуально их нет на экране.
Со временем в накопителе увеличивается фрагментация, которую считают одним из главных замедлителей Android со временем. Ситуация усугубляется тем, что флэш-память в смартфонах часто заполнена. Для максимальной скорости флэш-накопителей лучше постоянно держать свободными несколько десятков процентов памяти.
За скорость файловая система F2FS «расплачивается» увеличением занятого пространства, используемого для кэша и рутинных операций. На девайсах с 64 ГБ флэш это может быть незаметным, но на бюджетных аппаратах с 8 ГБ или 16 ГБ может оказаться проблемой.
Что тормозит F2FS
F2FS, хоть и показывает ускорение работы в начале, сегодня находится в фазе «детских болезней» и имеет много багов при долговременном использовании. Существующие реализации этой файловой системы лучше всего подходят для задач, в которых необходимо только считывать данные. Однако программисты работают над тем, чтобы F2FS так же быстро записывала файлы в течение долгого времени.
Для обеспечения высокой производительности записи F2FS в долговременной перспективе можно использовать средства дефрагментации файлов. Это замечательное решение, но оно увеличивает количество циклов записи во флэш-память. Поэтому программисты ищут способы уменьшения фрагментации данных без необходимости специального запуска дефрагментации. Один из вариантов – привлечь искусственный интеллект, который будет прогнозировать запись данных.
Материал по F2FS: интервью разработчика F2FS Стэна Дмитриева
Чё за бред про фрагментацию, flash-память не требует дефрагментации! Это не жёсткий диск!