EROFS

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

يتمثّل الاختلاف الأساسي بين نظام 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، يجب إيقاف الضغط لاستخدام هذا الخيار.

التأثير على وكالات السفر على الإنترنت

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