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

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

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

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

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

الأمان

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

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

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

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

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

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

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

عندما يستخدم المستخدم جهاز تخزين جديدًا، تُجري المنصة اختبارًا مرجعيًا ومقارنةً بين أدائه وأداء مساحة التخزين الداخلية. إذا كان الجهاز المُستخدَم أبطأ بكثير من مساحة التخزين الداخلية، تحذّر المنصة المستخدم بشأن احتمال تدني جودة التجربة. تم استخراج هذا المقياس من السلوك الفعلي لعمليات I/O في تطبيقات 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