Almacenamiento adoptable

Android siempre admite accesorios de almacenamiento externo (como tarjetas SD), pero estos accesorios se limitaban históricamente a un simple almacenamiento de archivos, debido a su impermanencia esperada y la mínima protección de datos que se ofrecía a almacenamiento externo tradicional. Android 6.0 introdujo la capacidad de adoptar medios de almacenamiento externo para que actúen como datos internos. y almacenamiento de los datos.

Cuando se adopta un medio de almacenamiento externo, se formatea y se encripta solo para funcionan con un solo dispositivo Android a la vez. Debido a que los medios están fuertemente vinculados al dispositivo Android que lo adoptó, puede almacenar de forma segura datos privados para todos los usuarios.

Cuando los usuarios insertan nuevos medios de almacenamiento (como una tarjeta SD) en un dispositivo y Android les pregunta cómo quieren usar ese contenido. Pueden optar por adoptar los medios, que lo formatea y encripta, o pueden seguir usándolos para un almacenamiento simple de archivos. Si deciden hacerlo, la plataforma ofrece migrar los contenidos principales de almacenamiento compartido (por lo general, se activan /sdcard) a los medios adoptados recientemente, lo que libera espacio valioso en almacenamiento interno. A diferencia del almacenamiento tradicional, que está limitado a 2 TB debido a su uso de MBR, usos del almacenamiento adoptable GPT con un límite de almacenamiento de archivos de aproximadamente 9 ZB.

Las apps pueden colocarse en medios de almacenamiento adoptados solo cuando el desarrollador indicó compatibilidad mediante el atributo android:installLocation. Las nuevas instalaciones de apps compatibles se colocan automáticamente en el con más espacio libre, y los usuarios pueden mover las apps compatibles entre dispositivos de almacenamiento en la app de Configuración. Las apps pasan a ser adoptadas de los medios de comunicación se recuerdan mientras se expulsen y regresar cuando se vuelva a insertar el contenido.

Seguridad

La plataforma genera de forma aleatoria claves de encriptación para cada dispositivo adoptado. y los almacena en el almacenamiento interno del dispositivo Android. Esta hace que los medios adoptados sean tan seguros como el almacenamiento interno. Las claves son asociados con los dispositivos adoptados según el GUID de partición adoptado.

Si el dispositivo está configurado para usar la encriptación basada en archivos (FBE) en su el almacenamiento interno, entonces, el almacenamiento adoptable utiliza tanto el FBE como la encriptación de metadatos. De lo contrario, el almacenamiento adoptable usa disco completo encriptación de datos (FDE).

La disposición en disco del dispositivo adoptado refleja los datos internos particiones, incluidas las etiquetas de SELinux, etc. Si la función multiusuario es compatible Android, el dispositivo de almacenamiento adoptado también admite multiusuario con el mismo nivel de aislamiento que el almacenamiento interno.

Como el contenido de un dispositivo de almacenamiento adoptado está estrechamente vinculado al dispositivo Android que lo adoptó, las claves de encriptación no deben poder extraerse. del dispositivo superior; por lo tanto, el dispositivo de almacenamiento no puede montarse en otro lugar.

Si tu dispositivo usa un FBE, consulta el FBE documentación y los metadatos documentación de encriptación sobre cómo configurar el FBE y la encriptación de metadatos en y el almacenamiento adoptable.

Rendimiento y estabilidad

Solo medios de almacenamiento externo en ubicaciones estables, como una ranura dentro de el compartimento de la batería o detrás de una cubierta protectora, debes para evitar la pérdida o corrupción de datos por accidente. En particular, los puertos USB Los dispositivos conectados a un teléfono o una tablet nunca deben considerarse para su adopción. Una excepción común sería una unidad USB externa conectada a una TV dispositivo, ya que toda la TV suele instalarse en una ubicación estable.

Cuando un usuario adopta un nuevo dispositivo de almacenamiento, la plataforma ejecuta comparativas compara su rendimiento con el del almacenamiento interno. Si el dispositivo adoptado es mucho más lenta que el almacenamiento interno, la plataforma advierte al usuario sobre un posiblemente deteriorada la experiencia. Esta comparativa se derivó de la E/S real el comportamiento de las apps de Android populares. Actualmente, la implementación del AOSP solo advertir a los usuarios más allá de un único umbral, pero los fabricantes de dispositivos pueden adaptar esto como rechazar la adopción por completo si la tarjeta es extremadamente lenta.

Los dispositivos adoptados deben tener el formato de un sistema de archivos que admita POSIX permisos y atributos extendidos, como ext4 o f2fs Para obtener un rendimiento óptimo, el sistema de archivos f2fs es se recomienda para dispositivos de almacenamiento basados en Flash.

Cuando se realiza un mantenimiento periódico inactivo, la plataforma experimenta FI_TRIM para adoptar medios de comunicación, tal como lo hace con el almacenamiento interno. La especificación actual de la tarjeta SD no admite DISCARD. comando; pero, en cambio, el kernel recurre al comando ERASE qué firmware de la tarjeta SD puede usar para la optimización.

Prueba

Para comprobar que el almacenamiento adoptable funciona, ejecuta esta prueba del CTS:

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

Para verificar el comportamiento de las unidades USB y las tarjetas SD cuando un dispositivo no tiene ranura integrada o cuando se usa el conector USB para una adb activa de red, usa:

adb shell sm set-virtual-disk true