Изложенный ниже материал поможет ответить на следующие вопросы:
1) Почему заявленный объём встроенного накопителя отличается от того, который мне показывает устройство?
2) Как открыть, отредактировать, удалить файлы находящиеся на карте памяти и разрешить сторонним приложениям изменять файлы на карте памяти?
3) Как перенести пользовательские файлы, системные программы, приложения и их данные на карту памяти?
4) Как поменять адреса монтирования разделов накопителя?
5) Что делать если, у меня закончилось свободное место в разделе data на встроенном накопителе?
6) Что делать если у меня закончилась память в разделе sdcard на встроенном накопителе?

Ознакомьтесь сначала с:
http://devfaq.ru/ru/q/10393
http://devfaq.ru/ru/q/10404
http://4pda.ru/forum/index.php?s=&showtopic=143911 – андроид глоссарий

Понимание организации файловой системы Android.

Эта статья охватывает лишь небольшую часть всей информации по данному вопросу, чтобы полностью понять, как работает файловая система Android, придётся как минимум установить Linux-подобную ОС, но мы всё же попробуем :-)

Начнёмс. Операционная система (ОС) Android основана на ядре GNU/Linux (далее Linux), поэтому у всех имеется одинаковая файловая система (ФС), значительно отличающаяся от ФС ОС Windows, и в целом, у Linux и Android есть много общего. Так в чём же состоит отличие? Во-первых, типом файловой системы. В Windows мы встречали в основном два типа ФС FAT32 и NTFS. В Linux чаще всего используются следующие типы файловых систем EXT2, EXT 3, EXT 4. В Android помимо выше названных типов ФС часто встречаются типы F2FS и YAFFS2. От типа файловой системы зависит минимальный и максимальный размер файла, который может хранится в этой файловой системе атрибуты файлов и прочее. Некоторые атрибуты ФС Linux связаны с тем, что Linux является многопользовательской системой. Во-вторых, отличается строение (ветвление, адреса) файловой системы. Если в Windows мы привыкли видеть каждый физический, логический диск, или подключаемый usb-накопитель, или карту памяти как отдельный физический накопитель, к примеру C:/, то в Linux мы такого не увидим. В Linux нет разницы, где находится раздел с файловой системой, съёмный ли это накопитель или это раздел встроенного накопителя или жёсткого диска, где установлен Windows, монтироваться всё это может одинаково по одному адресу. Поэтому по адресу папки нельзя определить физические свойства: отдельный ли это жёсткий диск, или карта памяти или папка. В Linux есть одна «корневая» файловая система / в виде дерева, в которую подключаются другие ФС. В Linux нет локальных дисков, DVD-rom-ов, съёмных накопителей как в Windows, всё находится в едином адресном пространстве, которое начинается со знака /. Если мы подключаем usb-накопитель, мы можем найти его по адресу /mnt/usbdisk, но не обязательно. Чтобы можно было считывать и записывать данные на USB-накопителе, его необходимо монтировать, то есть подключить к корневой файловой системе.

В 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, при этом система не тронется. В общих словах всё, переваривайте.

[b]Обратите внимание внимание, что в некоторых 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, но этот метод трудно выполним и в большинстве случаев приводит к сильным глюкам.

[/b]
А здесь можно ознакомиться с вопросом с другой стороны:
http://habrahabr.ru/post/176131/
http://www.all-things-android.com/conte … -hierarchy - очень качественно на английском.
Отправить этот ответ на email