Penyimpanan yang dapat diadopsi

Android selalu mendukung aksesori penyimpanan eksternal (seperti kartu SD), namun aksesori ini secara historis terbatas pada penyimpanan file sederhana, karena ketidakkekalan yang diharapkan dan perlindungan data minimal yang ditawarkan pada penyimpanan eksternal tradisional . Android 6.0 memperkenalkan kemampuan untuk mengadopsi media penyimpanan eksternal agar berfungsi seperti penyimpanan internal.

Saat media penyimpanan eksternal digunakan, media tersebut diformat dan dienkripsi agar hanya berfungsi dengan satu perangkat Android dalam satu waktu. Karena media sangat terikat dengan perangkat Android yang mengadopsinya, media dapat menyimpan aplikasi dan data pribadi dengan aman untuk semua pengguna.

Saat pengguna memasukkan media penyimpanan baru (seperti kartu SD) di lokasi yang dapat diadopsi, Android menanyakan bagaimana mereka ingin menggunakan media tersebut. Mereka dapat memilih untuk mengadopsi media tersebut, yang memformat dan mengenkripsinya, atau mereka dapat terus menggunakannya apa adanya untuk penyimpanan file sederhana. Jika mereka memilih untuk mengadopsi, platform menawarkan untuk memigrasikan konten penyimpanan bersama utama (biasanya dipasang di /sdcard ) ke media yang baru diadopsi, sehingga mengosongkan ruang berharga pada penyimpanan internal. Tidak seperti penyimpanan tradisional, yang dibatasi hingga 2TB karena penggunaan MBR , penyimpanan yang dapat diadopsi menggunakan GPT dan karenanya memiliki batas penyimpanan file ~9ZB.

Aplikasi dapat ditempatkan pada media penyimpanan yang diadopsi hanya jika pengembang telah menunjukkan dukungan melalui atribut android:installLocation . Penginstalan baru aplikasi yang didukung secara otomatis ditempatkan pada perangkat penyimpanan dengan ruang kosong paling banyak, dan pengguna dapat memindahkan aplikasi yang didukung antar perangkat penyimpanan di aplikasi Pengaturan . Aplikasi yang dipindahkan ke media yang diadopsi akan diingat saat media dikeluarkan, dan kembali saat media dimasukkan kembali.

Keamanan

Platform ini secara acak menghasilkan kunci enkripsi untuk setiap perangkat yang diadopsi dan menyimpannya di penyimpanan internal perangkat Android. Hal ini secara efektif membuat media yang diadopsi seaman penyimpanan internal. Kunci dikaitkan dengan perangkat yang diadopsi berdasarkan GUID partisi yang diadopsi.

Jika perangkat dikonfigurasi untuk menggunakan enkripsi berbasis file (FBE) pada penyimpanan internalnya, maka penyimpanan yang dapat diadopsi menggunakan enkripsi FBE dan metadata . Jika tidak, penyimpanan yang dapat diadopsi menggunakan enkripsi disk penuh (FDE).

Tata letak pada disk perangkat yang diadopsi sangat mencerminkan partisi data internal, termasuk label SELinux, dll. Ketika multi-pengguna didukung pada perangkat Android, perangkat penyimpanan yang diadopsi juga mendukung multi-pengguna dengan tingkat isolasi yang sama dengan internal penyimpanan.

Karena konten perangkat penyimpanan yang diadopsi sangat terkait dengan perangkat Android yang mengadopsinya, kunci enkripsi tidak boleh diekstraksi dari perangkat induk, sehingga perangkat penyimpanan tidak dapat dipasang di tempat lain.

Jika perangkat Anda menggunakan FBE, lihat dokumentasi FBE dan dokumentasi enkripsi metadata untuk mengetahui cara mengonfigurasi FBE dan enkripsi metadata pada penyimpanan yang dapat diadopsi.

Kinerja dan stabilitas

Hanya media penyimpanan eksternal di lokasi yang stabil, seperti slot di dalam kompartemen baterai atau di belakang penutup pelindung, yang harus dipertimbangkan untuk diadopsi guna membantu menghindari kehilangan atau kerusakan data yang tidak disengaja. Secara khusus, perangkat USB yang terhubung ke ponsel atau tablet tidak boleh dipertimbangkan untuk diadopsi. Satu pengecualian umum adalah drive USB eksternal yang tersambung ke perangkat sejenis TV, karena seluruh TV biasanya dipasang di lokasi yang stabil.

Saat pengguna mengadopsi perangkat penyimpanan baru, platform menjalankan benchmark dan membandingkan kinerjanya dengan penyimpanan internal. Jika perangkat yang diadopsi secara signifikan lebih lambat dibandingkan penyimpanan internal, platform akan memperingatkan pengguna tentang kemungkinan pengalaman yang menurun. Tolok ukur ini berasal dari perilaku I/O sebenarnya dari aplikasi Android populer. Saat ini, penerapan AOSP hanya akan memperingatkan pengguna yang melampaui satu ambang batas, namun produsen perangkat dapat menyesuaikannya lebih lanjut, seperti menolak adopsi sepenuhnya jika kartu sangat lambat.

Perangkat yang diadopsi harus diformat dengan sistem file yang mendukung izin POSIX dan atribut yang diperluas, seperti ext4 atau f2fs . Untuk performa optimal, sistem file f2fs direkomendasikan untuk perangkat penyimpanan berbasis flash.

Saat melakukan pemeliharaan menganggur secara berkala, platform mengeluarkan FI_TRIM ke media yang diadopsi seperti halnya untuk penyimpanan internal. Spesifikasi kartu SD saat ini tidak mendukung perintah DISCARD ; tetapi kernel malah kembali ke perintah ERASE , yang mana firmware kartu SD dapat memilih untuk digunakan untuk tujuan optimasi.

Pengujian

Untuk menguji apakah penyimpanan yang dapat diadopsi berfungsi, jalankan pengujian CTS ini:

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

Untuk memverifikasi perilaku drive USB dan kartu SD saat perangkat tidak memiliki slot internal atau saat konektor USB digunakan untuk koneksi adb aktif, gunakan:

adb shell sm set-virtual-disk true