файловая система Android
Добавлено: 28 фев 2017, 23:09
Файловая система ОС Android
В Linux подключаемые накопители далеко не всегда монтируются автоматически. Android же ближе к пользователю, поэтому подключаемые карты памяти или USB накопители, чаще всего монтирует автоматически, но вот адрес монтирования может отличаться. Монтирование - процесс подключения раздела (части накопителя) с имеющейся на нём файловой системой в корневую файловую систему Android (или любой другой ОС на базе ядра Linux) для использования его операционной системой. В Android есть много своих разделов и разделов унаследованных от Linux. Основные разделы, которые нам нужно знать это /Boot и /system. Если вы обновляете прошивку или меняете её на неофициальную, меняются именно это разделы, в них содержится вся операционная система Android. Также существует раздел /data, который используется только после запуска ОС Андроид, в нём хранятся данные приложений. Адрес монтирования этих разделов на всех Android устройствах одинаковый. Но есть ещё один раздел, без которого было бы нельзя пользоваться Android, это раздел с точкой монтирования /sdcard. Как вы читали выше, в Android-устройстве есть физически одна микросхема ПЗУ, это наш встроенный накопитель, который поделен на разделы. Объём раздела не бесконечен, поэтому когда-нибудь свободное место в разделе может закончиться, тогда и появляются проблемы. На заре развития в Android встроенные накопители стоили намного дороже чем сегодня, поэтому в Android-устройства вставляли накопители значительно меньше по ёмкости. Названия разделов и точки их монтирования с первых версий Android не изменились. Чтобы решить проблему с нехваткой свободного места на встроенном накопителе в Android устройства добавили карту памяти, которая монтировалась как раздел /sdcard. По сути она дополняла раздел /data, чтобы можно было использовать приложения, которые занимали много места, например игры с объёмным кешем. Сегодня же встроенный накопитель имеет внушительные размеры, поэтому раздел /sdcard стали размещать на встроенном накопителе, поэтому обязательное наличие карты памяти в телефоне для работы Android не требуется. Поэтому название раздела /sdcard, сегодня не имеет ничего общего с картой памяти. Почему же вовсе не избавиться от раздела /sdcard и не оставить один раздел /data? Раздел /sdcard оставлен для совместимости, не переписывать же всю операционную систему и приложения, которые рассчитаны на использование этого раздела. Как же тогда зайти на карту памяти, какой у неё теперь адрес? Точный адрес монтирования для карты памяти не установлен, поэтому каждый производитель делает по-своему. Адрес монтирования может быть следующим sdcard, sd-ext, sdcard0, sdcard1 и другие. Почти все сторонние программы автоматически находят адрес монтирования карты памяти. Самому же можно найти любой подключённый внешний накопитель по адресу /mnt.
Многие раздел sdcard называют виртуальной картой памяти, это неправильно, физически это всего лишь ещё один раздел встроенного накопителя, исторически сохранилось название и функциональность. Термин виртуальная карта памяти только осложняет понимание и без того очень сложного вопроса. Обратите внимание, что Android умеет работать только с разделом sdcard, то есть данные сторонних приложений могут писаться только в него. Карта памяти же может использоваться только вами, для записи только ваших данных. С карты памяти сторонним приложениям разрешено только считывать файлы изменять данные они не могут, начиная с Android версии 4.4, отсюда и проблемы и не только отсюда. Сделано это в целях безопасности ваших данных. В большинстве случаев проблема нехватки места в разделе sdcard решается путём замены адреса монтирования карты памяти и раздела sdcard, естественно нужно наличие прав root пользователя, и это не всегда простая процедура. Почему же не сделать как в Windows, где все данные находятся в одном разделе? В Android вы всегда можете обновить систему, поэтому что все файлы ОС находятся в отдельном разделе system и его обновление никак не повлияет на пользовательские данные. Вы всегда можете удалить все пользовательские данные просто отформатировав раздел data, при этом система не тронется. В общих словах всё, переваривайте.
Обратите внимание внимание, что в некоторых Android устройствах объём между разделами /Data и /sdcard делится динамически, То есть если в /sdcard свободно 4 Гб, то и в дата будет 4гб, если же вы записали 2 гб, то и в каждом из разделов также записалось 2 ГБ, физически есть только один раздел /data, а раздел /sdcard является ссылкой в него. Это позволяет более эффективно использовать объём встроенного накопителя устройства. Если же вы подключаете USB-накопитель, то адрес монтирования у него скорее всего будет /mnt/usbdisk. Чтобы получить доступ к чтению разделов, к примеру внесение изменений в раздел /system необходимы права root пользователя.
Обратите внимание, что в ОС Linux файлом может быть и драйвер, и диск, и процесс, что Linux всё воспринимает как файлы, даже файловые системы. Например, если вы наберёте в эмуляторе терминала команду mount, увидите такой тип файловой системы как VFS – это виртуальная файловая система. На самом деле это обычный драйвер файловой системы, который выглядит как файл. Аналогично вы можете найти файлы блочных устройств (драйвера файловых систем встроенных, подключаемых разделов, и прочего) по адресу /dev/block.
Что делать если, у меня закончилось свободное место в разделе /data на встроенном накопителе?
Часто проблема с ошибкой типа «нет места» связана не с тем, что реально физически закончилось место, а с какой-нибудь системной ошибкой, часто проблемы с Google Play. В некоторых устройствах часто накапливается мусор, например временные файлы системной программы могут весить 500 мегабайт. Этот мусор можно удалить, для этого нужны права root пользователя. Если же раздел /data и /sdcard объединены в один, то в первую очередь нужно перенести раздел /sdcard на карту памяти В крайних случаях, когда раздел /data на устройстве меньше 2 гигабайт или даже меньше 128 мегабайт, для расширения раздела /data нужно создавать дополнительный раздел ext на карте памяти и скидывать в него частично данные из раздела sdcard, но этот метод трудно выполним и в большинстве случаев приводит к сильным глюкам.