Google is committed to advancing racial equity for Black communities. See how.
Эта страница переведена с помощью Cloud Translation API.
Switch to English

Удобное хранилище

Android всегда поддерживал аксессуары для внешних хранилищ (например, SD-карты), но эти аксессуары исторически ограничивались простыми хранилищами файлов из-за их ожидаемой непостоянства и минимальной защиты данных, предлагаемой традиционным внешним хранилищам . В Android 6.0 появилась возможность использовать внешние носители в качестве внутреннего хранилища.

Когда используется внешний носитель, он форматируется и зашифровывается для одновременной работы только с одним устройством Android. Поскольку носитель сильно привязан к устройству Android, на котором он был принят, он может безопасно хранить как приложения, так и личные данные для всех пользователей.

Когда пользователи вставляют новый носитель (например, SD-карту) в удобное место, Android спрашивает их, как они хотят использовать этот носитель. Они могут выбрать носитель, форматировать и шифровать его, или они могут продолжать использовать его как есть для простого хранения файлов. Если они решат принять, платформа предлагает перенести основное содержимое общего хранилища (обычно монтируемое на /sdcard ) на недавно принятый носитель, освобождая ценное пространство во внутренней памяти. В отличие от традиционного хранилища, которое ограничено 2 ТБ из-за использования MBR , адаптируемое хранилище использует GPT и, следовательно, имеет ограничение на хранение файлов ~ 9ZB.

Приложения могут быть размещены на android:installLocation носителях только в том случае, если разработчик указал поддержку через атрибут android:installLocation . Новые установки поддерживаемых приложений автоматически помещаются на запоминающее устройство с максимальным объемом свободного места, и пользователи могут перемещать поддерживаемые приложения между устройствами хранения в приложении « Настройки» . Приложения, перемещенные на принятый носитель, запоминаются при извлечении носителя и возвращаются при повторной установке носителя.

Безопасность

Платформа случайным образом генерирует ключи шифрования для каждого принятого устройства и сохраняет их во внутренней памяти устройства Android. Это фактически делает принятые носители такими же безопасными, как и внутреннее хранилище. Ключи связаны с принятыми устройствами на основе принятого GUID раздела.

Если устройство настроено на использование файлового шифрования (FBE) во внутренней памяти, то адаптированное хранилище использует как FBE, так и шифрование метаданных . В противном случае адаптируемое хранилище использует шифрование всего диска (FDE).

Расположение на диске принятого устройства точно отражает внутренний раздел данных, включая метки SELinux и т. Д. Когда на устройстве Android поддерживается многопользовательский режим, принятое устройство хранения также поддерживает многопользовательский режим с тем же уровнем изоляции, что и внутренний. место хранения.

Поскольку содержимое принятого устройства хранения сильно привязано к устройству Android, которое его адаптировало, ключи шифрования не должны извлекаться из родительского устройства, и, следовательно, устройство хранения не может быть смонтировано в другом месте.

Если ваше устройство использует FBE, см. Документацию FBE и документацию по шифрованию метаданных, чтобы узнать, как настроить FBE и шифрование метаданных в доступном хранилище.

Производительность и стабильность

Только внешние носители данных в устойчивых местах, таких как слот внутри аккумуляторного отсека или за защитной крышкой, следует рассматривать для принятия, чтобы избежать случайной потери или повреждения данных. В частности, никогда не следует рассматривать USB-устройства, подключенные к телефону или планшету. Одним из распространенных исключений может быть внешний USB-накопитель, подключенный к устройству в стиле телевизора, поскольку весь телевизор обычно устанавливается в стабильном месте.

Когда пользователь использует новое устройство хранения, платформа запускает тест и сравнивает его производительность с внутренним хранилищем. Если адаптированное устройство работает значительно медленнее, чем внутреннее хранилище, платформа предупреждает пользователя о возможном ухудшении работы. Этот тест был основан на фактическом поведении ввода-вывода популярных приложений Android. В настоящее время реализация AOSP будет предупреждать пользователей только о превышении единого порогового значения, но производители устройств могут адаптировать это дальше, например, полностью отклонить принятие, если карта работает очень медленно.

Принятые устройства должны быть отформатированы с файловой системой, которая поддерживает разрешения POSIX и расширенные атрибуты, такие как ext4 или f2fs . Для оптимальной производительности f2fs система f2fs рекомендуется для устройств хранения на основе флэш-памяти.

При выполнении периодического обслуживания в состоянии простоя платформа выдает FI_TRIM для принятого носителя, как и для внутреннего хранилища. Текущая спецификация SD-карты не поддерживает команду DISCARD ; но вместо этого ядро ​​возвращается к команде ERASE , которую микропрограмма SD-карты может выбрать для использования в целях оптимизации.

Тестирование

Чтобы проверить работоспособность адаптируемого хранилища, запустите этот тест CTS:

cts-tradefed run commandAndExit cts-dev \
    -m CtsAppSecurityHostTestCases \
    -t android.appsecurity.cts.AdoptableHostTest

Чтобы проверить поведение USB-накопителей и SD-карт, когда устройство не имеет встроенного слота или когда USB-разъем используется для активного подключения adb, используйте:

adb shell sm set-virtual-disk true