Gerenciamento de desgaste do Flash no Android Automotive

O armazenamento interno do Android Automotive usa um Embedded MultiMediaCard (eMMC) com milhares de ciclos de apagamento/gravação; se o eMMC falhar, o sistema pode se tornar inutilizável. Como os veículos têm longa vida útil (normalmente mais de 10 anos), o eMMC deve ser extremamente confiável. Esta página descreve o comportamento do eMMC e como os OEMs podem reduzir o risco de um eMMC com falha (e, assim, evitar sistemas Android Automotive com falha).

comportamento do eMMC

Os dispositivos eMMC usam técnicas de nivelamento de desgaste para contornar limitações de apagamento/gravação, organizando dados e distribuindo gravações uniformemente pelo sistema (para que nenhum bloco único falhe devido a gravações intensivas). A vida útil estimada do eMMC depende de:

  • Quantidade de gravações . Nos telefones, a quantidade de dados gravados no armazenamento interno pode ser superior a 10 GB por dia. Em implementações automotivas, não temos dados do mundo real sobre quantos dados serão gravados devido a aplicativos limitados. No entanto, quando os usuários estão transmitindo música de alta qualidade e usando a navegação, observamos 50 MB de dados gravados no eMMC a cada minuto. No futuro, poderemos ter outros tipos de aplicativos de gravação intensiva, como aplicativos de câmera de painel que gravam e armazenam vídeos continuamente. Além disso, alguns carros serão veículos compartilhados usados ​​várias horas todos os dias. Por esses e outros motivos, esperamos que as implementações do Android Automotive tenham mais gravações eMMC do que um telefone.
  • Escreva padrões . Gravações e apagamentos são feitos em blocos. Gravar dados com frequência em pequenos blocos desgasta o eMMC mais rápido do que gravar a mesma quantidade de dados com menos frequência e em blocos maiores.
  • Tamanho disponível do eMMC . Um tamanho de armazenamento maior significa que o algoritmo de nivelamento de desgaste pode distribuir as gravações em um número maior de blocos.
  • Técnicas de nivelamento de desgaste.
  • Fatores ambientais . Os exemplos incluem uma faixa de temperatura operacional de normalmente -20 ~ 85 Celsius; temperatura além dessa faixa pode encurtar ainda mais a vida útil do eMMC.

Para um eMMC com 16 GB de espaço utilizável e 3 mil ciclos de apagamento/gravação, estimamos o seguinte:

Gravações diárias 16 GB 32 GB
Tempo de vida estimado 10 anos 5 anos

No entanto, o sistema pararia de funcionar corretamente muito antes que o eMMc se desgastasse completamente à medida que o tamanho do armazenamento utilizável diminui, e o eMMC pode ter uma vida útil ainda menor, dependendo das técnicas de nivelamento e dos padrões de gravação usados. Além disso, essa estimativa não considera os efeitos de aplicativos mal-comportados ou mal-intencionados, que podem atacar sistemas automotivos gravando grandes blocos de dados indesejados no eMMC sem permissões especiais.

Para detectar a possível falha do eMMC antes que ela realmente aconteça, o monitoramento adequado da integridade do armazenamento deve ser integrado como parte do monitoramento geral da integridade do sistema

Implementação

O Android O é compatível com recursos que permitem aos OEMs proteger e monitorar o armazenamento interno do Android Automotive e prolongar sua vida útil.

Restringindo aplicativos de terceiros

Para proteger o armazenamento interno do sistema Android Automotive, o Android O permite que os OEMs configurem se aplicativos de terceiros podem ser instalados no armazenamento interno (os aplicativos podem gravar apenas na partição em que foram instalados). Para configurar, defina a seguinte configuração na sobreposição de recursos:

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

Reduzindo o desgaste do flash

Os OEMs preocupados com o desgaste do flash no armazenamento interno também podem adicionar um cartão SD rápido o suficiente para ser usado como armazenamento adotado. O cartão SD tem o seguinte comportamento:

  • Quando adotado, o cartão SD será criptografado e seguro para armazenar dados de aplicativos.
  • O slot do cartão SD deve estar em um local seguro (não se espera que os usuários removam o cartão SD com frequência).
  • O cartão SD não pode ser usado para transferir dados entre sistemas automotivos e um computador.
  • A ejeção do cartão SD não afetará o sistema em execução. No entanto, ele não deve ser removido a menos que precise ser substituído.

Para garantir que aplicativos de terceiros (aqueles criados por desenvolvedores de aplicativos de carro) possam ser instalados no cartão SD se o carro exigir, os desenvolvedores de aplicativos de carro devem incluir android: installLocation =["auto" | "preferExternal"] no arquivo de manifesto do aplicativo.

Se o carro não permitir que aplicativos de terceiros sejam instalados no armazenamento interno (conforme descrito em Restringindo aplicativos de terceiros ), sem esse sinalizador (ou se a configuração installLocation =internalOnly estiver configurada), a instalação do aplicativo falhará.

Obtendo métricas de disco com storaged

O Android O apresenta storaged , um novo serviço de sistema que mostra e publica métricas de disco e eMMc, como informações sobre o uso geral do disco, estimativa de vida útil do eMMC e estatísticas de E/S de disco por aplicativo. Os OEMs podem usar essas informações para avisar os usuários quando o armazenamento interno começar a falhar ou quando aplicativos específicos estiverem executando muitas E/Ss de disco. Para obter detalhes, consulte Implementando storaged .

Validação

Esse recurso é testado nos testes do PackageManager .