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