अपनाने योग्य भंडारण

एंड्रॉइड ने हमेशा बाहरी स्टोरेज एक्सेसरीज़ (जैसे एसडी कार्ड) का समर्थन किया है, लेकिन ये एक्सेसरीज़ ऐतिहासिक रूप से साधारण फ़ाइल स्टोरेज तक ही सीमित थीं, उनकी अपेक्षित अस्थिरता और पारंपरिक बाहरी स्टोरेज के लिए दी जाने वाली न्यूनतम डेटा सुरक्षा के कारण। एंड्रॉइड 6.0 ने आंतरिक स्टोरेज की तरह कार्य करने के लिए बाहरी स्टोरेज मीडिया को अपनाने की क्षमता पेश की।

जब बाह्य भंडारण मीडिया को अपनाया जाता है, तो इसे एक समय में केवल एक ही एंड्रॉइड डिवाइस के साथ काम करने के लिए स्वरूपित और एन्क्रिप्ट किया जाता है। क्योंकि मीडिया उस एंड्रॉइड डिवाइस से दृढ़ता से जुड़ा हुआ है जिसने इसे अपनाया है, यह सभी उपयोगकर्ताओं के लिए ऐप्स और निजी डेटा दोनों को सुरक्षित रूप से संग्रहीत कर सकता है।

जब उपयोगकर्ता किसी अपनाने योग्य स्थान पर नया स्टोरेज मीडिया (जैसे एसडी कार्ड) डालते हैं, तो एंड्रॉइड उनसे पूछता है कि वे मीडिया का उपयोग कैसे करना चाहते हैं। वे मीडिया को अपनाना चुन सकते हैं, जो इसे प्रारूपित और एन्क्रिप्ट करता है, या वे साधारण फ़ाइल भंडारण के लिए इसका उपयोग जारी रख सकते हैं। यदि वे अपनाना चुनते हैं, तो प्लेटफ़ॉर्म प्राथमिक साझा भंडारण सामग्री (आमतौर पर /sdcard पर माउंट किया गया) को नए अपनाए गए मीडिया में स्थानांतरित करने की पेशकश करता है, जिससे आंतरिक भंडारण पर मूल्यवान स्थान खाली हो जाता है। पारंपरिक भंडारण के विपरीत, जो एमबीआर के उपयोग के कारण 2टीबी तक सीमित है, अपनाने योग्य भंडारण जीपीटी का उपयोग करता है और इसलिए फ़ाइल भंडारण सीमा ~9ZB है।

ऐप्स को अपनाए गए स्टोरेज मीडिया पर तभी रखा जा सकता है जब डेवलपर ने android:installLocation विशेषता के माध्यम से समर्थन का संकेत दिया हो। समर्थित ऐप्स के नए इंस्टॉल स्वचालित रूप से सबसे खाली स्थान वाले स्टोरेज डिवाइस पर रखे जाते हैं, और उपयोगकर्ता सेटिंग्स ऐप में स्टोरेज डिवाइसों के बीच समर्थित ऐप्स को स्थानांतरित कर सकते हैं। अपनाए गए मीडिया में ले जाए गए ऐप्स को मीडिया के बाहर निकलने के दौरान याद रखा जाता है, और मीडिया के दोबारा डालने पर वापस आ जाते हैं।

सुरक्षा

प्लेटफ़ॉर्म प्रत्येक अपनाए गए डिवाइस के लिए यादृच्छिक रूप से एन्क्रिप्शन कुंजी उत्पन्न करता है और उन्हें एंड्रॉइड डिवाइस के आंतरिक भंडारण पर संग्रहीत करता है। यह प्रभावी रूप से अपनाए गए मीडिया को आंतरिक भंडारण जितना सुरक्षित बनाता है। कुंजियाँ अपनाए गए विभाजन GUID के आधार पर अपनाए गए उपकरणों से जुड़ी होती हैं।

यदि डिवाइस को उसके आंतरिक स्टोरेज पर फ़ाइल-आधारित एन्क्रिप्शन (FBE) का उपयोग करने के लिए कॉन्फ़िगर किया गया है, तो अपनाने योग्य स्टोरेज FBE और मेटाडेटा एन्क्रिप्शन दोनों का उपयोग करता है। अन्यथा, अपनाने योग्य भंडारण पूर्ण-डिस्क एन्क्रिप्शन (FDE) का उपयोग करता है।

अपनाए गए डिवाइस का ऑन-डिस्क लेआउट आंतरिक डेटा विभाजन को बारीकी से प्रतिबिंबित करता है, जिसमें SELinux लेबल आदि शामिल हैं। जब एंड्रॉइड डिवाइस पर बहु-उपयोगकर्ता का समर्थन किया जाता है, तो अपनाया गया स्टोरेज डिवाइस आंतरिक के समान अलगाव के स्तर के साथ बहु-उपयोगकर्ता का भी समर्थन करता है। भंडारण।

चूँकि अपनाए गए स्टोरेज डिवाइस की सामग्री उस एंड्रॉइड डिवाइस से मजबूती से जुड़ी होती है जिसने इसे अपनाया है, एन्क्रिप्शन कुंजियाँ मूल डिवाइस से निकालने योग्य नहीं होनी चाहिए, और इसलिए स्टोरेज डिवाइस को कहीं और माउंट नहीं किया जा सकता है।

यदि आपका डिवाइस एफबीई का उपयोग करता है, तो अपनाने योग्य स्टोरेज पर एफबीई और मेटाडेटा एन्क्रिप्शन को कॉन्फ़िगर करने के तरीके के लिए एफबीई दस्तावेज़ और मेटाडेटा एन्क्रिप्शन दस्तावेज़ देखें।

प्रदर्शन और स्थिरता

आकस्मिक डेटा हानि या भ्रष्टाचार से बचने में मदद के लिए केवल स्थिर स्थानों में बाहरी भंडारण मीडिया, जैसे बैटरी डिब्बे के अंदर या सुरक्षात्मक आवरण के पीछे एक स्लॉट को अपनाने पर विचार किया जाना चाहिए। विशेष रूप से, फ़ोन या टैबलेट से जुड़े USB उपकरणों को अपनाने पर कभी भी विचार नहीं किया जाना चाहिए। एक सामान्य अपवाद टीवी-शैली डिवाइस से जुड़ा एक बाहरी यूएसबी ड्राइव होगा, क्योंकि संपूर्ण टीवी आमतौर पर एक स्थिर स्थान पर स्थापित होता है।

जब कोई उपयोगकर्ता एक नया स्टोरेज डिवाइस अपनाता है, तो प्लेटफ़ॉर्म एक बेंचमार्क चलाता है और आंतरिक स्टोरेज के साथ उसके प्रदर्शन की तुलना करता है। यदि अपनाया गया उपकरण आंतरिक भंडारण की तुलना में काफी धीमा है, तो प्लेटफ़ॉर्म उपयोगकर्ता को संभावित रूप से खराब अनुभव के बारे में चेतावनी देता है। यह बेंचमार्क लोकप्रिय एंड्रॉइड ऐप्स के वास्तविक 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