EROFS

EROFS هو نظام ملفات للقراءة فقط تم تقديمه في الإصدار 4.19 من Linux. وهو يتيح ميزة الضغط وإزالة تكرار البيانات، كما تم تحسينه لتحسين أداء القراءة.

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

لا يلزم ضغط صور EROFS. ومع ذلك، عند استخدام ميزة الضغط، يكون حجم الصور أصغر بنسبة% 25 في المتوسّط. عند استخدام أعلى مستويات الضغط، يمكن تصغير حجم الصور بنسبة تصل إلى% 45.

سواءً كان يتم استخدام ميزة الضغط أم لا، تبيّن أنّ نظام EROFS يتفوق على أنظمة الملفات الأخرى في أوقات الوصول العشوائي والتسلسلي.

تغييرات الإصدار

لتفعيل نظام EROFS، استخدِم نوع نظام الملفات erofs في BoardConfig.mk. مثلاً:

BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE := erofs
BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE := erofs
BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE := erofs
BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE := erofs
BOARD_VENDOR_DLKMIMAGE_FILE_SYSTEM_TYPE := erofs
BOARD_SYSTEM_DLKMIMAGE_FILE_SYSTEM_TYPE := erofs

تغييرات في ملف fstab

نوع fstab هو erofs، وخيار التثبيت الوحيد المطلوب هو ro. للحفاظ على إمكانية اختبار صور GSI المستندة إلى EXT4، يمكنك استخدام إدخالَين في fstab لملف /system.

مثلاً:

system    /system    erofs   ro              wait,slotselect,avb=vbmeta_system,logical,first_stage_mount
system    /system    ext4    ro,barrier=1    wait,slotselect,avb=vbmeta_system,logical,first_stage_mount

ضبط الضغط

يُضغط تنسيق EROFS تلقائيًا إلى وحدات ذات حجم ثابت. يمكن زيادة كفاءة الضغط بشكل كبير من خلال تفعيل الكتل ذات الطول المتغير. يمكن تعديل ذلك باستخدام العلامة التالية:

BOARD_EROFS_PCLUSTER_SIZE := 262144

يؤدي ذلك إلى ضبط الحد الأقصى لـ PCLUSTER أو حجم الكتلة ذات الطول المتغير على 262144 بايت. يجب أن يكون الرقم من مضاعفات 4096. تنخفض الفوائد عند استخدام قيم أعلى، ويمكن أن تؤدي القيم الأعلى إلى خفض أداء القراءة استنادًا إلى تجهيزات الجهاز.

إيقاف الضغط

يكون مخطّط الضغط تلقائيًا هو lz4hc. لإيقاف الضغط، استخدِم:

BOARD_EROFS_COMPRESSOR := none

ويمكن تغيير ذلك لكل قسم أيضًا، على سبيل المثال:

BOARD_SYSTEMIMAGE_EROFS_COMPRESSOR := none

إزالة التكرار

يمكن لنظام EROFS مشاركة الكتل المكرّرة باستخدام العلامة التالية:

BOARD_EROFS_SHARE_DUP_BLOCKS := true

اعتبارًا من الإصدار 13 من Android، يجب إيقاف ميزة الضغط لاستخدام هذا الخيار.

التأثير على المواقع الإلكترونية لحجز الفنادق

اعتبارًا من الإصدار 13 من Android، أصبح نظام EROFS متوافقًا بالكامل مع ميزة "التحديث الثنائي الافتراضي". يمكن لأداة إنشاء حزم OTA إنشاء بيانات دلالية من خلال فك ضغط مجموعات LZ4 بذكاء داخل نظام الملفات. ما دامت كلتا الإصدارتَين المصدر والوجهة تستخدمان مكتبة LZ4 نفسها، يكون حجم حزمة OTA مشابهًا لحجم حزمة OTA المستندة إلى EXT4. حتى إذا كانت الإصدارات src أو dst لا تستخدم مكتبة LZ4 المعروفة نفسها، من المفترض ألا يكون لذلك سوى تأثير بسيط في حجم التحديث عبر الهواء.