Gestión de Flash Wear en Android Automotive

El almacenamiento interno de Android Automotive utiliza una tarjeta multimedia integrada (eMMC) con miles de ciclos de borrado/escritura; si el eMMC falla, el sistema puede volverse inutilizable. Dado que los vehículos tienen una larga vida útil (normalmente más de 10 años), el eMMC debe ser extremadamente fiable. Esta página describe el comportamiento de eMMC y cómo los OEM pueden reducir el riesgo de fallas en eMMC (y así evitar fallas en los sistemas Android Automotive).

Comportamiento eMMC

Los dispositivos eMMC utilizan técnicas de nivelación de desgaste para sortear las limitaciones de borrado/escritura organizando los datos y distribuyendo las escrituras de manera uniforme en todo el sistema (para que ningún bloque falle debido a las escrituras intensivas). La vida estimada de eMMC depende de:

  • Cantidad de escrituras . En los teléfonos, la cantidad de datos escritos en el almacenamiento interno puede ser de más de 10 GB por día. En las implementaciones automotrices, no tenemos datos del mundo real sobre la cantidad de datos que se escribirán debido a las aplicaciones limitadas. Sin embargo, cuando los usuarios transmiten música de alta calidad y usan la navegación, observamos 50 MB de datos escritos en eMMC cada minuto. En el futuro, es posible que tengamos otros tipos de aplicaciones de escritura intensiva, como aplicaciones de cámara de tablero que graban y almacenan videos continuamente. Además, algunos autos serán vehículos compartidos que se usarán varias horas todos los días. Por estas y otras razones, esperamos que las implementaciones de Android Automotive tengan más escrituras de eMMC que un teléfono.
  • Escribir patrones . Las escrituras y borrados se realizan en bloques. Escribir datos con frecuencia en fragmentos pequeños desgasta la eMMC más rápido que escribir la misma cantidad de datos con menos frecuencia y en fragmentos más grandes.
  • Tamaño disponible de eMMC . Un mayor tamaño de almacenamiento significa que el algoritmo de nivelación de desgaste puede distribuir las escrituras en una mayor cantidad de bloques.
  • Usar técnicas de nivelación.
  • Factores ambientales . Los ejemplos incluyen un rango de temperatura de funcionamiento generalmente de -20 ~ 85 Celsius; la temperatura más allá de este rango podría acortar aún más la vida útil del eMMC.

Para un eMMC con 16 GB de espacio utilizable y ciclos de escritura/borrado de 3k, estimamos lo siguiente:

Escrituras diarias 16 GB 32GB
Tiempo de vida estimado 10 años 5 años

Sin embargo, el sistema dejaría de funcionar correctamente mucho antes de que el eMMc se desgaste por completo a medida que disminuye el tamaño de almacenamiento utilizable, y el eMMC puede tener una vida útil aún más corta según las técnicas de nivelación y los patrones de escritura utilizados. Además, esta estimación no tiene en cuenta los efectos de las aplicaciones malintencionadas o malintencionadas, que podrían atacar los sistemas automotrices al escribir grandes bloques de datos basura en eMMC sin permisos especiales.

Para detectar la posible falla de eMMC antes de que suceda, se debe incorporar un monitoreo adecuado del estado del almacenamiento como parte del monitoreo general del estado del sistema.

Implementación

Android O admite características que permiten a los OEM proteger y monitorear el almacenamiento interno de Android Automotive y prolongar su vida útil.

Restricción de aplicaciones de terceros

Para proteger el almacenamiento interno del sistema Android Automotive, Android O permite a los OEM configurar si se pueden instalar aplicaciones de terceros en el almacenamiento interno (las aplicaciones solo pueden escribir en la partición en la que se instalaron). Para configurar, establezca la siguiente configuración en la superposición de recursos:

<bool name="config_allow3rdPartyAppOnInternal">false</bool>

Reducción del desgaste del flash

Los OEM preocupados por el desgaste de la memoria flash en el almacenamiento interno también pueden agregar una tarjeta SD que sea lo suficientemente rápida como para usarla como almacenamiento adoptado. La tarjeta SD tiene el siguiente comportamiento:

  • Cuando se adopte, la tarjeta SD se cifrará y será segura para almacenar datos de la aplicación.
  • La ranura para tarjetas SD debe estar en un lugar seguro (no se espera que los usuarios extraigan la tarjeta SD con frecuencia).
  • La tarjeta SD no se puede utilizar para transferir datos entre los sistemas del automóvil y una computadora.
  • Expulsar la tarjeta SD no afectará a un sistema en funcionamiento. Sin embargo, no debe quitarse a menos que sea necesario reemplazarlo.

Para garantizar que las aplicaciones de terceros (aquellas creadas por los desarrolladores de aplicaciones para automóviles) se puedan instalar en la tarjeta SD si el automóvil lo exige, los desarrolladores de aplicaciones para automóviles deben incluir android: installLocation =["auto" | "preferExternal"] en el archivo de manifiesto de la aplicación.

Si el automóvil no permite que se instalen aplicaciones de terceros en el almacenamiento interno (como se describe en Restricción de aplicaciones de terceros ), sin este indicador (o si está configurado el ajuste installLocation =internalOnly ), la instalación de la aplicación fallará.

Obtener métricas de disco con almacenamiento

Android O presenta storaged , un nuevo servicio del sistema que muestra y publica métricas de disco y eMMc, como información sobre el uso general del disco, la estimación de la vida útil de eMMC y las estadísticas de E/S del disco por aplicación. Los OEM pueden usar esta información para advertir a los usuarios cuando el almacenamiento interno comience a fallar o cuando aplicaciones específicas estén realizando demasiadas E/S de disco. Para obtener más información, consulte Implementación de storaged .

Validación

Esta característica se prueba en las pruebas de PackageManager .