Android ha sempre supportato accessori di archiviazione esterni (come le schede SD), ma storicamente questi accessori erano limitati alla semplice archiviazione dei file, per via delle la loro prevista impermanenza e la protezione minima dei dati offerta di archiviazione esterna tradizionale. Android 6.0 ha introdotto la possibilità di adottare supporti di archiviazione esterni in modo che agiscano come archiviazione.
Quando vengono adottati dispositivi di archiviazione esterni, questi vengono formattati e criptati funzionano su un solo dispositivo Android alla volta. Perché i contenuti multimediali sono fortemente legati al dispositivo Android che l'ha adottato, può archiviare in sicurezza app e e i dati privati di tutti gli utenti.
Quando gli utenti inseriscono un nuovo supporto di archiviazione (ad esempio una scheda SD) in un dispositivo
posizione, Android chiede come intende usare i contenuti multimediali. Può scegliere di
adottare i contenuti multimediali, che li formattano e li criptano, oppure possono continuare a utilizzarli
così com'è per archiviare file in modo semplice. Se sceglie di adottarla, la piattaforma si offre
eseguire la migrazione dei contenuti principali dello spazio di archiviazione condiviso (di solito montati
/sdcard
) ai nuovi media adottati, liberando spazio prezioso sui
memoria interna. A differenza dello spazio di archiviazione tradizionale, che è limitato a 2 TB per via delle sue
l'utilizzo di
MBR
usi dello spazio di archiviazione da adottare
GPT
e perciò ha un limite di archiviazione dei file di ~9ZB.
Le app possono essere posizionate su supporti di archiviazione adottati solo se lo sviluppatore ha
indicato il supporto tramite l'attributo android:installLocation
.
Le nuove installazioni di app supportate vengono posizionate automaticamente nella
dispositivo di archiviazione con più spazio libero e gli utenti possono spostare le app supportate
tra dispositivi di archiviazione nell'app Impostazioni. App spostate in adozione
i contenuti multimediali vengono memorizzati quando vengono espulsi
e ritorna quando il contenuto multimediale viene reinserito.
Sicurezza
La piattaforma genera in modo casuale chiavi di crittografia per ogni dispositivo adottato e le archivia nella memoria interna del dispositivo Android. Questo rende i media adottati sicuri quanto l'archiviazione interna. Le chiavi sono associate ai dispositivi adottati in base al GUID della partizione adottata.
Se il dispositivo è configurato per utilizzare la crittografia basata su file (FBE) nel suo memoria interna, la memoria adattabile utilizza sia FBE sia la crittografia dei metadati. Altrimenti, lo spazio di archiviazione adottabile usa tutto il disco crittografia (FDE).
Il layout su disco del dispositivo adottato rispecchia fedelmente i dati interni. la partizione multiutente, incluse le etichette SELinux e così via. Android, il dispositivo di archiviazione adottato supporta anche la funzionalità multiutente con lo stesso livello di isolamento della memoria interna.
Poiché i contenuti di un dispositivo di archiviazione adottato sono fortemente legati Nel dispositivo Android che le ha adottate, le chiavi di crittografia non dovrebbero essere estraibili dal dispositivo principale, pertanto il dispositivo di archiviazione non può essere montato altrove.
Se il tuo dispositivo utilizza FBE, consulta la sezione FBE. documentazione e i metadati documentazione sulla crittografia su come configurare il servizio FBE e la crittografia dei metadati di archiviazione utilizzabili.
Prestazioni e stabilità
Solo supporti di archiviazione esterni in posizioni stabili, ad esempio uno slot all'interno di un vano batterie o dietro una copertura protettiva, è necessario considerare l'adozione per evitare il danneggiamento o la perdita accidentale dei dati. In particolare, i modelli USB i dispositivi connessi a uno smartphone o tablet non dovrebbero mai essere presi in considerazione per l'adozione. Un'eccezione comune è un'unità USB esterna collegata a un televisore dispositivo, perché in genere l'intera TV è installata in un luogo stabile.
Quando un utente adotta un nuovo dispositivo di archiviazione, la piattaforma esegue un benchmark e mette a confronto le sue prestazioni con la memoria interna. Se il dispositivo adottato è molto più lenta rispetto alla memoria interna, la piattaforma avvisa l'utente di un la qualità dell'esperienza potrebbe essere ridotta. Questo benchmark è stato derivato dall'effettivo I/O comportamento delle app Android più diffuse. Attualmente, l'implementazione AOSP avvisa gli utenti oltre una certa soglia, ma i produttori di dispositivi potrebbero adattare inoltre, rifiutando completamente l'adozione se la carta è estremamente lenta.
I dispositivi adottati devono essere formattati con un file system che supporta POSIX
autorizzazioni e attributi estesi come ext4
o
f2fs
. Per ottenere prestazioni ottimali, il file system f2fs
viene
consigliata per i dispositivi di archiviazione basati su Flash.
Durante la manutenzione periodica in caso di inattività, la piattaforma riscontra problemi
FI_TRIM
per adottare i contenuti multimediali esattamente come per la memoria interna.
L'attuale specifica della scheda SD non supporta DISCARD
; ma il kernel utilizza il comando ERASE
,
il firmware della scheda SD che potrebbe scegliere di utilizzare per l'ottimizzazione.
Test
Per verificare se lo spazio di archiviazione adottabile funziona, esegui questo test CTS:
cts-tradefed run commandAndExit cts-dev \ -m CtsAppSecurityHostTestCases \ -t android.appsecurity.cts.AdoptableHostTest
Per verificare il comportamento delle unità USB e delle schede SD quando un dispositivo non dispone di o quando il connettore USB viene usato per un adb attivo connessione, utilizza:
adb shell sm set-virtual-disk true