Armazenamento adotável

O Android sempre ofereceu suporte a acessórios de armazenamento externo (como cartões SD), mas esses acessórios eram limitados ao armazenamento simples de arquivos, devido à a impermanência esperada e a proteção mínima de dados oferecida armazenamento externo tradicional. O Android 6.0 introduziu a capacidade de adotar mídias de armazenamento externo para agir como internas armazenamento.

Quando a mídia de armazenamento externo é usada, ela é formatada e criptografada funcionam com um dispositivo Android por vez. Como a mídia está fortemente vinculada ao dispositivo Android que o adotou, é possível armazenar com segurança apps e dados privados para todos os usuários.

Quando os usuários inserem uma nova mídia de armazenamento (como um cartão SD) em um ambiente o local, o Android pergunta como eles querem usar a mídia. Eles podem optar por adotar a mídia, que a formata e a criptografa, ou pode continuar a usá-la no estado em que se encontram para simplificar o armazenamento de arquivos. Se eles optarem por adotar, a plataforma oferece migram o conteúdo principal do armazenamento compartilhado (geralmente montado em /sdcard) à mídia recém-adotada, liberando espaço valioso armazenamento interno. Ao contrário do armazenamento tradicional, que é limitado a 2 TB devido à uso de MBR usos de armazenamento adotáveis GPT e, portanto, tem um limite de armazenamento de arquivos de aproximadamente 9 ZB.

Os aplicativos só podem ser colocados em mídias de armazenamento adotadas quando o desenvolvedor indicou suporte por meio do atributo android:installLocation. As novas instalações de aplicativos com suporte são colocadas automaticamente no dispositivo de armazenamento com mais espaço livre, e os usuários podem mover aplicativos compatíveis entre os dispositivos de armazenamento no app Configurações. Apps movidos para "Adotados" mídia são lembrados enquanto a mídia é ejetada, e retornar quando a mídia for reinserida.

Segurança

A plataforma gera chaves de criptografia aleatoriamente para cada dispositivo adotado. e as armazena no armazenamento interno do dispositivo Android. Isso torna a mídia adotada tão segura quanto o armazenamento interno. As chaves são associadas aos dispositivos adotados com base no GUID da partição adotada.

Se o dispositivo estiver configurado para usar a criptografia baseada em arquivos (FBE, na sigla em inglês) nos o armazenamento interno, o armazenamento adotável usa FBE e criptografia de metadados. Caso contrário, o armazenamento adotável usa full-disk Criptografia (FDE, na sigla em inglês).

O layout em disco do dispositivo adotado reflete de perto os dados internos. incluindo rótulos SELinux etc. Quando há suporte para vários usuários no Android, o dispositivo de armazenamento adotado também oferece suporte a multiusuário com o mesmo nível de isolamento do armazenamento interno.

Como o conteúdo de um dispositivo de armazenamento adotado está fortemente vinculado ao Dispositivo Android que o adotou, as chaves de criptografia não poderão ser extraídas. do dispositivo principal e, portanto, o dispositivo de armazenamento não pode ser instalado em outro lugar.

Caso seu dispositivo use a FBE, consulte a FBE documentação e os metadados de criptografia de metadados para saber como configurar a FBE e a criptografia de metadados o armazenamento adotável.

Desempenho e estabilidade

Somente mídia de armazenamento externo em locais estáveis, como um slot dentro de um compartimento da bateria ou atrás de uma tampa de proteção, deve ser considerado para evitar perda ou corrupção acidental de dados. Especificamente, USB de dispositivos conectados a um celular ou tablet nunca devem ser considerados para adoção. Uma exceção comum seria um drive USB externo conectado a uma fonte de alimentação no dispositivo, porque a TV inteira normalmente é instalada em um local estável.

Quando um usuário adota um novo dispositivo de armazenamento, a plataforma executa uma e compara o desempenho dele com o armazenamento interno. Se o dispositivo adotado for significativamente mais lento do que o armazenamento interno, a plataforma avisa o usuário sobre uma e experiência possivelmente prejudicada. Esta comparação foi derivada da E/S real comportamento dos apps Android mais usados. Atualmente, a implementação do AOSP só avisam os usuários além de um único limite, mas os fabricantes de dispositivos podem adaptar isso ainda mais, como rejeitar completamente a adoção se o cartão estiver extremamente lento.

Os dispositivos adotados precisam ser formatados com um sistema de arquivos compatível com POSIX permissões e atributos estendidos, como ext4 ou f2fs. Para um desempenho ideal, o sistema de arquivos f2fs é recomendado para dispositivos de armazenamento em flash.

Ao realizar a manutenção periódica por inatividade, a plataforma emite O FI_TRIM adotou a mídia da mesma forma que o armazenamento interno. A especificação atual do cartão SD não é compatível com o DISCARD comando mas o kernel volta para o comando ERASE, qual firmware do cartão SD pode optar por usar para fins de otimização.

Teste

Para testar se o armazenamento adotável está funcionando, execute este teste do CTS:

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

Para verificar o comportamento de drives USB e cartões SD quando um dispositivo não tem ou quando o conector USB estiver sendo usado para um adb ativo use:

adb shell sm set-virtual-disk true