نظام 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

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

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

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