F2FS
F2FS ( نظام الملفات المتوافق مع الفلاش ) هو نظام ملفات فلاش تم تطويره في البداية بواسطة شركة سامسونج للإلكترونيات لنواة لينكس . [ 7 ]
كان الدافع وراء F2FS هو بناء نظام ملفات يأخذ في الاعتبار، منذ البداية، خصائص أجهزة التخزين القائمة على ذاكرة الفلاش NAND (مثل الأقراص الصلبة ، و eMMC ، وبطاقات SD )، والتي تستخدم على نطاق واسع في أنظمة الكمبيوتر التي تتراوح من الأجهزة المحمولة إلى الخوادم.
صُمم نظام الملفات F2FS استنادًا إلى منهجية نظام الملفات ذي البنية السجلية ، والمُكيّف مع أشكال التخزين الحديثة. وقد صرّح جايجوك كيم، المؤلف الرئيسي لنظام F2FS، بأنه يُعالج بعض المشكلات المعروفة [ 7 ] لأنظمة الملفات القديمة ذات البنية السجلية، مثل تأثير كرة الثلج الناتج عن الأشجار المتجولة وارتفاع تكلفة التنظيف. إضافةً إلى ذلك، ونظرًا لأن جهاز التخزين القائم على ذاكرة NAND يُظهر خصائص مختلفة وفقًا لبنيته الداخلية أو آلية إدارة ذاكرة الفلاش (مثل طبقة ترجمة الفلاش أو FTL)، فإنه يدعم معايير متنوعة ليس فقط لتكوين تخطيط القرص، بل أيضًا لاختيار خوارزميات التخصيص والتنظيف.
سمات
- تسجيل متعدد الرؤوس
- جدول تجزئة متعدد المستويات لإدخالات الدليل
- فصل البيانات الساخنة والباردة الثابتة/الديناميكية
- مخطط التسجيل التكيفي
- وحدات تشغيل قابلة للتكوين
- نقطة تفتيش مزدوجة
- استعادة البيانات بالتراجع والتقدم
- تخصيص الكتل على نمط الكومة
- دعم TRIM/FITRIM [ 8 ]
- إلغاء تجزئة نظام الملفات عبر الإنترنت / إلغاء تجزئة الملفات [ 9 ]
- Inline xattrs [ 10 ] /data [ 11 ] /dir [ 12 ]
- فحص نظام الملفات دون اتصال بالإنترنت (التحقق من عدم الاتساق وإصلاحه [ 13 ] )
- العمليات الذرية [ 14 ]
- التشفير على مستوى نظام الملفات [ 15 ]
- تغيير الحجم دون اتصال بالإنترنت (التصغير غير مدعوم). [ 16 ]
- تفريغ البيانات الدوري الداخلي [ 17 ]
- ذاكرة التخزين المؤقت [ 18 ]
- ضغط الملفات الشفاف باستخدام LZO أو LZ4 (مع Linux 5.6)، [ 5 ] أو zstd (مع Linux 5.7) [ 6 ]
- النسخ عند الكتابة [ 19 ]
تصميم
تخطيط القرص
يقسم نظام الملفات F2FS وحدة التخزين بأكملها إلى عدد من الأجزاء، كل جزء منها ثابت بحجم 2 ميجابايت. يتكون القسم من أجزاء متتالية، بينما تتكون المنطقة من مجموعة من الأقسام. افتراضيًا، يكون حجم القسم والمنطقة متساويًا، ولكن يمكن للمستخدمين تعديل الحجم بسهولة mkfs.
يقسم نظام F2FS وحدة التخزين بأكملها إلى ست مناطق، وكلها باستثناء منطقة الكتلة الفائقة تتكون من أجزاء متعددة كما هو موضح أدناه.
- الكتلة الفائقة (SB)
- يقع قسم التخزين المؤقت (SB) في بداية القسم. توجد نسختان منه لتجنب تلف نظام الملفات. يحتوي على معلومات أساسية عن القسم وبعض معلمات نظام الملفات F2FS الافتراضية.
- نقطة تفتيش (CP)
- يحتوي CP على معلومات نظام الملفات، وخرائط بت لمجموعات NAT/SIT الصالحة، وقوائم inode اليتيمة، وإدخالات ملخصة للقطاعات النشطة الحالية.
- جدول معلومات القطاع (SIT)
- يحتوي ملف SIT على عدد الكتل الصالحة وخريطة البتات الخاصة بصحة جميع كتل المنطقة الرئيسية.
- جدول عناوين العقدة (NAT)
- NAT عبارة عن جدول عناوين لكتل عقد المنطقة الرئيسية.
- ملخص منطقة القطاع (SSA)
- يحتوي سجل SSA على إدخالات تتضمن معلومات المالك لبيانات المنطقة الرئيسية وكتل العقد.
- المنطقة الرئيسية
- تحتوي المنطقة الرئيسية على بيانات الملفات والمجلدات وفهارسها.
لتجنب عدم التوافق بين نظام الملفات وذاكرة الفلاش، يقوم نظام F2FS بمواءمة عنوان كتلة البداية لوحدة المعالجة المركزية مع حجم القطاع. كما يقوم بمواءمة عنوان كتلة البداية للمنطقة الرئيسية مع حجم المنطقة عن طريق حجز بعض القطاعات في منطقة SSA.
بنية البيانات الوصفية
يستخدم نظام الملفات F2FS آلية نقاط التحقق للحفاظ على سلامة نظام الملفات. عند تحميل القرص، يحاول F2FS أولاً العثور على آخر بيانات نقطة تحقق صالحة من خلال مسح منطقة نقاط التحقق. ولتقليل وقت المسح، يستخدم F2FS نسختين فقط من نقاط التحقق. تشير إحداهما دائمًا إلى آخر البيانات الصالحة، وهو ما يُعرف بآلية النسخ الظلي. بالإضافة إلى نقاط التحقق، يستخدم كل من NAT وSIT آلية النسخ الظلي أيضًا. ولضمان اتساق نظام الملفات، تشير كل نقطة تحقق إلى النسخ الصالحة من NAT وSIT.
بنية الفهرس
بنية البيانات الأساسية هي "العقدة". على غرار هياكل الملفات التقليدية، يحتوي نظام F2FS على ثلاثة أنواع من العقد: عقدة داخلية (inode)، وعقدة مباشرة، وعقدة غير مباشرة. يخصص F2FS حجم 4 كيلوبايت لكتلة العقدة الداخلية، والتي تحتوي على 923 مؤشرًا لكتل البيانات، ومؤشرين للعقدة المباشرة، ومؤشرين للعقدة غير المباشرة، ومؤشر واحد للعقدة غير المباشرة المزدوجة، كما هو موضح أدناه. تحتوي كتلة العقدة المباشرة على 1018 مؤشرًا لكتل البيانات، بينما تحتوي كتلة العقدة غير المباشرة على 1018 مؤشرًا لكتلة العقدة. وبالتالي، تغطي كتلة عقدة داخلية واحدة (أي ملف) ما يلي:
4 كيلو بايت × (923 + 2×1018 + 2×1018 2 + 1018 3 ) = 4,228,213,756 كيلو بايت = 4,129,114.996 ميجا بايت = 4,032.338863 جيجا بايت = 3.937830921 تيرا بايت
لاحظ أن جميع كتل العقد تُربط بواسطة NAT، مما يعني أن موقع كل عقدة يُترجم بواسطة NAT. وللتخفيف من مشكلة الشجرة المتجولة، تستطيع خوارزمية F2FS قطع انتشار تحديثات العقد الناتجة عن كتابة بيانات الأوراق.
هيكل الدليل
يشغل إدخال الدليل (dentry) 11 بايت، ويتكون من السمات التالية.
| هاش | قيمة التجزئة لاسم الملف |
|---|---|
| إينو | رقم العقدة |
| لين | طول اسم الملف |
| يكتب | أنواع الملفات مثل الدليل، والروابط الرمزية، وما إلى ذلك. |
تتكون كتلة إدخال البيانات من 214 خانة إدخال بيانات وأسماء ملفات. تُستخدم خريطة بتية لتمثيل ما إذا كان كل إدخال بيانات صالحًا أم لا. تشغل كتلة إدخال البيانات 4 كيلوبايت وتتكون من العناصر التالية:
كتلة البيانات (4 كيلوبايت) = صورة نقطية (27 بايت) + محجوز (3 بايت) + dentries (11 * 214 بايت) + اسم الملف (8 * 214 بايت)
يستخدم نظام الملفات F2FS جداول تجزئة متعددة المستويات لبنية الدليل. يحتوي كل مستوى على جدول تجزئة بعدد محدد من خانات التجزئة كما هو موضح أدناه. لاحظ أن "A(2B)" تعني أن الخانة تتضمن كتلتين من البيانات.
- شرط
- يشير الحرف A إلى دلو
- يشير الحرف B إلى الكتلة
- يشير N إلى MAX_DIR_HASH_DEPTH
المستوى رقم 0 أ(2ب) المستوى رقم 1 أ(2ب) - أ(2ب) المستوى رقم 2 A(2B) - A(2B) - A(2B) - A(2B) ... المستوى #N/2 A(2B) - A(2B) - A(2B) - A(2B) - A(2B) - ... - A(2B) ... المستوى #NA(4B) - A(4B) - A(4B) - A(4B) - A(4B) - ... - A(4B)
عندما يعثر نظام الملفات F2FS على اسم ملف في دليل، يحسب أولًا قيمة تجزئة لهذا الاسم. ثم يفحص جدول التجزئة في المستوى 0 للعثور على مدخل البيانات الذي يتكون من اسم الملف ورقم عقدة البيانات (inode). إذا لم يُعثر عليه، يفحص F2FS جدول التجزئة التالي في المستوى 1. وبهذه الطريقة، يفحص F2FS جداول التجزئة في كل مستوى بشكل تصاعدي من 1 إلى N. في كل مستوى، يحتاج F2FS إلى فحص خانة واحدة فقط، وفقًا للمعادلة التالية، والتي تُظهر تعقيدًا زمنيًا قدره O(log(عدد الملفات)).
رقم الحاوية المراد مسحها ضوئياً في المستوى رقم ن = (قيمة التجزئة) % (عدد الحاويات في المستوى رقم ن)
في حالة إنشاء ملف، يبحث نظام F2FS عن خانات متتالية فارغة تغطي اسم الملف. ويقوم F2FS بالبحث عن هذه الخانات الفارغة في جداول التجزئة ذات المستويات الكاملة من 1 إلى N بنفس طريقة عملية البحث.
تخصيص الكتلة الافتراضي
أثناء التشغيل، يدير F2FS ستة سجلات نشطة داخل "المنطقة الرئيسية": عقدة Hot/Warm/Cold وبيانات Hot/Warm/Cold.
| العقدة الساخنة | يحتوي على كتل عقد مباشرة من الدلائل. |
|---|---|
| عقدة دافئة | يحتوي على كتل العقد المباشرة باستثناء كتل العقد الساخنة. |
| عقدة باردة | يحتوي على كتل عقد غير مباشرة. |
| بيانات ساخنة | يحتوي على قوالب طب الأسنان. |
| بيانات دافئة | يحتوي على كتل البيانات باستثناء كتل البيانات الساخنة والباردة. |
| بيانات باردة | يحتوي على بيانات وسائط متعددة أو كتل بيانات تم ترحيلها. |
يحتوي نظام الملفات LFS على نظامين لإدارة المساحة الحرة: السجل المترابط والنسخ والضغط. يُعد نظام النسخ والضغط، المعروف أيضًا بالتنظيف، مناسبًا للأجهزة ذات أداء الكتابة التسلسلية الممتاز، حيث تُخدَم المقاطع الحرة باستمرار لكتابة البيانات الجديدة. مع ذلك، يُعاني هذا النظام من عبء التنظيف الزائد أثناء الاستخدام المكثف. في المقابل، يُعاني نظام السجل المترابط من عمليات الكتابة العشوائية، ولكنه لا يتطلب عملية تنظيف. أما نظام F2FS فيعتمد نظامًا هجينًا، حيث يُعتمد نظام النسخ والضغط افتراضيًا، ولكن يتم تغيير السياسة ديناميكيًا إلى نظام السجل المترابط وفقًا لحالة نظام الملفات.
لتحقيق التوافق بين نظام الملفات F2FS ووحدات التخزين الأساسية القائمة على ذاكرة الفلاش، يُخصص F2FS مقطعًا في وحدة من قسم. ويتوقع F2FS أن يكون حجم القسم مساويًا لحجم وحدة تجميع البيانات المهملة في FTL. وفيما يتعلق بدقة التعيين في FTL، يُخصص F2FS كل قسم من سجلات البيانات النشطة لأكبر عدد ممكن من المناطق المختلفة. ويمكن لـ FTL كتابة بيانات سجلات البيانات النشطة في وحدة تخصيص واحدة وفقًا لدقة التعيين الخاصة به.
عملية التنظيف
يقوم نظام الملفات F2FS بالتنظيف عند الطلب وفي الخلفية. يبدأ التنظيف عند الطلب عندما لا تتوفر مساحات كافية لتلبية طلبات نظام الملفات الافتراضي (VFS). أما التنظيف في الخلفية فيتم تنفيذه بواسطة خيط معالجة في نواة النظام، ويبدأ عملية التنظيف عندما يكون النظام في وضع الخمول.
يدعم نظام الملفات F2FS سياستين لاختيار الشريحة المستهدفة: الخوارزمية الجشعة وخوارزمية التكلفة والعائد. في الخوارزمية الجشعة، يختار F2FS شريحة مستهدفة تحتوي على أقل عدد من الكتل الصالحة. أما في خوارزمية التكلفة والعائد، فيختار F2FS الشريحة المستهدفة بناءً على عمرها وعدد الكتل الصالحة فيها، وذلك لمعالجة مشكلة تذبذب حجم الكتل في السجل الموجودة في الخوارزمية الجشعة. يستخدم F2FS الخوارزمية الجشعة للتنظيف عند الطلب، بينما يستخدم التنظيف في الخلفية خوارزمية التكلفة والعائد.
لتحديد ما إذا كانت البيانات في قسم الضحية صالحة أم لا، يدير نظام الملفات F2FS خريطة بتات. يمثل كل بت صلاحية كتلة، وتتكون خريطة البتات من سلسلة بتات تغطي الكتل الكاملة في المنطقة الرئيسية.
التبني
مصنعي الهواتف
استخدمت جوجل نظام الملفات F2FS لأول مرة في هاتف Nexus 9 عام 2014. [ 20 ] إلا أن منتجات جوجل الأخرى لم تعتمد نظام F2FS إلا مع هاتف Pixel 3، عندما تم تحديث نظام F2FS بدعم مدمج لتقنية التشفير. [ 21 ]
استخدمت هواوي نظام الملفات F2FS منذ هاتف هواوي P9 في عام 2016. [ 22 ] [ 23 ] كما استخدمت ون بلس نظام الملفات F2FS في هاتف ون بلس 3T. [ 24 ]
تستخدم شركة موتورولا موبيليتي نظام الملفات F2FS في هواتفها من طراز Moto G/E/X وDroid منذ عام 2012.
استخدمت سامسونج نظام F2FS لأول مرة في هاتف Galaxy Note 10 في عام 2019. [ 25 ]
استخدمت شركة ZTE نظام F2FS منذ هاتف ZTE Axon 10 Pro في عام 2019. [ 26 ]
توزيعات لينكس
تم دمج نظام الملفات F2FS في نواة لينكس في أواخر عام 2012. [ 27 ] وتدعمه العديد من التوزيعات. [ 28 ] [ 29 ] [ 30 ]
وصف تفصيلي للميزات
| اسم الميزة | وصف | إصدار النواة | إصدار أدوات F2FS | التزام النواة | أدوات F2FS |
|---|---|---|---|---|---|
| بت رقم العقدة الأصلية المفقودة (pino) | إذا كان الملف مرتبطًا، فقد يفقد نظام الملفات F2FS رقم عقدة الأصل (inode) الخاص به، مما يستدعي إجراء عملية التحقق من حالة الملف المرتبط (checkpoint) في كل مرة. ولكن، إذا أمكن استعادة رقم عقدة الأصل بعد التحقق من الحالة، يمكن تعديل آلية إعادة التوجيه لعمليات التحقق اللاحقة، مما يُحسّن أداء عملية التحقق بشكل ملحوظ. | 3.11 | غير متوفر | 354a3399dc6f ("f2fs: استعادة pino الخاطئ بعد نقطة التفتيش أثناء fsync") | غير متوفر |
| السمات الموسعة المضمنة | أضف خيار التثبيت inline_xattr، والذي يتم تمكينه عند تعيين xattr، إذا تم تمكين خيار التثبيت، فسيتم وضع علامة inline_xattrs على جميع الملفات. | 3.12 | 1.2.0 | 444c580f7e9a ("f2fs: إضافة علامات للسمات الموسعة المضمنة") | cd1e470 ("fsck, lib: support inline xattr") |
| البيانات المضمنة | يدعم هذا النظام البيانات المضمنة في عقدة البيانات العادية/الرمزية عبر خيار تركيب البيانات المضمنة. | 3.14 | 1.3.0 | 1001b3479ce9 ("f2fs: إضافة علامات ومساعدات لدعم البيانات المضمنة") | 061ee67 ("f2fs-tools: إضافة فحص البيانات المضمنة") |
| دليل كبير | أضف مُعاملًا لضبط بنية الدليل الكبير لتحسين أداء البحث. | 3.15 | 1.4.0 | 3843154598a0 ("f2fs: تقديم دعم المجلدات الكبيرة") | 99250ec ("mkfs: دعم المجلدات الكبيرة") |
| صندوق كبير | يدعم أحجام البيانات الكبيرة التي تتجاوز 3 تيرابايت. | 3.16 | 1.4.0 | 1dbe4152168d ("f2fs: دعم الأحجام الكبيرة") | 092e3d9 ("mkfs.f2fs: دعم وحدات التخزين الكبيرة") |
| علم Fsck | يضيف علامة "الحاجة إلى fsck" إلى الكتلة الفائقة لإجراء fsck.f2fs لاحقًا، ولا يمكن إزالة هذه العلامة إلا بواسطة fsck.f2fs. | 3.18 | 1.4.0 | 2ae4c673e3cb ("f2fs: الاحتفاظ بمعلومات عدم الاتساق لبدء fsck.f2fs") | 7eb6c5a ("fsck.f2fs: إضافة ميزة الإصلاح التلقائي") |
| علامة Fastboot | السماح لملخصات عقدة كتابة نقطة التفتيش بتسريع عملية الإقلاع بعد انقطاع مفاجئ للتيار الكهربائي. | 3.2 | 1.4.1 | 119ee9144534 ("f2fs: تقسيم علامات UMOUNT و FASTBOOT") | b57708a ("dump.f2fs: عرض علامة نقطة التفتيش") |
| البيانات المضمنة (إصلاح) | تحسين استقرار ميزة inline_data (تغيير تخطيط القرص). | 3.19 | 1.4.1 | b3d208f96d6b ("f2fs: إعادة النظر في inline_data لتجنب تضارب البيانات والأخطاء المحتملة") | 7279f03 ("fsck.f2fs: إصلاح علامة DATA_EXIST للقسم القديم") |
| طب الأسنان المدمج | يدعم تخزين إدخالات الدليل في عقدة الدليل (inode). | 3.19 | 1.4.1 | 34d67debe02b ("f2fs: إضافة بنية تحتية ومساعد للدليل المضمن") | 6d88640 ("fsck.f2fs: دعم inline_dentry") |
| معلومات الإصدار | يخزن إصدار النواة الحالي، ويتم تحديثه عند فحص نظام الملفات (fsck). | 4.2 | 1.4.1 | 0040b933187b ("f2fs: إضافة معلومات الإصدار المفقودة في الكتلة الفائقة") | 6fa2547 ("fsck.f2fs: تشغيل fsck.f2fs عند إجراء تغيير جديد") |
| معلومات الإصدار الأولي | يحدد إصدار نواة لينكس عند إجراء عملية التهيئة. | 4.2 | 1.4.1 | 0040b933187b ("f2fs: إضافة معلومات الإصدار المفقودة في الكتلة الفائقة") | 762eedf ("mkfs.f2fs: تحديد إصدار النواة للتنسيق الأولي") |
| حافظ على حجم اللقمة | يضمن هذا الإجراء عدم تغيير حجم الملف المُخصص مسبقًا (باستخدام fallocate) أثناء عملية استعادة البيانات. إذا كان الملف بحاجة إلى الاحتفاظ بحجمه المُحدد بواسطة fallocate، فيجب إيقاف الاستعادة التلقائية أثناء عملية استعادة البيانات. | 4.1 | غير متوفر | 26787236b366 ("f2fs: لا تقم بتفعيل الاسترداد التلقائي لحجم i_size المخصص بالكامل") | غير متوفر |
| نقاط مضمنة | يدعم هذا البرنامج إصلاح المجلدات التي لا تحتوي على بادئات '.' أو '..'، كما أنه يغير تخطيط القرص. | 4.1 | 1.5.0 | 510022a85839 ("f2fs: أضف F2FS_INLINE_DOTS لاستعادة إدخالات النقطة المفقودة") | f1e4f9c ("fsck.f2fs: إصلاح مجلدات الدليل المفقودة") |
| التشفير | يُمكّن من دعم التشفير على مستوى نظام الملفات. | 4.2 | 1.5.0 | cde4de120577 ("f2fs crypto: declare some definitions for f2fs encryption feature") | 6e6c713 ("mkfs.f2fs: ضبط ميزة التشفير") |
| منطقة سكنية | حدد نظام الملفات F2FS لدعم ميزة تقسيم الكتل. يعتمد ذلك على ميزة الأجهزة المتعددة. | 4.8 | 1.7.0 | 52763a4b7a21 ("f2fs: اكتشاف SMR المُدار بواسطة المضيف بواسطة علامة الميزة") | 70a8fc3 ("mkfs/fsck: إضافة ميزة smr المُدارة من قِبل المضيف") |
| أجهزة متعددة | تفعيل دعم التعامل مع أجهزة التخزين المادية المتعددة كوحدة تخزين منطقية واحدة | 4.1 | 1.8.0 | 3c62be17d4f5 ("f2fs: يدعم أجهزة متعددة") | de7e07e ("f2fs-tools: دعم أجهزة متعددة") |
| علم مُقَصَّر | يعمل هذا الخيار (CP_TRIMMED_FLAG) على تحسين معالجة الكتل المهملة. يسمح هذا الخيار لوحدة نواة نظام الملفات F2FS بتسجيل أنه تم حذف جميع الكتل غير الصالحة قبل عملية فك التحميل، وبالتالي يمكن تخطي هذه العمليات عند التحميل التالي. | 4.12 | 1.9.0 | 1f43e2ad7bff ("f2fs: تقديم CP_TRIMMED_FLAG لتجنب الحذف غير الضروري") | f642b24 ("f2fs-tools: دعم لتعيين والتعرف على CP_TRIMMED_FLAG") |
| أجزاء NAT | يضيف خرائط نقطية لتمثيل كتل NAT الفارغة/الممتلئة التي تحتوي على جميع إدخالات nid المستخدمة/المجانية لتحسين إدارة كتل NAT. | 4.11 | 1.9.0 | 22ad0b6ab466 ("f2fs: إضافة صور نقطية لكتل NAT الفارغة أو الممتلئة") | 191573e ("mkfs.f2fs: دعم ميزة nat_bits") |
| التعافي من سرطان القولون والمستقيم | استخدم CRC بالإضافة إلى إصدار نقطة التحقق أثناء استعادة البيانات. يتيح ذلك طريقة أكثر دقة وموثوقية لتحديد إصدار الملف المراد استعادته. تم تقديم علامة جديدة (CP_CRC_RECOVERY_FLAG) للإشارة إلى وقت استخدام الآلية الجديدة. | 4.9 | 1.9.0 | a468f0ef516f ("f2fs: استخدم crc ونسخة cp لتحديد استعادة roll-forward") | a0bd5b9 ("f2fs-tools: catch up up-to-date checkpoint flag") |
| الكتابة الذرية | ميزة الكتابة الذرية، هذه الميزة لا تغير تخطيط القرص. | 4.14 | 1.9.0 | e65ef20781cb ("f2fs: إضافة ioctl لعرض الميزات الحالية") | 8721519 ("f2fs-tools: إضافة علامة ميزة atomic_write") |
| سمات إضافية | تفعيل ميزة السمات الإضافية، وهي مطلوبة لبعض الميزات الأخرى (انظر أدناه). | 4.14 | 1.9.0 | 7a2af766af15 ("f2fs: تحسين قابلية توسيع بنية inode على القرص") | dad33a1 ("f2fs-tools: تحسين قابلية توسيع بنية inode على القرص") |
| حصة المشروع | تفعيل تتبع معرف المشروع لحساب حصص المشاريع. يستخدم سمات إضافية. | 4.14 | 1.9.0 | 5c57132eaf52 ("f2fs: حصة دعم المشروع") | a3d9db1 ("f2fs-tools: دعم حصة المشروع") |
| مجموع التحقق من عقدة البيانات | تفعيل خاصية التحقق من مجموع التحقق من عقدة البيانات (inode). يستخدم سمات إضافية. | 4.14 | 1.9.0 | 704956ecf5bc ("f2fs: دعم مجموع التحقق من عقدة البيانات") | 7457726 ("f2fs-tools: دعم مجموع التحقق من عقدة الملف") |
| تعافي سرطان الخلايا الحرشفية | يعطل استخدام CRC أثناء عملية استعادة نقطة التفتيش بالاعتماد فقط على إصدار نقطة التفتيش. | 4.16 | 1.10.0 | f236792311f4 ("f2fs: السماح باستعادة كتل العقدة بناءً على نقطة التفتيش المحدثة") | f789444 ("fsck.f2fs: السماح بالتقدم للأمام لإصلاح نقطة التفتيش الصغيرة") |
| سمة xattr مضمنة مرنة | تفعيل حجم سمات xattr المضمنة المرنة. يستخدم سمات إضافية. | 4.15 | 1.10.0 | 6afc662e68b5 ("f2fs: دعم حجم xattr المضمن المرن") | 8d46072 ("f2fs-tools: دعم حجم xattr المضمن المرن") |
| ملف نظام الحصص | قم بتمكين ميزة الحصة (فهي تسمح لنظام الملفات F2FS بالاحتفاظ بملف نظام داخلي لتسجيل بيانات حصة القرص). | 4.15 | 1.10.0 | 234a96896142 ("f2fs: إضافة ميزة quota_ino إلى البنية التحتية") | 23a872f ("mkfs.f2fs: دعم خيار الحصة في mkfs") |
| ملف رقم التعريف الشخصي | دعم ملف التعريف الشخصي لتجنب نقل كتل البيانات المادية الخاصة به. | 4.16 | 1.12.0 | 1ad71a27124c ("f2fs: إضافة أمر ioctl لتعطيل جامع البيانات المهملة لملف معين") | "91bb7b2 ("f2fs-tools: إصلاح لإعادة ضبط i_gc_failures في وضع عدم الاتصال") 820b5e3 ("sload.f2fs: استخدام F2FS_COMPRESS_RELEASED بدلاً من بت IMMUTABLE") تمت إضافة علامة F2FS_PIN_FILE بدون أي استخدام." |
| وقت إنشاء عقدة البيانات (Inode) | تفعيل ميزة وقت إنشاء العقدة. يتطلب ذلك سمات إضافية. | 4.16 | 1.10.0 | 1c1d35df7110 ("f2fs: دعم وقت إنشاء عقدة البيانات"") | 4862080 ("f2fs-tools: دعم وقت إنشاء عقدة البيانات") |
| خريطة بتات العقدة الموسعة | قم بتمكين خريطة البتات الموسعة للعقدة لزيادة الحد الأعلى لعدد كتل العقدة. | 4.17 | 1.11.0 | 199bc3fef29c ("f2fs: دعم خريطة بتات NAT كبيرة") | baaa076 ("mkfs.f2fs: توسيع قابلية التوسع لخريطة بتات NAT") |
| امتدادات الملفات الشائعة | يُتيح هذا الخيار تحديد قائمة بامتدادات الملفات التي سيتعامل معها نظام F2FS كملفات نشطة. وسيتم تخزين بيانات الملفات ذات هذه الامتدادات في سجل الملفات النشطة. | 4.17 | 1.11.0 | b6a06cbbb5f7 ("f2fs: دعم امتدادات الملفات الساخنة") | 6fdc37f ("mkfs.f2fs: دعم امتداد الملف الساخن") |
| مفقودات ومعثورات | تفعيل خاصية المفقودات والمعثورات. | 4.17 | 1.11.0 | b7c409deda6b ("f2fs: تقديم ميزة F2FS_FEATURE_LOST_FOUND") | ff37829 ("mkfs.f2fs: إنشاء دليل lost+found") |
| fs-verity | تفعيل دعم الملفات المحمية بواسطة التحقق (المعروفة أيضًا باسم fs-verity). | 5.4 | 1.11.0 | 95ae251fe828 ("f2fs: إضافة دعم fs-verity") | 76cd377 ("mkfs.f2fs: دعم ميزة fsverity") |
| علامة تعطيل نقطة التفتيش | يشير هذا إلى أن نقطة التفتيش معطلة. | 4.2 | 1.12.0 | 4354994f097d ("f2fs: تعطيل نقطة التفتيش") | a48bda0 ("fsck.f2fs: support checkpoint=disable") |
| يحتاج نظام الحصص إلى فحص | أضف حالة عامة SBI_QUOTA_NEED_REPAIR للإشارة إلى فشل عملية الحصة بسبب -EIO أو -ENOSPC، وبالتالي، لاحقًا، أ) ستتخطى نقطة التحقق مزامنة بيانات تعريف الحصة. ب) سيتم تعيين CP_QUOTA_NEED_FSCK_FLAG في حزمة cp الأخيرة لإعطاء تلميح لإصلاح fsck. | 4.2 | 1.12.0 | af033b2aa8a8 ("f2fs: ضمان بيانات الحصص المسجلة بواسطة نقطة التفتيش") | dfede78 ("fsck.f2fs: اكتشاف واستعادة ملف الحصة التالف") |
| مجموع التحقق من الكتلة الفائقة | تفعيل خاصية التحقق من المجموع الاختباري للكتلة الرئيسية. | 4.2 | 1.12.0 | d440c52d3151 ("f2fs: دعم مجموع التحقق من الكتلة الفائقة") | 886a924 ("f2fs-tools: تقديم مجموع التحقق sb") |
| تعطيل نقطة التفتيش بسرعة | أضف طريقة سريعة لتعطيل نقاط التفتيش. | 5.1 | غير متوفر | db610a640eee ("f2fs: إضافة وضع سريع لـ checkpoint=disable لضمان الجودة") | غير متوفر |
| غلاف قابل للطي | تفعيل دعم طي الأحرف في نظام الملفات. يمكن تمرير علامات اختيارية باستخدام الخيار -C. | 5.4 | 1.13.0 | 5aba54302a46 ("f2fs: تضمين معلومات ترميز مجموعة الأحرف في الكتلة الفائقة") | ce64ea0 ("f2fs-tools: إضافة دعم لـ Casefolding") |
| ضغط | تفعيل دعم ضغط الملفات على مستوى نظام الملفات. يتطلب ذلك سمات إضافية. | 5.6 | 1.14.0 | 4c8ff7095bef ("f2fs: دعم ضغط البيانات") | fdd47b2 ("f2fs-tools: دعم ضغط البيانات") |
| تغيير حجم علامة نظام الملفات | يقدم علامة نقطة تفتيش جديدة، CP_RESIZEFS_FLAG، لمساعدة fsck في إصلاح المشكلات المتعلقة بتغيير الحجم عبر الإنترنت. | 5.7 | 1.14.0 | c84ef3c5e65c ("f2fs: إضافة علامة CP جديدة لمساعدة fsck في إصلاح مشكلات تغيير حجم SPO") | 9a31cef ("fsck.f2fs: السماح لـ fsck بإصلاح مشاكل تغيير الحجم عبر الإنترنت بسبب SPO") |
| الضغط (إصلاح) | يُدخل هذا التغيير علامة جديدة (F2FS_COMPRESS_RELEASED) لتمثيل حالة الكتل المضغوطة التي تم تحريرها. وكانت بتة IMMUTALABLE المستخدمة سابقًا تمنع جميع العمليات على الكتلة التي تم تحريرها. | 5.14 | 1.15.0 | c61404153eb6 ("f2fs: تقديم FI_COMPRESS_RELEASED بدلاً من استخدام بت IMMUTABLE") | 820b5e3 ("sload.f2fs: استخدم F2FS_COMPRESS_RELEASED بدلاً من بت IMMUTABLE") |
| صورة للقراءة فقط | قم بتمكين ميزة القراءة فقط لإزالة تخطيط OVP/SSA على القرص لقسم القراءة فقط الصغير. | 5.14 | 1.15.0 | a7d9fe3c3388 ("f2fs: دعم ميزة القراءة فقط") | 1d2683f ("f2fs-tools: دعم أقسام القراءة فقط الصغيرة") |
| عضّة جذعية | تقوم تقنية الإدخال/الإخراج المباشر (DIO) بتخصيص كتل فيزيائية مسبقًا قبل كتابة البيانات الفعلية، ولكن في حال حدوث خطأ أو انقطاع التيار الكهربائي، يمكن للمستخدم الوصول إلى محتويات الكتل غير المكتوبة. تعمل هذه الرقعة على إصلاح هذه المشكلة من خلال: 1) التحويل إلى الكتابة المخزنة مؤقتًا لتقنية DIO في الفجوات 2) اقتطاع الكتل غير المكتوبة الناتجة عن الخطأ أو انقطاع التيار الكهربائي. | 5.17 | غير متوفر | d4dd19ec1ea0 ("f2fs: لا تعرض الكتل غير المكتوبة للمستخدم بواسطة DIO") | غير متوفر |
| تسجيل خطأ CP | يدعم تسجيل خطأ نقطة التوقف التفصيلي في f2fs_super_block.s_stop_reason[]. | 6.1 | 1.16.0 | a9cfee0ef98e ("f2fs: دعم تسجيل سبب نقطة التوقف في الكتلة الفائقة") | 2f1dde2 ("fsck.f2fs: تشغيل عملية الإصلاح إذا تم إجبار نظام الملفات على التوقف") |
| تسجيل خطأ نظام الملفات | يدعم تسجيل السبب التفصيلي لخطأ FSCORRUPTED في f2fs_super_block.s_errors[]. | 6.1 | 1.16.0 | 95fa90c9e5a7 ("f2fs: دعم تسجيل الأخطاء في الكتلة الفائقة") | 8cbe34e ("fsck.f2fs: تشغيل عملية الإصلاح إذا كان نظام الملفات يحتوي على أخطاء غير متناسقة") |
| دعم الكتل بحجم 16 كيلوبايت | يدعم النظام حجم كتلة 16 كيلوبايت، ويمكن لأداة mkfs تحديد حجم الكتلة عبر الخيار -b، بينما تحصل الأدوات الأخرى على حجم الكتلة من الكتلة الرئيسية. تجدر الإشارة إلى أن النواة تدعم حاليًا حجم كتلة يساوي حجم صفحة النظام فقط، فلا يمكن لنواة 4 كيلوبايت تحميل نظام ملفات f2fs بحجم كتلة 16 كيلوبايت، والعكس صحيح. | 6.7 | لم يتم إصداره بعد | d7e9a9037de2 ("f2fs: دعم حجم الكتلة == حجم الصفحة") | 50fd00b ("أدوات f2fs: دعم أحجام كتل مختلفة") c404632 ("أدوات f2fs: إعادة هيكلة بنية f2fs_dentry_block") ef47782 ("أدوات f2fs: إعادة هيكلة بنية كتلة الملخص وما شابهها") bb051c7 ("أدوات f2fs: إعادة هيكلة هياكل كتلة SIT/NAT") 32f5a37 ("أدوات f2fs: إعادة هيكلة بنية f2fs_node وما شابهها") b1aeb99 ("أدوات f2fs: إعادة هيكلة بنية الكتلة اليتيمة") 30825b3 ("أدوات f2fs: تعريف الثوابت بدلالة BLKSIZE") |
| اسم الجهاز المستعار | يُفعّل ميزة تسمية الأجهزة البديلة. | 6.13 | لم يتم إصداره بعد | 128d333f0dff ("f2fs: إدخال ملف تعريف الجهاز") | 8cc4e25 ("mkfs.f2fs: إضافة ميزة تسمية الأجهزة المستعارة") |
انظر أيضاً
مراجع
- ↑ مايكل لارابيل (22 ديسمبر 2012). "دمج نظام الملفات F2FS في نواة لينكس 3.8" . فورونيكس . تم الاطلاع عليه بتاريخ 25 مايو 2016 .
- ^ زيجو نيو (26/04/2024). "f2fs: إصلاح بعض التعليقات الغامضة" .
- ↑ دانيال روزنبرغ (2023-12-04). "f2fs: تقييد الحد الأقصى لحجم الملف لـ 16K f2fs" .
- ↑ جايجوك كيم (18 مارس 2013). "f2fs: مواءمة الحد الأقصى لطول اسم الملف في f2fs مع نظام الملفات القائم على لينكس" . جيت هاب . تم الاطلاع عليه بتاريخ 16 مايو 2023 .
- 1 2 مايكل لارابيل (23 ديسمبر 2019). "ضغط بيانات F2FS باستخدام LZO/LZ4 + معالجة انتقائية لامتدادات الملفات سيُطرح في عام 2020" . فورونيكس . تم الاطلاع عليه بتاريخ 7 أبريل 2020 .
- 1 2 مايكل لارابيل (2020-04-07). "نظام الملفات F2FS يُقدّم دعم ضغط Zstd مع نواة لينكس 5.7" . فورونيكس . تم الاطلاع عليه بتاريخ 2020-04-07 .
- 1 2 جايجوك كيم (2012-10-05). "f2fs: تقديم نظام ملفات متوافق مع ذاكرة الفلاش" . تم الاطلاع عليه بتاريخ 25-05-2016 .
- ↑ جايجوك كيم (22-09-2014). "f2fs: تقديم FITRIM في f2fs_ioctl" . قائمة بريدية لنواة لينكس (قائمة بريدية) . تم الاسترجاع في 2-01-2025 .
- ↑ تشاو يو (2015-10-26). "f2fs: دعم إلغاء تجزئة الملفات" .
- ↑ جايجوك كيم (2013-08-26). "f2fs: إضافة علامات للسمات الموسعة المضمنة" .
- ↑ هواجون لي (2013-11-10). "f2fs: تفعيل دعم f2fs للبيانات المضمنة" .
- ↑ تشاو يو (24-09-2014). "f2fs: دعم الدليل المضمن" .
- ↑ جايجوك كيم (2014-09-20). "f2fs-tools: الإصدار 1.4.0" .
- ↑ جايجوك كيم (2014-09-25). "f2fs: دعم ميزة atomic_write لقاعدة البيانات" .
- ↑ جايجوك كيم (2015-06-24). "تحديثات f2fs للإصدار 4.2" .
- ↑ جايجوك كيم (2016-04-25). "resize.f2fs: دعم لتوسيع حجم القسم" .
- ↑ تشاو يو (2015-12-17). "f2fs: دعم تفريغ البيانات في الخلفية" .
- ↑ تشاو يو (2015-01-25). "f2fs: تفعيل ذاكرة التخزين المؤقت لامتداد شجرة rb" .
- ↑ "F2FS: نظام ملفات جديد لتخزين الفلاش" (ملف PDF) . Usenix.org . تاريخ الاسترجاع: 11 يوليو 2026 .
- ↑ هو، جوشوا؛ سميث، رايان. "مراجعة جوجل نيكسس 9" . www.anandtech.com . مؤرشف من الأصل في 6 فبراير 2015. تم الاطلاع عليه بتاريخ 10 مايو 2019 .
- ↑ فروموسانو، أندريه (2018-11-02). "مراجعة جوجل بيكسل 3" . www.anandtech.com . مؤرشف من الأصل في 11 مايو 2019. تم الاطلاع عليه بتاريخ 11 مايو 2019 .
- ↑ لارابيل، مايكل (28 ديسمبر 2018). "نظام الملفات F2FS يحصل على المزيد من الإصلاحات في لينكس 4.21 مع دعم نظام الملفات الآن من قبل جوجل بيكسل" . www.phoronix.com . تاريخ الاسترجاع: 10 مايو 2019 .
- ↑ هامريك، مات (12 مايو 2017). "هواوي P10 وP10 بلس" . www.anandtech.com . مؤرشف من الأصل في 15 مايو 2017. تم الاطلاع عليه بتاريخ 11 مايو 2019 .
- ↑ تشيستر، براندون. "مراجعة هاتف OnePlus 3T" . www.anandtech.com . مؤرشف من الأصل في 30 نوفمبر 2016. تم الاطلاع عليه بتاريخ 10 مايو 2019 .
- ↑ ماتي، ميهاي (12 أغسطس 2019). "يستخدم هاتف Galaxy Note 10 نظام الملفات F2FS، وليس EXT4: ما الفرق؟" . SamMobile . تم الاطلاع عليه بتاريخ 15 فبراير 2026 .
- ↑ "الكشف الرسمي عن هاتف ZTE Axon 10 Pro: أول هاتف يستخدم نظام الملفات F2FS" . Gizchina.com . 2019-05-06 . تاريخ الاطلاع: 2019-05-10 .
- ↑ "سحب نظام الملفات F2FS الجديد من تعديل Jaegeuk Kim" . git.kernel.org .
- ↑ "ويكي آرتش لينكس" . wiki.archlinux.org . تم الاطلاع عليه بتاريخ 27 يونيو 2021 .
- ↑ "ويكي دبيان" . wiki.debian.org . تم الاطلاع عليه بتاريخ 27 يونيو 2021 .
- ↑ "ويكي جنتو" . wiki.gentoo.org . تم الاطلاع عليه بتاريخ 27 يونيو 2021 .
روابط خارجية
- FAST '15 - F2FS: نظام ملفات جديد لتخزين الفلاش (2015-02-17)
- ما هو نظام الملفات المتوافق مع الفلاش (F2FS)؟ وثائق لنظام لينكس
- نظام الملفات المتوافق مع الفلاش (F2FS)، مؤتمر لينكس المدمج (22-02-2013)
- LWN.net: تحليل مفصل من طرف إلى طرف (10-10-2012)
- منهجية ضبط نظام ملفات eMMC/SSD (24-05-2013)
- لينكس المدمج
- أنظمة ملفات الفلاش التي يدعمها نواة لينكس
- أنظمة ملفات مجانية لأغراض خاصة
- أنظمة ضغط الملفات
