מערכת Android תמיד תמכה באביזרי אחסון חיצוני (כמו כרטיסי SD), אבל בעבר האביזרים האלה היו מוגבלים לאחסון קבצים פשוט, בגלל הבלתי זמניות הצפויה שלהם וההגנה המינימלית על הנתונים שמוצעת באחסון חיצוני מסורתי. ב-Android 6.0 נוספה האפשרות להשתמש באמצעי אחסון חיצוני כאמצעי אחסון פנימי.
כשמשתמשים במדיה של אחסון חיצוני, היא עוברת פרמט והצפנה כדי לפעול רק עם מכשיר Android אחד בכל פעם. מכיוון שהמדיה קשורה מאוד למכשיר Android שבו היא אומצה, היא יכולה לאחסן בבטחה גם אפליקציות וגם נתונים פרטיים לכל המשתמשים.
כשמשתמשים מוסיפים מדיה חדשה לאחסון (כמו כרטיס SD) למיקום מתאים, מערכת Android שואלת אותם איך הם רוצים להשתמש במדיה. הם יכולים לבחור לאמץ את המדיה, שתתבצע לה פורמטציה והצפנה, או להמשיך להשתמש בה כפי שהיא לאחסון קבצים פשוט. אם הם יבחרו להשתמש בו, הפלטפורמה תציע להעביר את התוכן הראשי של האחסון המשותף (בדרך כלל מותקן ב-/sdcard
) למדיה החדשה, וכך לפנות מקום חשוב באחסון הפנימי. בניגוד לאחסון רגיל, שמוגבל ל-2TB בגלל השימוש ב-MBR, באחסון גמיש נעשה שימוש ב-GPT, ולכן מגבלת האחסון של הקבצים היא כ-9ZB.
אפשר להעביר אפליקציות למדיה אחסון מאומצת רק אם המפתח ציין תמיכה באמצעות המאפיין android:installLocation
.
התקנות חדשות של אפליקציות נתמכות מועברות באופן אוטומטי למכשיר האחסון עם הכי הרבה מקום פנוי, והמשתמשים יכולים להעביר אפליקציות נתמכות בין מכשירי אחסון באפליקציית הגדרות. אפליקציות שמועברות למדיה מאומצת נשמרות בזמן שהמדיה מוציאה, וחוזרות כשהמדיה מוכנסת מחדש.
אבטחה
הפלטפורמה יוצרת מפתחות הצפנה באופן אקראי לכל מכשיר שמשויך לשירות, ומאחסנת אותם באחסון הפנימי של מכשיר Android. כך, המדיה המאומצת מאובטחת כמו אחסון פנימי. המפתחות משויכים למכשירים מאוחדים על סמך מזהה ה-GUID של המחיצה המאוחדת.
אם המכשיר מוגדר להשתמש בהצפנה מבוססת-קובץ (FBE) באחסון הפנימי שלו, האחסון המותאם אישית משתמש גם ב-FBE וגם בהצפנת מטא-נתונים. אחרת, אחסון מתאים לשימוש משתמש בהצפנה של כל הדיסק (FDE).
הפריסה בדיסק של המכשיר המאומץ משקפת באופן הדוק את מחיצה הנתונים הפנימית, כולל תוויות SELinux וכו'. כשיש תמיכה בכמה משתמשים במכשיר Android, גם מכשיר האחסון המאומץ תומך בכמה משתמשים עם אותה רמת בידוד כמו האחסון הפנימי.
מכיוון שהתוכן של התקן אחסון מאומץ קשור מאוד למכשיר Android שאימץ אותו, לא ניתן לחלץ את מפתחות ההצפנה מהמכשיר הראשי, ולכן אי אפשר לחבר את התקן האחסון למקום אחר.
אם המכשיר שלכם משתמש ב-FBE, תוכלו לקרוא את המסמכים בנושא FBE ואת המסמכים בנושא הצפנת מטא-נתונים כדי ללמוד איך להגדיר FBE והצפנת מטא-נתונים באחסון שניתן להתאמה.
ביצועים ויציבות
מומלץ להשתמש רק במדיה חיצונית לאחסון במיקומים יציבים, כמו חריץ בתוך תא הסוללה או מאחורי כיסוי מגן, כדי למנוע אובדן או פגיעה בנתונים בטעות. במיוחד, אין להשתמש במכשירי USB שמחוברים לטלפון או לטאבלט. חריג נפוץ אחד הוא כונן USB חיצוני שמחובר למכשיר בסגנון טלוויזיה, כי בדרך כלל הטלוויזיה כולה מותקנת במיקום יציב.
כשמשתמש משתמש במכשיר אחסון חדש, הפלטפורמה מפעילה בדיקת ביצועים ומשוותפת את הביצועים שלו לאחסון הפנימי. אם המכשיר המאושר איטי יותר באופן משמעותי מהאחסון הפנימי, הפלטפורמה מזהירה את המשתמש על פגיעה אפשרית בחוויית השימוש. מדד העזר הזה נגזר מההתנהגות בפועל של קלט/פלט באפליקציות פופולריות ל-Android. בשלב זה, ההטמעה ב-AOSP תזהיר את המשתמשים רק אם הם חורגים מסף אחד, אבל יצרני המכשירים יכולים להתאים את ההטמעה לצרכים שלהם, למשל לדחות את השימוש בכרטיס לגמרי אם הוא איטי מאוד.
המכשירים המאומצים חייבים להיות בפורמט של מערכת קבצים שתומכת בהרשאות POSIX ובמאפיינים מורחבים, כמו ext4
או f2fs
. כדי להשיג ביצועים אופטימליים, מומלץ להשתמש במערכת הקבצים f2fs
במכשירי אחסון מבוססי-פלאש.
במהלך תחזוקה תקופתית במצב חוסר פעילות, הפלטפורמה מנפיקה את הפקודה FI_TRIM
למדיה שאומצה, בדיוק כמו שהיא עושה לאחסון פנימי.
מפרט כרטיס ה-SD הנוכחי לא תומך בפקודה DISCARD
, אבל הליבה חוזרת לפקודה ERASE
, שבה קושחת כרטיס ה-SD עשויה להשתמש למטרות אופטימיזציה.
בדיקה
כדי לבדוק אם האחסון המותאם פועל, מריצים את בדיקת CTS הזו:
cts-tradefed run commandAndExit cts-dev \ -m CtsAppSecurityHostTestCases \ -t android.appsecurity.cts.AdoptableHostTest
כדי לבדוק את ההתנהגות של כונני USB וכרטיסי SD במכשיר שאין בו חריץ מובנה, או כשמחבר ה-USB משמש לחיבור adb פעיל, משתמשים באפשרות הבאה:
adb shell sm set-virtual-disk true