bcache
bcache (اختصارًا لـ block cache ) هي آلية تخزين مؤقت في طبقة الكتل بنواة لينكس ، تُستخدم للوصول إلى أجهزة التخزين الثانوية . تسمح هذه الآلية لجهاز تخزين سريع واحد أو أكثر، مثل محركات الأقراص الصلبة (SSD) القائمة على ذاكرة الفلاش، بالعمل كذاكرة تخزين مؤقتة لجهاز تخزين أبطأ واحد أو أكثر، مثل محركات الأقراص الصلبة (HDD)؛ مما يُنشئ فعليًا وحدات تخزين هجينة ويُحسّن الأداء.
صُممت تقنية bcache لتتوافق مع طبيعة وخصائص أداء محركات الأقراص الصلبة SSD، كما أنها تقلل من تضخيم عمليات الكتابة عن طريق تجنب الكتابة العشوائية وتحويلها إلى كتابة متسلسلة . يتم دمج عمليات الإدخال/الإخراج هذه لكل من ذاكرة التخزين المؤقت ووحدة التخزين الأساسية، مما يُسهم في إطالة عمر الأجهزة القائمة على ذاكرة الفلاش المستخدمة كذاكرة تخزين مؤقت، وتحسين أداء وحدات التخزين الأساسية الحساسة للكتابة، مثل مجموعات RAID 5 .
يُرخَّص برنامج bcache بموجب رخصة جنو العمومية (GPL)، ويُعدّ كينت أوفرستريت مطوّره الرئيسي. يعتبر أوفرستريت برنامج bcache بمثابة "نموذج أولي" لتطوير bcachefs ، وهو نظام ملفات يتميز بتحسينات كبيرة مقارنةً ببرنامج bcache. [ 1 ]
ملخص
يُتيح استخدام bcache إمكانية إضافة محركات أقراص الحالة الصلبة (SSD) كطبقة وسيطة إضافية ضمن مسارات الوصول إلى تخزين البيانات، مما يُحسّن الأداء العام من خلال استخدام محركات أقراص الحالة الصلبة السريعة القائمة على ذاكرة الفلاش كذاكرة تخزين مؤقتة لمحركات الأقراص الصلبة الميكانيكية الأبطأ ذات الوسائط المغناطيسية الدوارة . وبهذه الطريقة، يُمكن سد الفجوة بين محركات أقراص الحالة الصلبة ومحركات الأقراص الصلبة التقليدية ، حيث يتم الجمع بين سرعة محركات أقراص الحالة الصلبة العالية وسعة التخزين المنخفضة لمحركات الأقراص الصلبة التقليدية. [ 2 ]
تُطبَّق تقنية التخزين المؤقت باستخدام محركات أقراص الحالة الصلبة (SSD) لتخزين البيانات المرتبطة بعمليات القراءة والكتابة العشوائية، مستفيدةً من سرعة الوصول شبه المعدومة التي تُعدّ أبرز ميزات هذه المحركات. لا يتم تخزين عمليات الإدخال/الإخراج المتسلسلة مؤقتًا ، لتجنب إبطال ذاكرة التخزين المؤقت لمحركات SSD بسرعة في مثل هذه العمليات التي تُناسب محركات الأقراص الصلبة (HDD) بشكل كافٍ؛ ويُعرف تجاوز ذاكرة التخزين المؤقت لعمليات الكتابة المتسلسلة الكبيرة بسياسة الكتابة الالتفافية . كما يُسهم عدم تخزين عمليات الإدخال/الإخراج المتسلسلة مؤقتًا في إطالة عمر محركات SSD المستخدمة كذاكرة تخزين مؤقت. [ 3 ] ويتم تجنب تضخيم الكتابة بعدم إجراء عمليات كتابة عشوائية على محركات SSD؛ فبدلاً من ذلك، تُدمج جميع عمليات الكتابة العشوائية إلى ذاكرة التخزين المؤقت لمحركات SSD في عمليات كتابة على مستوى الكتل، مما يؤدي في النهاية إلى إعادة كتابة كتل المسح الكاملة فقط على محركات SSD. [ 4 ] [ 5 ]
يدعم النظام سياستي الكتابة المؤجلة والكتابة المباشرة ( وهي الوضع الافتراضي) لتخزين عمليات الكتابة مؤقتًا. في حالة سياسة الكتابة المؤجلة، تُخزَّن البيانات المكتوبة أولًا في ذاكرة التخزين المؤقت لمحركات الأقراص الصلبة SSD، ثم تُنقل لاحقًا إلى محركات الأقراص الصلبة HDD على دفعات مع تنفيذ عمليات بحث مُلائمة ، مما يجعل bcache يعمل أيضًا كمُجدوِل إدخال/إخراج . أما في حالة سياسة الكتابة المباشرة، التي تضمن عدم اعتبار أي عملية كتابة مُكتملة حتى تصل البيانات المطلوبة إلى كلٍّ من محركات الأقراص الصلبة SSD وHDD، فإن تحسينات الأداء تقلّ نتيجةً لاقتصارها على تخزين البيانات المكتوبة مؤقتًا فقط. [ 4 ] [ 5 ]
توفر سياسة الكتابة المؤجلة مع عمليات الكتابة المجمعة على محركات الأقراص الصلبة مزايا إضافية لأنظمة RAID الحساسة للكتابة، مثل RAID 5 و RAID 6 ، والتي تُنفذ عمليات الكتابة الفعلية كتسلسلات قراءة-تعديل-كتابة ذرية . وبهذه الطريقة، يتم تقليل أو تجنب تأثيرات الأداء السلبية [ 6 ] الناتجة عن عمليات الكتابة العشوائية الصغيرة في أنظمة RAID هذه، وذلك بتجميعها معًا وتنفيذها كعمليات كتابة متسلسلة مجمعة. [ 4 ] [ 5 ]
يعمل التخزين المؤقت الذي يقوم به bcache على مستوى وحدة التخزين ، مما يجعله مستقلاً عن نظام الملفات طالما أن نظام الملفات يوفر مُعرّفًا فريدًا عالميًا (UUID) مُضمّنًا؛ ويتحقق هذا الشرط في جميع أنظمة ملفات لينكس القياسية تقريبًا ، بالإضافة إلى أقسام التبديل . ويمكن أن تصل أحجام الكتل المنطقية التي يستخدمها bcache داخليًا كوحدات تخزين مؤقت إلى حجم قطاع واحد من القرص الصلب. [ 7 ]
تاريخ
أُعلن عن bcache لأول مرة من قِبل كينت أوفرستريت في يوليو 2010، كوحدة نمطية لنواة لينكس تعمل بكامل طاقتها، على الرغم من أنها كانت في مرحلة تجريبية مبكرة. [ 8 ] استمر التطوير لمدة عامين تقريبًا، حتى مايو 2012، حيث وصلت bcache إلى مرحلة الجاهزية للإنتاج. [ 5 ]
تم دمجها في نواة لينكس الرئيسية في الإصدار 3.10، الذي صدر في 30 يونيو 2013. [ 9 ] [ 10 ] ومنذ ذلك الحين، يعمل أوفرستريت على تطوير نظام الملفات bcachefs ، استنادًا إلى أفكار طُورت لأول مرة في bcache، والتي قال إنها بدأت "بالتطور ... إلى نظام ملفات POSIX متكامل للأغراض العامة ". [ 11 ] ويصف أوفرستريت bcache بأنه "نموذج أولي" للأفكار التي أصبحت فيما بعد bcachefs، وينوي أن يحل bcachefs محل bcache. [ 12 ] أعلن أوفرستريت رسميًا عن bcachefs في عام 2015، وتم دمجه في نواة لينكس الرئيسية في أكتوبر 2023، [ 13 ] إلا أنه في يونيو 2025، أعلن لينوس تورفالدز أنه سيتم حذف bcachefs من نواة لينكس الرئيسية بحلول الإصدار 6.17، وذلك بعد توترات بين تورفالدز وأوفرستريت. [ 14 ] [ 15 ]
سمات
اعتبارًا من الإصدار 3.10 من نواة لينكس، يتم توفير الميزات التالية بواسطة bcache: [ 4 ]
- يمكن استخدام جهاز التخزين المؤقت نفسه لتخزين عدد غير محدد من أجهزة التخزين الأساسية مؤقتًا
- ربط وفصل أجهزة التخزين الأساسية عن ذاكرات التخزين المؤقتة الخاصة بها أثناء التشغيل، أثناء تركيبها واستخدامها (التشغيل في وضع التمرير المباشر عندما لا يتم تخزينها مؤقتًا)
- الاستعادة التلقائية من عمليات الإغلاق غير النظيفة - لا تكتمل عمليات الكتابة حتى تصبح ذاكرة التخزين المؤقت متسقة مع جهاز التخزين الأساسي؛ داخليًا، لا يفرق bcache بين عمليات الإغلاق النظيفة وغير النظيفة.
- معالجة شفافة لأخطاء الإدخال/الإخراج الناتجة عن أجهزة التخزين المؤقت [ 3 ]
- تتم معالجة حواجز الكتابة وعمليات مسح ذاكرة التخزين المؤقت المرتبطة بها بشكل صحيح.
- سياسات الكتابة المباشرة (وهي الوضع الافتراضي)، والكتابة المؤجلة، والكتابة البديلة
- يتم اكتشاف عمليات الإدخال/الإخراج المتسلسلة وتجاوزها، مع عتبات قابلة للتكوين؛ كما يمكن تعطيل التجاوز.
- تقييد سرعة الإدخال/الإخراج لمحرك الأقراص ذي الحالة الصلبة (SSD) في حال ازدحامه، وذلك من خلال قياس زمن استجابة عمليات الإدخال/الإخراج لمحرك الأقراص ذي الحالة الصلبة (SSD) الذي يتجاوز عتبة قابلة للتكوين؛ وهو أمر مفيد في التكوينات التي تحتوي على محرك أقراص ذي حالة صلبة (SSD) واحد يوفر التخزين المؤقت للعديد من محركات الأقراص الصلبة (HDD).
- القراءة المسبقة عند عدم وجود البيانات في ذاكرة التخزين المؤقت (معطلة افتراضياً)
- تنفيذ كتابة البيانات بكفاءة عالية - تُكتب البيانات غير المحدثة دائمًا بترتيب مُرتب، ويمكن اختياريًا تقليل سرعة الكتابة في الخلفية بسلاسة للحفاظ على نسبة مئوية مُحددة من ذاكرة التخزين المؤقت غير محدثة.
- تُستخدم أشجار B+ عالية الأداء داخليًا - إذ يُمكن لـ bcache تحقيق حوالي 1,000,000 عملية إدخال/إخراج في الثانية (IOPS) على عمليات القراءة العشوائية، إذا كانت الأجهزة سريعة بما فيه الكفاية.
- يتم عرض إحصائيات وقت التشغيل المختلفة وخيارات التكوين من خلال sysfs [ 3 ]
التحسينات
اعتبارًا من فبراير 2014 ، من المخطط إضافة الميزات الجديدة التالية إلى الإصدارات المستقبلية من bcache: [ 10 ]
- الوعي بتقسيم البيانات في تخطيطات RAID 5 وRAID 6 - إضافة الوعي بتخطيط الشريط إلى سياسة الكتابة، بحيث تُعطي قرارات التخزين المؤقت الأولوية للشرائط "غير المكتملة" بالفعل، وستقوم عمليات التفريغ الخلفية الفعلية بكتابة الشرائط الكاملة أولاً.
- معالجة حالات عدم العثور على البيانات في ذاكرة التخزين المؤقت مع عقد شجرة B+ الممتلئة بالفعل - بدءًا من إصدار bcache في نواة لينكس 3.10، تحدث عمليات تقسيم عقد شجرة B+ المستخدمة داخليًا عند عمليات الكتابة، مما يجعل عمليات تهيئة ذاكرة التخزين المؤقت الأولية شبه مستحيلة.
- استخدام عدة أقراص SSD في مجموعة ذاكرة تخزين مؤقتة - سيتم نسخ البيانات غير النظيفة فقط (لسياسة الكتابة المؤجلة) والبيانات الوصفية ، دون إهدار مساحة SSD على البيانات النظيفة وذاكرة التخزين المؤقت للقراءة.
- التحقق من صحة البيانات
انظر أيضاً
- dm-cache – هدف لتعيين الأجهزة في نواة لينكس يسمح بإنشاء وحدات تخزين هجينة
- EnhanceIO – وحدة تخزين مؤقتة للقرص لنواة لينكس.
- Flashcache – مكون ذاكرة تخزين مؤقتة للقرص لنواة لينكس، تم تطويره في البداية بواسطة فيسبوك
- محرك الأقراص الهجين – جهاز تخزين يجمع بين تقنيات تخزين الوسائط المغناطيسية القائمة على ذاكرة الفلاش والمغناطيسية الدوارة
- ReadyBoost – مكون برمجي لتخزين البيانات على القرص في أنظمة تشغيل مايكروسوفت ويندوز فيستا والإصدارات الأحدث
- تقنية الاستجابة الذكية (SRT) - آلية تخزين مؤقت خاصة بشركة إنتل، طورتها لشرائحها
مراجع
- ↑ "الأسئلة الشائعة حول bcache" . bcache.evilpiepirate.org . تم الاطلاع عليه في 7 مايو 2021 .
- ↑ بيتروس كوتوبيس (25 نوفمبر 2013). "تقنيات التخزين المؤقت المتقدمة لمحركات الأقراص الصلبة" . مجلة لينكس . تم الاطلاع عليه في 2 ديسمبر 2013 .
- 1 2 3 "وثائق نواة لينكس: Documentation/bcache.txt" . kernel.org . 12 أغسطس 2013. تم الاطلاع عليه في 24 يناير 2014 .
- 1 2 3 4 كينت أوفرستريت. "bcache: ذاكرة التخزين المؤقت لطبقة الكتل في نواة لينكس" . bcache.evilpiepirate.org . تم الاطلاع عليه في 2 ديسمبر 2013 .
- 1 2 3 4 جوناثان كوربيت (12 مايو 2012). "تحديث bcache" . LWN.net . تم الاطلاع عليه في 4 أكتوبر 2013 .
- ↑ "منظمات RAID الأساسية" . ecs.umass.edu . تم الاطلاع عليه في 4 أكتوبر 2013 .
- ↑ ويليام ستيرنز؛ كينت أوفرستريت (2 يوليو 2010). "bcache: التخزين المؤقت يتجاوز ذاكرة الوصول العشوائي فقط" . LWN.net . تم الاطلاع عليه في 4 أكتوبر 2013 .
- ↑ كينت أوفرستريت (4 يوليو 2010). "bcache: الإصدار 6" . LWN.net . تم الاطلاع عليه في 4 أكتوبر 2013 .
- ↑ "نواة لينكس 3.10، القسم 1.2. bcache، ذاكرة تخزين مؤقتة على مستوى الكتل لتخزين البيانات على محركات الأقراص الصلبة SSD" . kernelnewbies.org . 30 يونيو 2013. تم الاطلاع عليه في 4 أكتوبر 2013 .
- 1 2 ليبي كلارك (11 يونيو 2013). "كل ما يتعلق بنواة لينكس: bcache" . linux.com . مؤرشف من الأصل في 29 سبتمبر 2013. تم الاطلاع عليه في 9 أكتوبر 2013 .
- ↑ لارابيل، مايكل (21 أغسطس 2015). "نظام ملفات لينكس جديد يهدف إلى السرعة مع امتلاكه ميزات مشابهة لنظامي ZFS/Btrfs" . فورونيكس . تم الاطلاع عليه في 22 نوفمبر 2018 .
- ↑ إيدج، جيك (23 مايو 2018). "تحديث حول bcachefs" . LWN.net . تم الاطلاع عليه بتاريخ 22 نوفمبر 2018 .
- ↑ لارابيل، مايكل (31 أكتوبر 2023). "دمج Bcachefs في نواة لينكس 6.7" . فورونيكس . تم الاطلاع عليه في 20 نوفمبر 2023 .
- ↑ تورفالدز، لينوس (26 يونيو 2025). "الموضوع: ردًا على: [ سحب من جيت ] إصلاحات bcachefs للإصدار 6.16-rc4" . lore.kernel.org . تم الاطلاع عليه في 25 يونيو 2025 .
- ↑ رودرا، سوراف (27 يونيو 2025). "دراما جديدة في نواة لينكس: تورفالدز يتخلى عن دعم Bcachefs بعد خلاف" . أخبار البرمجيات الحرة والمفتوحة المصدر . تم الاطلاع عليه في 25 يونيو 2025 .
روابط خارجية
- الموقع الرسمي
- LSFMM: التخزين المؤقت – dm-cache و bcache ، LWN.net ، 1 مايو 2013، بقلم جيك إيدج
- خيارات التخزين المؤقت للكتل في نظام لينكس في نواة المصدر المستقرة (ملف PDF)، ديل ، ديسمبر 2013
- سلسلة اختبارات bcache: الإنتاجية ، عمليات الإدخال/الإخراج في الثانية ، البيانات الوصفية ، والملفات الكبيرة، وملخص ، مجلة لينكس ، أغسطس - سبتمبر 2010، بقلم جيفري ب. لايتون
- مقارنة الأداء بين EnhanceIO و bcache و dm-cache ، LKML ، 11 يونيو 2013
- تقييم أداء EnhanceIO وBcache وDM-Cache ، فورونيكس ، 11 يونيو 2013، بقلم مايكل لارابيل
- التخزين المؤقت في الحالة الصلبة
- برنامج مجاني مكتوب بلغة C
- ميزات نواة لينكس
- برنامج يستخدم رخصة جنو العمومية العامة
