एंड्रॉइड ने हमेशा बाहरी स्टोरेज एक्सेसरीज (जैसे एसडी कार्ड) का समर्थन किया है, लेकिन ये एक्सेसरीज ऐतिहासिक रूप से साधारण फाइल स्टोरेज तक सीमित थीं, उनकी अपेक्षित अस्थिरता और पारंपरिक बाहरी स्टोरेज के लिए दी जाने वाली न्यूनतम डेटा सुरक्षा के कारण। एंड्रॉइड 6.0 ने आंतरिक भंडारण की तरह कार्य करने के लिए बाहरी भंडारण मीडिया को अपनाने की क्षमता पेश की।
जब बाह्य संग्रहण मीडिया को अपनाया जाता है, तो इसे एक समय में केवल एक Android डिवाइस के साथ काम करने के लिए स्वरूपित और एन्क्रिप्ट किया जाता है। चूंकि मीडिया इसे अपनाने वाले Android डिवाइस से दृढ़ता से जुड़ा हुआ है, इसलिए यह सभी उपयोगकर्ताओं के लिए ऐप्स और निजी डेटा दोनों को सुरक्षित रूप से संग्रहीत कर सकता है।
जब उपयोगकर्ता नए स्टोरेज मीडिया (जैसे एसडी कार्ड) को एक गोद लेने योग्य स्थान में सम्मिलित करते हैं, तो एंड्रॉइड उनसे पूछता है कि वे मीडिया का उपयोग कैसे करना चाहते हैं। वे मीडिया को अपनाना चुन सकते हैं, जो इसे प्रारूपित और एन्क्रिप्ट करता है, या वे इसका उपयोग जारी रख सकते हैं-जैसा कि साधारण फ़ाइल भंडारण के लिए है। यदि वे अपनाना चुनते हैं, तो मंच प्राथमिक साझा भंडारण सामग्री (आमतौर पर /sdcard
पर घुड़सवार) को नए अपनाया मीडिया में स्थानांतरित करने की पेशकश करता है, जिससे आंतरिक भंडारण पर मूल्यवान स्थान खाली हो जाता है। पारंपरिक भंडारण के विपरीत, जो एमबीआर के उपयोग के कारण 2TB तक सीमित है, गोद लेने योग्य भंडारण GPT का उपयोग करता है और इसलिए इसकी फ़ाइल भंडारण सीमा ~ 9ZB है।
ऐप्स को गोद लिए गए स्टोरेज मीडिया पर तभी रखा जा सकता है जब डेवलपर ने android:installLocation
विशेषता के माध्यम से समर्थन का संकेत दिया हो। समर्थित ऐप्स के नए इंस्टॉल स्वचालित रूप से सबसे खाली स्थान के साथ स्टोरेज डिवाइस पर रखे जाते हैं, और उपयोगकर्ता सेटिंग ऐप में स्टोरेज डिवाइस के बीच समर्थित ऐप्स को स्थानांतरित कर सकते हैं। गोद लिए गए मीडिया में ले जाए गए ऐप्स को मीडिया के बाहर निकलने के दौरान याद रखा जाता है, और मीडिया को फिर से डालने पर वापस लौट आते हैं।
सुरक्षा
प्लेटफ़ॉर्म बेतरतीब ढंग से प्रत्येक गोद लिए गए डिवाइस के लिए एन्क्रिप्शन कुंजी उत्पन्न करता है और उन्हें एंड्रॉइड डिवाइस के आंतरिक भंडारण पर संग्रहीत करता है। यह प्रभावी रूप से अपनाए गए मीडिया को आंतरिक भंडारण के रूप में सुरक्षित बनाता है। कुंजियाँ अंगीकृत विभाजन GUID के आधार पर अंगीकृत उपकरणों से जुड़ी होती हैं।
यदि डिवाइस को इसके आंतरिक संग्रहण पर फ़ाइल-आधारित एन्क्रिप्शन (FBE) का उपयोग करने के लिए कॉन्फ़िगर किया गया है, तो अपनाने योग्य संग्रहण FBE और मेटाडेटा एन्क्रिप्शन दोनों का उपयोग करता है। अन्यथा, अपनाने योग्य भंडारण पूर्ण-डिस्क एन्क्रिप्शन (FDE) का उपयोग करता है।
अपनाया गया डिवाइस का ऑन-डिस्क लेआउट आंतरिक डेटा विभाजन को बारीकी से प्रतिबिंबित करता है, जिसमें SELinux लेबल आदि शामिल हैं। जब एंड्रॉइड डिवाइस पर बहु-उपयोगकर्ता का समर्थन किया जाता है, तो अपनाया गया स्टोरेज डिवाइस भी बहु-उपयोगकर्ता का समर्थन करता है जिसमें आंतरिक के समान अलगाव होता है। भंडारण।
चूंकि गोद लिए गए स्टोरेज डिवाइस की सामग्री उस एंड्रॉइड डिवाइस से मजबूती से जुड़ी होती है जिसने इसे अपनाया था, एन्क्रिप्शन कुंजी को पैरेंट डिवाइस से निकालने योग्य नहीं होना चाहिए, और इसलिए स्टोरेज डिवाइस को कहीं और माउंट नहीं किया जा सकता है।
यदि आपका उपकरण FBE का उपयोग करता है, तो FBE दस्तावेज़ीकरण और मेटाडेटा एन्क्रिप्शन दस्तावेज़ देखें कि कैसे अपनाने योग्य संग्रहण पर FBE और मेटाडेटा एन्क्रिप्शन को कॉन्फ़िगर किया जाए।
प्रदर्शन और स्थिरता
केवल स्थिर स्थानों में बाहरी भंडारण मीडिया, जैसे कि बैटरी डिब्बे के अंदर या सुरक्षा कवर के पीछे स्लॉट, को आकस्मिक डेटा हानि या भ्रष्टाचार से बचने में मदद करने के लिए अपनाने पर विचार किया जाना चाहिए। विशेष रूप से, फोन या टैबलेट से जुड़े यूएसबी उपकरणों को अपनाने के लिए कभी भी विचार नहीं किया जाना चाहिए। एक सामान्य अपवाद एक टीवी-शैली डिवाइस से जुड़ा एक बाहरी यूएसबी ड्राइव होगा, क्योंकि संपूर्ण टीवी आमतौर पर एक स्थिर स्थान पर स्थापित होता है।
जब कोई उपयोगकर्ता एक नया स्टोरेज डिवाइस अपनाता है, तो प्लेटफॉर्म एक बेंचमार्क चलाता है और इसके प्रदर्शन की तुलना आंतरिक स्टोरेज से करता है। यदि अपनाया गया उपकरण आंतरिक भंडारण की तुलना में काफी धीमा है, तो प्लेटफॉर्म उपयोगकर्ता को संभावित रूप से खराब अनुभव के बारे में चेतावनी देता है। यह बेंचमार्क लोकप्रिय Android ऐप्स के वास्तविक I/O व्यवहार से लिया गया था। वर्तमान में, एओएसपी कार्यान्वयन केवल एक सीमा से परे उपयोगकर्ताओं को चेतावनी देगा, लेकिन डिवाइस निर्माता इसे और भी अनुकूलित कर सकते हैं, जैसे कार्ड बेहद धीमी गति से गोद लेने को पूरी तरह से अस्वीकार करना।
अपनाए गए उपकरणों को एक फाइल सिस्टम के साथ स्वरूपित किया जाना चाहिए जो POSIX अनुमतियों और विस्तारित विशेषताओं का समर्थन करता है, जैसे कि ext4
या f2fs
। इष्टतम प्रदर्शन के लिए, f2fs
फाइल सिस्टम को फ्लैश-आधारित भंडारण उपकरणों के लिए अनुशंसित किया जाता है।
आवधिक निष्क्रिय रखरखाव करते समय, प्लेटफ़ॉर्म FI_TRIM
को अपनाया गया मीडिया को ठीक उसी तरह जारी करता है जैसे वह आंतरिक भंडारण के लिए करता है। वर्तमान एसडी कार्ड विनिर्देश DISCARD
कमांड का समर्थन नहीं करता है; लेकिन कर्नेल इसके बजाय ERASE
कमांड पर वापस आ जाता है, जिसे SD कार्ड फर्मवेयर अनुकूलन उद्देश्यों के लिए उपयोग करना चुन सकता है।
परिक्षण
यह जांचने के लिए कि गोद लेने योग्य भंडारण काम कर रहा है, यह सीटीएस परीक्षण चलाएं:
cts-tradefed run commandAndExit cts-dev \ -m CtsAppSecurityHostTestCases \ -t android.appsecurity.cts.AdoptableHostTest
यूएसबी ड्राइव और एसडी कार्ड के व्यवहार को सत्यापित करने के लिए जब डिवाइस में एक अंतर्निहित स्लॉट नहीं होता है या जब एक सक्रिय एडीबी कनेक्शन के लिए यूएसबी कनेक्टर का उपयोग किया जा रहा है, तो इसका उपयोग करें:
adb shell sm set-virtual-disk true