مساحة التخزين القابلة للاستخدام

يتوافق Android دائمًا مع ملحقات وحدة التخزين الخارجية (مثل بطاقات SD)، ولكن كانت هذه الملحقات مقصورة تاريخيًا على تخزين الملفات البسيط، بسبب عدم الاستقرار المتوقع للبيانات والحدّ الأدنى من حماية البيانات وحدة التخزين الخارجية التقليدية. في نظام التشغيل Android 6.0، أصبح بالإمكان استخدام وسائط التخزين الخارجية للعمل كمحتوى داخلي مساحة التخزين.

عند استخدام وسائط التخزين الخارجية، يتم تنسيقها وتشفيرها لتكون فقط تعمل مع جهاز Android واحد في كل مرة. لأن وسائل الإعلام مرتبطة ارتباطًا وثيقًا إلى جهاز Android الذي يستخدمه، يمكن تخزين التطبيقات البيانات الخاصة لجميع المستخدمين.

عندما يُدخِل المستخدمون وسائط تخزين جديدة (مثل بطاقة SD) في وحدة تخزين قابلة للاعتماد الموقع الجغرافي، يسألهم Android عن الطريقة التي يريدون بها استخدام الوسائط. يمكنهم اختيار استخدام الوسائط وتنسيقها وتشفيرها، أو مواصلة استخدامها كما هو لتخزين ملفات بسيطة. وإذا اختاروا الاعتماد، تقدّم المنصة لنقل محتوى وحدة التخزين المشتركة الأساسية (التي يتم تثبيتها عادةً في /sdcard) إلى وسائل الإعلام المعتمدة حديثًا، ما يوفر مساحة قيّمة على وحدة التخزين الداخلية. بخلاف مساحة التخزين التقليدية، التي تقتصر على 2 تيرابايت نظرًا استخدام MBR، استخدامات مساحة التخزين القابلة للاستخدام GPT ولذلك، يبلغ الحد الأقصى لتخزين الملفات 9ZB تقريبًا.

لا يمكن وضع التطبيقات على وسائط التخزين المعتمَدة إلا إذا توفَّر المطوِّر تشير إلى الدعم من خلال السمة android:installLocation. يتم تلقائيًا وضع عمليات التثبيت الجديدة للتطبيقات المتوافقة على جهاز تخزين يحتوي على أكبر مساحة خالية، ويمكن للمستخدمين نقل التطبيقات المتوافقة بين أجهزة التخزين في تطبيق الإعدادات. التطبيقات التي تم نقلها إلى قائمة التطبيقات المعتمَدة يتم تذكر الوسائط أثناء إخراج الوسائط، والعودة عند إعادة إدراج الوسائط.

الأمان

يُنشئ النظام الأساسي مفاتيح تشفير عشوائيًا لكل جهاز يتم استخدامه. وتخزينها على وحدة التخزين الداخلية لجهاز Android. هذا النمط تجعل الوسائط المستخدمة آمنة مثل وحدة التخزين الداخلية بشكل فعال. المفاتيح هي المرتبطة بالأجهزة المعتمدة بناءً على المعرّف الفريد العام للقسم المعتمد.

إذا تم ضبط الجهاز على استخدام التشفير المستند إلى الملفات (FBE) على وحدة التخزين الداخلية، وتستخدم وحدة التخزين القابلة للاستخدام كلاً من FBE وتشفير البيانات الوصفية. وبخلاف ذلك، تستخدم وحدة التخزين القابلة للاستخدام قرصًا كاملاً تشفير (FDE).

يُحاكي تصميم القرص على الجهاز المستخدَم بشكل وثيق البيانات الداخلية. بما في ذلك تصنيفات SELinux وما إلى ذلك. عندما يتم دعم تعدد المستخدمين جهاز Android، فإن جهاز التخزين المعتمد يدعم أيضًا إمكانية تعدد المستخدمين المستوى نفسه من العزلة مثل وحدة التخزين الداخلية.

ونظرًا لارتباط محتوى جهاز التخزين المعتمد ارتباطًا وثيقًا جهاز Android الذي استخدمه، يجب ألا تكون مفاتيح التشفير قابلة للاستخراج. من الجهاز الرئيسي، وبالتالي يتعذّر تثبيت جهاز التخزين في مكان آخر.

إذا كان جهازك يستخدم FBE، فارجع إلى FBE. المستندات والبيانات الوصفية مستندات التشفير حول كيفية ضبط FBE وتشفير البيانات الوصفية على وحدة تخزين قابلة للاستخدام.

الأداء والثبات

وسائط تخزين خارجية فقط في مواقع ثابتة، مثل فتحة داخل في حجرة البطارية أو خلف غطاء واقي للمساعدة في تجنب فقدان البيانات أو التلف غير المقصود. وعلى وجه الخصوص، USB لا ينبغي أبدًا النظر في اعتماد الأجهزة المتصلة بهاتف أو جهاز لوحي. يتمثل الاستثناء الوحيد الشائع في وجود محرك أقراص USB خارجي متصل بوحدة الجهاز، لأنّ التلفزيون بأكمله يكون عادةً مثبَّتًا في مكان ثابت.

عندما يستخدم مستخدم جهاز تخزين جديد، تقوم المنصة بتشغيل معيار ويقارن أداءه مقابل وحدة التخزين الداخلية. إذا كان الجهاز المعتمد يحذّر النظام الأساسي المستخدم من حدوث خطأ وهو أبطأ بكثير من وحدة التخزين الداخلية بتجربة منخفضة. تم استخلاص مقياس الأداء من بيانات وحدات الإدخال والإخراج الفعلية سلوك تطبيقات Android الشائعة. في الوقت الحالي، ستكون عملية تنفيذ AOSP تحذير المستخدمين بعد تجاوز حدّ واحد، ولكن قد تطبّق الشركات المصنّعة للأجهزة مثل رفض الاعتماد تمامًا إذا كانت البطاقة بطيئة للغاية.

يجب تنسيق الأجهزة التي تم اعتمادها باستخدام نظام ملفات يتوافق مع POSIX. الأذونات والسمات الموسّعة، مثل ext4 أو f2fs للحصول على الأداء الأمثل، يكون نظام ملفات f2fs يُنصح به مع أجهزة التخزين المستندة إلى الفلاش.

عند إجراء صيانة دورية في وضع عدم النشاط، لا يعمل النظام الأساسي FI_TRIM لتشغيل الوسائط كما هو الحال مع وحدة التخزين الداخلية. مواصفات بطاقة SD الحالية لا تتوافق مع DISCARD Command ولكن بدلاً من ذلك، تعود النواة إلى الأمر 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