Btrfs
نظام ملفات Btrfs (يُنطق "بيتر إف إس" [ 8 ] ، "باتر إف إس" [ 12 ] [ 13 ] ، "بي-تري إف إس" [ 13 ] أو "BTRFS") هو نظام تخزين حاسوبي يجمع بين نظام ملفات قائم على مبدأ النسخ عند الكتابة (COW) ومدير وحدات تخزين منطقية (يختلف عن LVM في لينكس )، وقد طُوِّر هذان النظامان معًا. أنشأه كريس ماسون عام 2007 [ 14 ] لاستخدامه في لينكس ، ومنذ نوفمبر 2013، أُعلن عن استقرار تنسيق نظام الملفات على القرص في نواة لينكس . [ 15 ]
يهدف نظام ملفات Btrfs إلى معالجة أوجه القصور في أنظمة ملفات لينكس، مثل نقص ميزات تجميع البيانات، واللقطات ، والتحقق من سلامة البيانات ، وتنظيف البيانات ، والامتداد المتكامل متعدد الأجهزة . [ 8 ] صرّح ماسون، المؤلف الرئيسي لنظام Btrfs، أن هدفه هو "تمكين لينكس من التوسع بما يتناسب مع سعة التخزين المتاحة. ولا يقتصر التوسع على توفير سعة التخزين فحسب، بل يشمل أيضًا القدرة على إدارته والتحكم فيه من خلال واجهة سهلة الاستخدام تتيح للمستخدمين رؤية ما يتم استخدامه، مما يجعله أكثر موثوقية". [ 16 ]
تاريخ

تم اقتراح بنية البيانات الأساسية لنظام ملفات Btrfs - وهي شجرة B ذات النسخ عند الكتابة - في الأصل من قبل الباحث في شركة IBM، أوهاد روديه، في مؤتمر USENIX عام 2007. [ 17 ] انضم كريس ماسون، وهو مهندس كان يعمل على نظام ReiserFS لشركة SUSE في ذلك الوقت، إلى شركة Oracle في وقت لاحق من ذلك العام وبدأ العمل على نظام ملفات جديد قائم على أشجار B. [ 18 ]
في عام ٢٠٠٨، صرّح ثيودور تسو ، المطور الرئيسي لنظامي الملفات ext3 و ext4 ، بأنه على الرغم من تحسّن ميزات ext4، إلا أنه ليس تقدماً كبيراً؛ فهو يستخدم تقنية قديمة ويُعدّ حلاً مؤقتاً. وأضاف تسو أن Btrfs هو الخيار الأفضل لأنه "يُقدّم تحسينات في قابلية التوسع والموثوقية وسهولة الإدارة". [ ١٩ ] كما أن Btrfs يتبنى "عدداً من أفكار التصميم نفسها التي كانت موجودة في ext3 / 4 ". [ ٢٠ ]
كان من المقرر إطلاق نظام الملفات Btrfs 1.0، بتنسيقه النهائي على القرص، في أواخر عام 2008، [ 21 ] وتم اعتماده أخيرًا في نواة لينكس الرئيسية عام 2009. [ 22 ] بدأت العديد من توزيعات لينكس بتقديم Btrfs كخيار تجريبي لنظام الملفات الجذر أثناء التثبيت. [ 23 ] [ 24 ] [ 25 ]
في يوليو 2011، دُمجت ميزات إلغاء التجزئة التلقائية والتنظيف لنظام ملفات Btrfs في الإصدار 3.0 من نواة لينكس الرئيسية . [ 26 ] بالإضافة إلى ماسون في أوراكل، ساهم مياو شي في فوجيتسو بتحسينات في الأداء. [ 27 ] في يونيو 2012، غادر ماسون أوراكل لينضم إلى فيوجن-آي أو ، ثم غادرها بعد عام مع جوزيف باسيك لينضم إلى فيسبوك . وخلال فترة عمله في الشركتين، واصل ماسون عمله على نظام ملفات Btrfs. [ 28 ] [ 18 ]
في عام 2012، انتقلت توزيعتان من توزيعات لينكس إلى وضع الإنتاج أو الدعم: أوراكل لينكس في مارس، [ 29 ] تلتها سوزي لينكس إنتربرايز في أغسطس. [ 30 ]
في عام 2015، تم اعتماد نظام الملفات Btrfs كنظام الملفات الافتراضي لنظام SUSE Linux Enterprise Server (SLE) 12. [ 31 ]
في أغسطس 2017، أعلنت ريد هات في ملاحظات إصدار ريد هات إنتربرايز لينكس (RHEL) 7.4 أنها لم تعد تخطط لجعل نظام ملفات Btrfs ميزة مدعومة بالكامل (إذ كان مُدرجًا كـ"معاينة تقنية" منذ الإصدار التجريبي RHEL 6)، مشيرةً إلى أنه سيظل متاحًا في سلسلة إصدارات RHEL 7. [ 32 ] أُزيل نظام ملفات Btrfs من RHEL 8 في مايو 2019. [ 33 ] انتقل نظام RHEL من نظام ext4 في RHEL 6 إلى نظام XFS في RHEL 7. [ 34 ]
في عام 2020، تم اختيار نظام الملفات Btrfs كنظام الملفات الافتراضي لنظام Fedora 33 لإصدارات سطح المكتب. [ 35 ]
سمات
قائمة الميزات
مُنفّذ
اعتبارًا من الإصدار 6.0 من نواة لينكس، يقوم نظام الملفات Btrfs بتنفيذ الميزات التالية: [ 36 ] [ 37 ] [ 38 ]
- في بعض التكوينات، يكون الإصلاح ذاتيًا في الغالب نظرًا لطبيعة النسخ عند الكتابة
- إلغاء التجزئة عبر الإنترنت وخيار التثبيت التلقائي لإلغاء التجزئة [ 26 ]
- نمو وانكماش حجم المبيعات عبر الإنترنت
- إضافة وإزالة أجهزة الحظر عبر الإنترنت
- الموازنة عبر الإنترنت (نقل العناصر بين أجهزة التخزين لموازنة الحمل)
- فحص نظام الملفات دون اتصال بالإنترنت [ 39 ]
- تنظيف البيانات عبر الإنترنت لاكتشاف الأخطاء وإصلاحها تلقائيًا للملفات التي تحتوي على نسخ زائدة
- RAID 0 و RAID 1 و RAID 10 [ 40 ]
- المجلدات الفرعية (جذر واحد أو أكثر من جذور نظام الملفات القابلة للتركيب بشكل منفصل داخل كل قسم من أقسام القرص )
- الضغط الشفاف عبر zlib و LZO و (منذ الإصدار 4.14) ZSTD ، [ 7 ] [ 41 ] قابل للتكوين لكل ملف أو وحدة تخزين [ 42 ] [ 43 ]
- لقطات قابلة للكتابة الذرية (عبر النسخ عند الكتابة) أو للقراءة فقط [ 44 ] للمجلدات الفرعية
- استنساخ الملفات ( الربط المرجعي ، النسخ عند الكتابة) عبر [ 45 ]
cp --reflink <source file><destination file> - يتم التحقق من صحة البيانات والبيانات الوصفية ( CRC-32C [ 46 ] ). تم تطبيق وظائف تجزئة جديدة منذ الإصدار 5.5: [ 47 ] xxHash و SHA256 و BLAKE2B .
- تحويل مباشر من نظام الملفات ext3/4 إلى Btrfs (مع إمكانية التراجع). تراجعت هذه الميزة في الإصدار 4.0 من btrfs-progs، وأُعيدت كتابتها من الصفر في الإصدار 4.6. [ 48 ]
- تركيب وحدة التخزين للقراءة فقط، والمعروف باسم تهيئة نظام الملفات (وحدة التخزين للقراءة فقط المستخدمة كنسخة احتياطية للكتابة لنظام Btrfs قابل للكتابة) [ 49 ]
- خاصية التخلص من الكتل (تستعيد المساحة في بعض الإعدادات الافتراضية وتحسن توزيع التآكل على محركات الأقراص الصلبة SSD باستخدام TRIM )
- إرسال/استقبال (حفظ الفروقات بين اللقطات في دفق ثنائي) [ 50 ]
- النسخ الاحتياطي التزايدي [ 51 ]
- إزالة البيانات المكررة خارج النطاق (يتطلب أدوات مساحة المستخدم) [ 9 ]
- القدرة على التعامل مع ملفات التبديل وأقسام التبديل
تم تنفيذه ولكن لا يُنصح باستخدامه في بيئة الإنتاج
استنساخ
يوفر نظام الملفات Btrfs عملية استنساخ تُنشئ بشكل ذري لقطة من ملف بنسخة عند الكتابة . تُسمى هذه الملفات المستنسخة أحيانًا بالروابط المرجعية ، في ضوء استدعاء نظام نواة لينكس المقترح المرتبط بها . [ 56 ]
عند استنساخ الملفات، لا يُنشئ نظام الملفات رابطًا جديدًا يشير إلى عقدة بيانات موجودة ؛ بل يُنشئ عقدة بيانات جديدة تتشارك في البداية نفس كتل القرص مع الملف الأصلي. ونتيجةً لذلك، يعمل الاستنساخ ضمن حدود نظام ملفات Btrfs نفسه، ولكن منذ الإصدار 3.6 من نواة لينكس، قد يتجاوز حدود المجلدات الفرعية في ظروف معينة. [ 57 ] [ 58 ] لا تُنسخ كتل البيانات الفعلية؛ وفي الوقت نفسه، نظرًا لطبيعة النسخ عند الكتابة (CoW) لنظام Btrfs، فإن التعديلات التي تُجرى على أي من الملفات المستنسخة لا تظهر في الملف الأصلي والعكس صحيح. [ 59 ]
لا ينبغي الخلط بين الاستنساخ والروابط الصلبة ، وهي عبارة عن إدخالات في الدليل تربط أسماء ملفات متعددة بملف واحد. بينما يمكن اعتبار الروابط الصلبة أسماءً مختلفة لنفس الملف، فإن الاستنساخ في نظام ملفات Btrfs يوفر ملفات مستقلة تتشارك في البداية جميع كتل القرص الخاصة بها. [ 59 ] [ 60 ]
تمت إضافة دعم ميزة Btrfs هذه في الإصدار 7.5 من GNU coreutils ، عبر --reflinkخيار الأمر cp. [ 61 ] [ 62 ]
بالإضافة إلى استنساخ البيانات ( FICLONE )، يدعم نظام ملفات Btrfs أيضًا إزالة البيانات المكررة خارج النطاق عبر FIDEDUPERANGE . تتيح هذه الخاصية لملفين يحتويان على بيانات متطابقة (ولو جزئيًا) مشاركة مساحة التخزين. [ 63 ] [ 9 ]
المجلدات الفرعية واللقطات


يمكن اعتبار وحدة تخزين فرعية في نظام ملفات Btrfs بمثابة مساحة اسم ملفات POSIX منفصلة ، قابلة للتركيب بشكل مستقل عن طريق تمرير subvolخيارات subvolidإلى الأداة المساعدة. كما يمكن الوصول إليها عن طريق تركيب وحدة التخزين الفرعية ذات المستوى الأعلى، وفي هذه الحالة تكون وحدات التخزين الفرعية مرئية ويمكن الوصول إليها كدلائل فرعية. [ 64 ]
يمكن إنشاء المجلدات الفرعية في أي مكان ضمن التسلسل الهرمي لنظام الملفات، كما يمكن أن تكون متداخلة. تظهر المجلدات الفرعية المتداخلة كمجلدات فرعية داخل المجلدات الفرعية الأصلية، على غرار طريقة عرض المجلد الفرعي الرئيسي لمجلداته الفرعية كمجلدات فرعية. لا يمكن حذف مجلد فرعي إلا بعد حذف جميع المجلدات الفرعية الموجودة أسفله في التسلسل الهرمي للتداخل؛ ونتيجة لذلك، لا يمكن حذف المجلدات الفرعية الرئيسية. [ 65 ]
يحتوي أي نظام ملفات Btrfs دائمًا على وحدة تخزين فرعية افتراضية، يتم تعيينها مبدئيًا لتكون وحدة التخزين الفرعية ذات المستوى الأعلى، ويتم تركيبها افتراضيًا إذا لم يتم تمرير أي خيار لتحديد وحدة تخزين فرعية mount. يمكن تغيير وحدة التخزين الفرعية الافتراضية حسب الحاجة. [ 65 ]
لقطة Btrfs هي وحدة تخزين فرعية تشارك بياناتها (وبياناتها الوصفية) مع وحدة تخزين فرعية أخرى، باستخدام خاصية النسخ عند الكتابة في Btrfs، ولا تظهر التعديلات التي تُجرى على اللقطة في وحدة التخزين الفرعية الأصلية. بمجرد إنشاء لقطة قابلة للكتابة، يمكن التعامل معها كنسخة بديلة من نظام الملفات الأصلي. على سبيل المثال، للرجوع إلى لقطة سابقة، يجب فصل وحدة التخزين الفرعية الأصلية المُعدّلة، ثم إعادة تحميل اللقطة مكانها. عندئذٍ، يمكن حذف وحدة التخزين الفرعية الأصلية. [ 64 ]
بفضل خاصية النسخ عند الكتابة (CoW) في نظام ملفات Btrfs، يتم إنشاء اللقطات بسرعة مع استهلاك مساحة تخزين ضئيلة جدًا في البداية. ولأن اللقطة عبارة عن وحدة تخزين فرعية، فمن الممكن أيضًا إنشاء لقطات متداخلة. ولا تُعدّ عملية أخذ لقطات لوحدة تخزين فرعية عملية تكرارية؛ لذا، عند إنشاء لقطة لوحدة تخزين فرعية، يتم ربط كل وحدة تخزين فرعية أو لقطة موجودة بالفعل في وحدة التخزين الفرعية بدليل فارغ يحمل نفس الاسم داخل اللقطة. [ 64 ] [ 65 ]
لا يمكن أخذ لقطات من دليل، إذ لا يمكن أخذ لقطات إلا من المجلدات الفرعية. مع ذلك، يوجد حل بديل يعتمد على روابط مرجعية موزعة بين المجلدات الفرعية: يتم إنشاء مجلد فرعي جديد يحتوي على روابط مرجعية بين المجلدات الفرعية تشير إلى محتوى الدليل المستهدف. وبوجود هذا المجلد، يمكن إنشاء لقطة منه. [ 57 ]
يختلف المجلد الفرعي في نظام ملفات Btrfs اختلافًا كبيرًا عن المجلد المنطقي التقليدي في مدير المجلدات المنطقية (LVM). ففي LVM، يُعد المجلد المنطقي جهازًا منفصلاً ، بينما لا يُعد المجلد الفرعي في Btrfs كذلك، ولا يمكن التعامل معه أو استخدامه بهذه الطريقة. [ 64 ] يؤدي إنشاء لقطات dd أو LVM لنظام ملفات Btrfs إلى فقدان البيانات إذا تم تحميل أي من المجلد الأصلي أو النسخة أثناء وجودهما على نفس الحاسوب. [ 66 ]
إرسال - استقبال
بإمكان نظام ملفات Btrfs، عند وجود أي زوج من المجلدات الفرعية (أو اللقطات)، إنشاء فرق ثنائي بينهما (باستخدام btrfs sendالأمر) يمكن إعادة تشغيله لاحقًا (باستخدام الأمر btrfs receive)، وربما على نظام ملفات Btrfs مختلف. تعمل ميزة الإرسال والاستقبال على إنشاء (وتطبيق) مجموعة من تعديلات البيانات اللازمة لتحويل مجلد فرعي إلى آخر. [ 50 ] [ 67 ]
يمكن استخدام ميزة الإرسال/الاستقبال مع اللقطات المجدولة بانتظام لتنفيذ شكل بسيط من نسخ نظام الملفات ، أو لغرض إجراء نسخ احتياطية تزايدية . [ 50 ] [ 67 ]
مجموعات الحصص

تفرض مجموعة الحصص (أو qgroup ) حدًا أقصى للمساحة التي يمكن أن يستهلكها مجلد فرعي أو لقطة. لا تستهلك اللقطة الجديدة أي حصة في البداية لأن بياناتها مشتركة مع اللقطة الأصلية، ولكنها تُفرض عليها رسوم بعد ذلك مقابل الملفات الجديدة وعمليات النسخ عند الكتابة على الملفات الموجودة. عند تفعيل الحصص، تُنشأ مجموعة حصص تلقائيًا مع كل مجلد فرعي أو لقطة جديدة. تُعد مجموعات الحصص الأولية هذه لبنات بناء يمكن تجميعها (باستخدام btrfs qgroupالأمر) في تسلسلات هرمية لتنفيذ مجموعات الحصص. [ 52 ]
تُطبّق مجموعات الحصص فقط على المجلدات الفرعية واللقطات، ولا يُمكن فرض حصص على المجلدات الفرعية الفردية أو المستخدمين أو مجموعات المستخدمين. مع ذلك، يُمكن إيجاد حلول بديلة باستخدام مجلدات فرعية مختلفة لجميع المستخدمين أو مجموعات المستخدمين الذين تتطلب حصصهم تطبيقًا.
التحويل المباشر من ext2/3/4 و ReiserFS
نتيجةً لقلة البيانات الوصفية المُثبّتة في مواقع ثابتة، يُمكن لنظام ملفات Btrfs التكيف مع التخطيطات المكانية غير المألوفة لأجهزة التخزين الخلفية. btrfs-convertتستغل الأداة هذه القدرة لإجراء تحويل مباشر لنظام ملفات ext2/3/4 أو ReiserFS ، وذلك عن طريق تضمين البيانات الوصفية المكافئة لنظام Btrfs في المساحة غير المُخصصة له، مع الحفاظ على نسخة غير مُعدّلة من نظام الملفات الأصلي. [ 68 ]
تتضمن عملية التحويل إنشاء نسخة من بيانات التعريف الكاملة لأنظمة الملفات ext2/3/4، بينما تشير ملفات Btrfs ببساطة إلى نفس الكتل المستخدمة في ملفات ext2/3/4. هذا يجعل الجزء الأكبر من الكتل مشتركًا بين نظامي الملفات قبل أن يصبح التحويل دائمًا. وبفضل خاصية النسخ عند الكتابة في Btrfs، تُحفظ النسخ الأصلية لكتل بيانات الملف أثناء جميع تعديلات الملف. إلى حين أن يصبح التحويل دائمًا، تُستخدم فقط الكتل التي تم تحديدها على أنها حرة في ext2/3/4 لحفظ تعديلات Btrfs الجديدة، مما يعني أنه يمكن التراجع عن التحويل في أي وقت (مع العلم أن القيام بذلك سيؤدي إلى مسح أي تغييرات أُجريت بعد التحويل إلى Btrfs). [ 68 ]
جميع الملفات المحولة متاحة وقابلة للكتابة في المجلد الفرعي الافتراضي لنظام ملفات Btrfs. يتم إنشاء ملف متفرق يحتوي على جميع المراجع إلى نظام الملفات ext2/3/4 الأصلي في مجلد فرعي منفصل، ويمكن تحميله بشكل مستقل كصورة قرص للقراءة فقط، مما يسمح بالوصول إلى كل من نظامي الملفات الأصلي والمحول في الوقت نفسه. يؤدي حذف هذا الملف المتفرق إلى تحرير المساحة وجعل التحويل دائمًا. [ 68 ]
في إصدارات 4.x من نواة لينكس الرئيسية، اعتُبر تحويل ext3/4 المباشر غير مُختَبَر ونادر الاستخدام. [ 68 ] ومع ذلك، أُعيدت كتابة هذه الميزة من الصفر في عام 2016 للإصدار btrfs-progs4.6. [ 48 ] واعتُبرت مستقرة منذ ذلك الحين.
تم تقديم التحويل الموضعي من ReiserFS في سبتمبر 2017 مع النواة 4.13. [ 69 ]
تركيب الوصلات / أجهزة البذور
عند إنشاء نظام ملفات Btrfs جديد، يمكن استخدام نظام Btrfs موجود كنظام ملفات "أساسي" للقراءة فقط. [ 70 ] سيعمل نظام الملفات الجديد حينها كطبقة نسخ عند الكتابة فوق النظام الأساسي، كنوع من أنواع الربط الموحد . يمكن فصل النظام الأساسي لاحقًا عن نظام Btrfs، وعندها سيقوم برنامج إعادة التوازن بنسخ أي بيانات أساسية لا يزال النظام الجديد يشير إليها قبل الفصل. وقد أشار ماسون إلى أن هذا قد يكون مفيدًا لبرنامج تثبيت قرص حي ، والذي قد يبدأ التشغيل من نظام Btrfs أساسي للقراءة فقط على قرص ضوئي، ويعيد توازن نفسه إلى القسم المستهدف على قرص التثبيت في الخلفية بينما يواصل المستخدم العمل، ثم يُخرج القرص لإكمال التثبيت دون إعادة تشغيل الجهاز.
التشفير
في مقابلة أجراها عام 2009، ذكر ماسون أن دعم التشفير كان مخططًا له لنظام ملفات Btrfs. [ 8 ] في غضون ذلك، يتمثل أحد الحلول البديلة لدمج التشفير مع Btrfs في استخدام آلية تشفير القرص الكامل مثل dm-crypt / LUKS على الأجهزة الأساسية وإنشاء نظام ملفات Btrfs فوق تلك الطبقة.
اعتبارًا من عام 2020،كان المطورون يعملون على إضافة تجزئة مفتاحية مثل HMAC ( SHA256 ). [ 71 ]
الفحص والاسترداد
تعتمد أنظمة يونكس تقليديًا على برامج " fsck " لفحص وإصلاح أنظمة الملفات. تُنفَّذ هذه الوظيفة عبر btrfs checkالبرنامج. ومنذ الإصدار 4.0، تُعتبر هذه الوظيفة مستقرة نسبيًا. ومع ذلك، اعتبارًا من ديسمبر 2022 ،تشير وثائق نظام ملفات btrfs إلى أنه --repairلا ينبغي استخدام هذا الخيار إلا إذا تم نصحك به من قِبل "مطور أو مستخدم خبير". [ 39 ] اعتبارًا من أغسطس 2022 ،توصي وثائق SLE باستخدام قرص تشغيل مباشر، وإجراء نسخ احتياطي، واستخدام خيار الإصلاح فقط كملاذ أخير. [ 72 ]
توجد أداة أخرى، تُسمى btrfs-restore، يمكن استخدامها لاستعادة الملفات من نظام ملفات غير قابل للتحميل، دون تعديل نظام الملفات التالف نفسه (أي بطريقة غير تدميرية). [ 73 ] [ 74 ]
في الاستخدام العادي، يتميز نظام ملفات Btrfs بقدرته على إصلاح نفسه ذاتيًا في الغالب، ويمكنه استعادة البيانات من جذور الملفات التالفة عند عملية الربط، وذلك بفضل إجراء عمليات تفريغ دورية للبيانات إلى وحدة التخزين الدائمة، افتراضيًا كل 30 ثانية. وبالتالي، فإن الأخطاء المنفردة ستؤدي إلى فقدان ما يصل إلى 30 ثانية من تغييرات نظام الملفات عند عملية الربط التالية. [ 75 ] يمكن تغيير هذه المدة بتحديد قيمة مطلوبة (بالثواني) باستخدام commitخيار الربط. [ 76 ] [ 77 ]
تصميم
أشار اقتراح أوهاد روديه الأصلي في مؤتمر USENIX 2007 إلى أن أشجار B+ ، المستخدمة على نطاق واسع كهياكل بيانات على القرص لقواعد البيانات، لا تسمح بكفاءة بإنشاء لقطات تعتمد على النسخ عند الكتابة، لأن عقدها الطرفية مرتبطة ببعضها: فإذا نُسخت عقدة طرفية عند الكتابة، فسيتعين نسخ العقد الشقيقة والآباء لها أيضًا، وكذلك العقد الشقيقة والآباء ، وهكذا حتى تُنسخ الشجرة بأكملها. واقترح بدلًا من ذلك شجرة B معدلة (لا ترتبط فيها العقد الطرفية)، مع عداد مرجعي مرتبط بكل عقدة في الشجرة، ولكنه يُخزن في بنية خريطة حرة مخصصة، بالإضافة إلى بعض التعديلات على خوارزميات موازنة الشجرة لجعلها متوافقة مع النسخ عند الكتابة. وستكون النتيجة بنية بيانات مناسبة لمخزن كائنات عالي الأداء، قادرة على إنشاء لقطات تعتمد على النسخ عند الكتابة، مع الحفاظ على تزامن جيد . [ 17 ]
في وقت لاحق من ذلك العام، بدأ ماسون العمل في شركة أوراكل على نظام ملفات يدعم اللقطات، ويستخدم بنية البيانات هذه بشكل شبه حصري - ليس فقط للبيانات الوصفية وبيانات الملفات، بل أيضًا بشكل متكرر لتتبع تخصيص المساحة للأشجار نفسها. وقد سمح هذا بتوجيه جميع عمليات التصفح والتعديلات عبر مسار برمجي واحد، بحيث لا يلزم تنفيذ ميزات مثل النسخ عند الكتابة، والتحقق من المجموع الاختباري، والنسخ المتطابق إلا مرة واحدة فقط لتحقيق فائدة لنظام الملفات بأكمله. [ 78 ]
يُبنى نظام ملفات Btrfs على عدة طبقات من هذه الأشجار، جميعها تستخدم نفس تطبيق شجرة B. تخزن الأشجار عناصر عامة مُرتبة حسب مفتاح طوله 136 بت. تمثل البتات الـ 64 الأكثر أهمية من المفتاح مُعرّفًا فريدًا للكائن . أما البتات الثمانية الوسطى فتمثل حقل نوع العنصر: يُستخدم هذا الحقل مُدمجًا في الكود كمُرشِّح للعناصر في عمليات البحث في الشجرة. يمكن أن يحتوي الكائن على عناصر متعددة من أنواع مختلفة. تُستخدم البتات الـ 64 المتبقية (الأقل أهمية) بطرق خاصة بكل نوع. لذلك، ينتهي الأمر بعناصر الكائن نفسه متجاورة في الشجرة، مُجمَّعة حسب النوع. باختيار قيم مفاتيح مُحددة، يُمكن للكائنات وضع عناصر من النوع نفسه بترتيب مُعين. [ 4 ] [ 78 ]
تُعدّ عُقد الشجرة الداخلية ببساطة قوائم مُسطّحة من أزواج المفاتيح والمؤشرات، حيث يُمثّل المؤشر رقم الكتلة المنطقية لعقدة فرعية. تحتوي عُقد الأوراق على مفاتيح العناصر مُجمّعة في بداية العقدة وبيانات العناصر مُجمّعة في نهايتها، ويتزايد حجمهما باتجاه بعضهما البعض مع امتلاء الورقة. [ 78 ]
شجرة نظام الملفات
داخل كل دليل، تظهر مدخلات الدليل كعناصر دليل ، حيث تمثل البتات الأقل أهمية في قيم المفاتيح تجزئة CRC32C لاسم الملف. بياناتها عبارة عن مفتاح موقع ، أو مفتاح عنصر inode الذي تشير إليه. بالتالي، يمكن لعناصر الدليل مجتمعةً أن تعمل كمؤشر للبحث عن مسار inode، ولكنها لا تُستخدم للتكرار لأنها مُرتبة حسب تجزئتها، مما يؤدي فعليًا إلى تبديلها عشوائيًا . هذا يعني أن تطبيقات المستخدم التي تتكرر على الملفات وتفتحها في دليل كبير ستُولد عددًا أكبر بكثير من عمليات البحث على القرص بين الملفات غير المتجاورة - وهو ما يُسبب استنزافًا ملحوظًا للأداء في أنظمة الملفات الأخرى ذات الأدلة المرتبة حسب التجزئة مثل ReiserFS [ 79 ] و ext3 (مع تمكين فهارس Htree [ 80 ] ) وext4، والتي جميعها تستخدم أسماء ملفات مُجزأة باستخدام TEA . لتجنب ذلك، يحتوي كل مدخل دليل على عنصر فهرس دليل ، حيث تُعيّن قيمة مفتاح هذا العنصر إلى عداد خاص بكل دليل يزيد مع كل مدخل دليل جديد. وبالتالي، فإن التكرار على عناصر الفهرس هذه يعيد الإدخالات بنفس الترتيب تقريبًا كما هو مخزن على القرص.
تحتوي الملفات ذات الروابط الصلبة في عدة مجلدات على عناصر مرجعية متعددة، عنصر لكل مجلد رئيسي. أما الملفات التي تحتوي على روابط صلبة متعددة في المجلد نفسه ، فتضم جميع أسماء الملفات المرتبطة في عنصر مرجعي واحد. كان هذا عيبًا في التصميم يحد من عدد الروابط الصلبة في المجلد نفسه إلى الحد الذي يمكن استيعابه في كتلة شجرية واحدة. (بافتراض حجم الكتلة الافتراضي 4 كيلوبايت، ومتوسط طول اسم الملف 8 بايت، وحجم رأس لكل اسم ملف 4 بايت، فإن هذا العدد سيكون أقل من 350). لوحظ أن التطبيقات التي تستخدم بكثرة روابط صلبة متعددة في المجلد نفسه، مثل git و GNUS و GMame و BackupPC، تفشل عند هذا الحد. [ 81 ] وقد أُزيل هذا الحد لاحقًا [ 82 ] (واعتبارًا من أكتوبر 2012) . تم دمجها [ 83 ] في انتظار الإصدار في لينكس 3.7) عن طريق إدخال عناصر مرجعية موسعة إضافية لاحتواء أسماء ملفات الارتباط الصلب التي لا تتناسب بطريقة أخرى.
الامتدادات
تُحفظ بيانات الملفات خارج الشجرة في وحدات تخزين متصلة [ 4 ] ، وهي عبارة عن سلاسل متجاورة من كتل بيانات القرص. إزاحة مفتاح العنصر هي البايت البادئ لوحدة التخزين المتصلة [ 4 ] .
تتشارك اللقطات والملفات المستنسخة في نطاقات التخزين. عند استبدال جزء صغير من نطاق تخزين كبير، قد تُنشئ عملية النسخ عند الكتابة ثلاثة نطاقات تخزين جديدة: نطاق صغير يحتوي على البيانات المستبدلة، ونطاقان كبيران يحتويان على بيانات غير معدلة على جانبي نطاق الاستبدال. لتجنب إعادة كتابة البيانات غير المعدلة، قد تُنشئ عملية النسخ عند الكتابة نطاقات طرفية ، أو نطاقات هي ببساطة أجزاء من نطاقات موجودة. تسمح عناصر بيانات النطاق بذلك من خلال تضمين إزاحة في النطاق الذي تتعقبه: عناصر النطاقات الطرفية هي تلك التي تحتوي على إزاحات غير صفرية. [ 4 ]
شجرة تخصيص الامتداد
تعمل شجرة تخصيص الامتدادات كخريطة تخصيص لنظام الملفات. على عكس الأشجار الأخرى، لا تحتوي العناصر في هذه الشجرة على معرّفات كائنات. فهي تمثل مناطق من المساحة: وتحتوي قيم مفاتيحها على إزاحات البداية وأطوال المناطق التي تمثلها.
يقسم نظام الملفات المساحة المخصصة له إلى مجموعات كتل ، وهي مناطق تخصيص متغيرة الحجم تتناوب بين تفضيل نطاقات البيانات الوصفية (عُقد الشجرة) ونطاقات البيانات (محتويات الملفات). النسبة الافتراضية لمجموعات كتل البيانات إلى مجموعات كتل البيانات الوصفية هي 1:2. وتهدف هذه المجموعات إلى استخدام مفاهيم مُخصِّص كتل أورلوف لتخصيص الملفات ذات الصلة معًا ومقاومة التجزئة عن طريق ترك مساحة حرة بين المجموعات. (مع ذلك، فإن مجموعات كتل Ext3 لها مواقع ثابتة تُحسب من حجم نظام الملفات، بينما تلك الموجودة في Btrfs ديناميكية وتُنشأ حسب الحاجة). ترتبط كل مجموعة كتل بعنصر مجموعة كتل . تتضمن عناصر Inode في شجرة نظام الملفات مرجعًا إلى مجموعة الكتل الحالية الخاصة بها. [ 4 ]
تحتوي عناصر النطاق على مرجع خلفي لعقدة الشجرة أو الملف الذي يشغل ذلك النطاق. قد توجد عدة مراجع خلفية إذا كان النطاق مشتركًا بين اللقطات. إذا كان عدد المراجع الخلفية كبيرًا جدًا بحيث لا يتسع له العنصر، فإنها تنتشر إلى عناصر مرجعية فردية لبيانات النطاق . بدورها، تحتوي عقد الشجرة على مراجع خلفية لأشجارها الحاوية. هذا يُمكّن من تحديد النطاقات أو عقد الشجرة الموجودة في أي منطقة من المساحة عن طريق إجراء بحث نطاقي في شجرة B على زوج من الإزاحات التي تُحيط بتلك المنطقة، ثم تتبع المراجع الخلفية. بالنسبة لنقل البيانات، يسمح هذا باجتياز تصاعدي فعال من الكتل المنقولة للعثور بسرعة على جميع المراجع التنازلية لتلك الكتل وإصلاحها، دون الحاجة إلى مسح نظام الملفات بأكمله. وهذا بدوره يسمح لنظام الملفات بتقليص حجم التخزين وترحيله وإلغاء تجزئته بكفاءة أثناء التشغيل.
شجرة تخصيص الامتدادات، كغيرها من الأشجار في نظام الملفات، تعتمد على النسخ عند الكتابة. لذا، قد تؤدي عمليات الكتابة إلى نظام الملفات إلى سلسلة من التغييرات، حيث ينتج عن تغيير عُقد الشجرة وبيانات الملفات تخصيص امتدادات جديدة، مما يؤدي بدوره إلى تغيير شجرة الامتدادات نفسها. ولتجنب هذه الحلقة المفرغة ، يمكن تحديث عُقد شجرة الامتدادات الموجودة في الذاكرة، ولكن لم تُحفظ بعد على القرص، في مكانها لتعكس الامتدادات الجديدة المنسوخة عند الكتابة.
نظريًا، تجعل شجرة تخصيص الامتدادات خريطة البتات التقليدية للمساحة الحرة غير ضرورية، لأنها تعمل كنسخة من شجرة B-tree لشجرة BSP . عمليًا، تُستخدم شجرة حمراء-سوداء في الذاكرة لخرائط بتات بحجم الصفحة لتسريع عمليات التخصيص. تُحفظ هذه الخرائط على القرص (بدءًا من Linux 2.6.37، عبر space_cacheخيار mount [ 84 ] ) كامتدادات خاصة معفاة من التحقق من المجموع الاختباري ونسخ البيانات عند الكتابة.
شجرة التحقق من المجموع الاختباري والتنظيف
يتم حساب قيم التحقق CRC-32C لكل من البيانات والبيانات الوصفية، وتُخزّن كعناصر تحقق في شجرة التحقق . تتسع الشجرة لـ 256 بت من قيم التحقق للبيانات الوصفية، وتصل إلى عقدة كاملة (حوالي 4 كيلوبايت أو أكثر) لقيم التحقق للبيانات. يوفر نظام ملفات Btrfs إمكانية إضافة خوارزميات تحقق إضافية في الإصدارات المستقبلية. [ 36 ] [ 85 ]
يوجد عنصر واحد للتحقق من المجموع الاختباري لكل سلسلة متصلة من الكتل المخصصة، حيث تُجمع قيم التحقق من المجموع الاختباري لكل كتلة من طرف إلى طرف في بيانات العنصر. إذا تجاوز عدد قيم التحقق من المجموع الاختباري المساحة المتاحة، فإنها تُضاف إلى عنصر آخر في ورقة جديدة. إذا اكتشف نظام الملفات عدم تطابق في المجموع الاختباري أثناء قراءة كتلة ما، فإنه يحاول أولاً الحصول على نسخة سليمة من هذه الكتلة (أو إنشائها) من جهاز آخر - في حال استخدام تقنيات النسخ المتطابق الداخلي أو RAID. [ 86 ] [ 87 ]
يستطيع نظام الملفات Btrfs بدء فحص شامل لنظام الملفات عبر الإنترنت من خلال تشغيل مهمة تنظيف نظام الملفات التي تُنفذ في الخلفية. تقوم مهمة التنظيف بفحص نظام الملفات بالكامل للتأكد من سلامته، وتحاول تلقائيًا الإبلاغ عن أي قطاعات تالفة وإصلاحها. [ 86 ] [ 88 ]
جذع الشجرة
يُثبّت طلب fsync البيانات المُعدّلة فورًا في وحدة التخزين الثابتة. قد تُولّد أحمال العمل التي تعتمد بكثافة على fsync (مثل قاعدة بيانات أو جهاز افتراضي يُجري عمليات fsync متكررة لنظام التشغيل) كمية كبيرة من عمليات الإدخال/الإخراج للكتابة الزائدة، وذلك بإجبار نظام الملفات على نسخ البيانات عند الكتابة بشكل متكرر، وتفريغ الأجزاء المُعدّلة باستمرار من الشجرة إلى وحدة التخزين. لتجنب ذلك، يتم إنشاء شجرة سجلات مؤقتة لكل وحدة تخزين فرعية لتسجيل عمليات النسخ التي يُفعّلها fsync عند الكتابة. أشجار السجلات مكتفية ذاتيًا، حيث تتتبع نطاقاتها الخاصة وتحتفظ بعناصر التحقق الخاصة بها. تُعاد عناصرها وتُحذف عند تثبيت الشجرة بالكامل التالي، أو (في حالة حدوث عطل في النظام) عند إعادة التحميل التالية.
أشجار الأجزاء والأجهزة
تُقسّم وحدات التخزين الكتلية إلى أجزاء مادية بحجم 1 جيجابايت للبيانات و256 ميجابايت للبيانات الوصفية. [ 89 ] يمكن نسخ الأجزاء المادية الموجودة على أجهزة متعددة أو دمجها معًا في جزء منطقي واحد . تُدمج هذه الأجزاء المنطقية في مساحة عنوان منطقية واحدة يستخدمها باقي نظام الملفات.
تتتبع شجرة الأجزاء هذا الأمر عن طريق تخزين كل جهاز فيها كعنصر جهاز ، والأجزاء المنطقية كعناصر خريطة أجزاء ، والتي توفر تعيينًا أماميًا من العناوين المنطقية إلى العناوين الفيزيائية عن طريق تخزين إزاحاتها في أقل 64 بت أهمية من مفتاحها. يمكن أن تكون عناصر خريطة الأجزاء من عدة أنواع مختلفة:
- أعزب
- جزء منطقي واحد إلى جزء فعلي واحد
- مكرر
- تحويل جزء منطقي واحد إلى جزأين فعليين على جهاز تخزين واحد
- raid0
- N من الأجزاء المنطقية إلى N≥2 من الأجزاء المادية عبر N≥2 من أجهزة التخزين
- الغارة 1
- يتم تقسيم البيانات إلى جزأين منطقيين عبر جهازين من أصل N≥2 من أجهزة التخزين الكتلية، [ 90 ] على عكس RAID 1 التقليدي الذي يحتوي على N جزءًا فعليًا.
- raid1c3
- من جزء منطقي واحد إلى 3 أجزاء فعلية من أصل N≥3 أجهزة تخزين كتلية
- raid1c4
- من جزء منطقي واحد إلى 4 أجزاء فعلية من أصل N≥4 أجهزة تخزين كتلية
- راد 5
- N (لـ N≥2) من الأجزاء المنطقية إلى N+1 من الأجزاء الفيزيائية عبر N+1 من أجهزة التخزين الكتلية، مع استخدام جزء فيزيائي واحد كعنصر تكافؤ
- راد 6
- يتم تحويل N (لـ N≥2) من الأجزاء المنطقية إلى N+2 من الأجزاء الفيزيائية عبر N+2 من أجهزة التخزين الكتلية، مع استخدام جزأين فيزيائيين كأجزاء تكافؤ.
يمثل N عدد وحدات التخزين التي لا تزال تحتوي على مساحة خالية عند تخصيص الجزء. إذا لم يكن N كبيرًا بما يكفي لعملية النسخ/الربط المختارة، فإن نظام الملفات يكون قد نفد من المساحة فعليًا.
أشجار النقل
تتطلب عمليات إلغاء التجزئة وتقليص الحجم وإعادة التوازن نقلَ وحدات التخزين. مع ذلك، فإن إجراء نسخ بسيط عند الكتابة لوحدة التخزين المنقولة سيؤدي إلى قطع المشاركة بين اللقطات واستهلاك مساحة القرص. وللحفاظ على المشاركة، تُستخدم خوارزمية التحديث والتبديل، حيث تعمل شجرة نقل خاصة كمساحة تخزين مؤقتة للبيانات الوصفية المتأثرة. تُنسخ وحدة التخزين المراد نقلها أولًا إلى وجهتها. ثم، من خلال تتبع المراجع الخلفية صعودًا عبر شجرة نظام ملفات المجلد الفرعي المتأثر، تُحدَّث البيانات الوصفية التي تشير إلى وحدة التخزين القديمة تدريجيًا لتشير إلى الجديدة؛ وتُخزَّن أي عناصر مُحدَّثة حديثًا في شجرة النقل. بمجرد اكتمال التحديث، تُبدَّل العناصر الموجودة في شجرة النقل مع نظيراتها في المجلد الفرعي المتأثر، وتُحذف شجرة النقل. [ 91 ]
كتلة فائقة
تُخزَّن جميع أشجار نظام الملفات - بما في ذلك شجرة الأجزاء نفسها - في أجزاء، مما يُسبب مشكلة محتملة في عملية بدء التشغيل عند تحميل نظام الملفات. ولبدء التشغيل ، تُخزَّن قائمة بالعناوين الفيزيائية للأجزاء التابعة لشجرة الأجزاء وشجرة الجذر في الكتلة الفائقة . [ 92 ]
تُحفظ نسخ احتياطية من الكتلة الفائقة في مواقع ثابتة: [ 93 ] 64 كيلوبايت في كل وحدة تخزين، مع نسخ إضافية في مواقع 64 ميجابايت، و256 جيجابايت، و1 بيتابايت. عند تحديث نسخة احتياطية من الكتلة الفائقة، يتم زيادة رقم جيلها . عند تحميل وحدة التخزين، تُستخدم النسخة ذات أعلى رقم جيل. يتم تحديث جميع نسخ الكتلة الفائقة بالتزامن، باستثناء وضع SSD الذي يُبدّل التحديثات بين النسخ الاحتياطية لتحقيق توازن في استهلاك البيانات .
الدعم التجاري
مدعوم
- أوراكل لينكس من الإصدار 7 [ 94 ]
- SUSE Linux Enterprise Server من الإصدار 12 [ 95 ] [ 96 ]
- Synology DiskStation Manager (DSM) من الإصدار 6.0 [ 97 ]
- محطة عمل فيدورا من الإصدار 33 [ 35 ]
- AlmaLinux من الإصدار 10.1 [ 98 ]
- Asustor , منذ ADM 3.3 [ 99 ]
- TerraMaster ، منذ TOS 4.1 [ 100 ]
لم يعد مدعومًا
انظر أيضاً
- APFS – نظام ملفات يعمل بتقنية النسخ عند الكتابة لأنظمة macOS و iPadOS و iOS و tvOS و watchOS
- بي سي شيفز
- مقارنة أنظمة الملفات
- نظام ملفات HAMMER – نظام ملفات DragonFly BSD الذي يستخدم أشجار B، مقترنًا بمجاميع التحقق كإجراء مضاد لتلف البيانات
- قائمة أنظمة الملفات
- نظام الملفات ReFS – نظام ملفات يعمل بتقنية النسخ عند الكتابة لنظام التشغيل Windows Server 2012
- نظام الملفات ZFS
ملحوظات
- ١ ٢ هذا هو الحد الأقصى لحجم القرص الذي يفرضه نظام ملفات Btrfs. يتم تخفيض هذا الحد إلى ٨ إكسابايت على أنظمة ٦٤ بت و٢إكسابايت على أنظمة ٣٢ بت بسبب القيود الداخلية لنواة لينكس، ما لمخيار تكوين النواة (المتوفر منذ سلسلة نواة ٢.٦.x ) لإزالة هذه القيود. [ ١٠٣ ] [ ١٠٤ ]
CONFIG_LBD - ↑ كل عنصر في Btrfs له معرف 64 بت، مما يعني أن نظام ملفات Btrfs لا يمكن أن يحتوي على أكثر من 264 ملفًا.
مراجع
- ↑ "المساهمون في توثيق BTRFS" . Btrfs.ReadTheDocs.io . 15 يونيو 2022. تم الاطلاع عليه في 5 ديسمبر 2022 .
- ↑ "GPT fdisk - ArchWiki" .
- 1 2 "وثائق سوس: دليل إدارة التخزين - دعم الملفات الكبيرة في لينكس" . سوس . تم الاطلاع عليه بتاريخ 12 أغسطس 2015 .
- 1 2 3 4 5 6 ماسون، كريس. "تصميم Btrfs" . ويكي Btrfs . مؤرشف من الأصل في 25 أبريل 2012.
- ↑ كوربيت، جوناثان (26 يوليو 2010). "أوقات إنشاء الملفات" . LWN.net . تم الاطلاع عليه بتاريخ 15 أغسطس 2015 .
- ^ "تنسيق على القرص - btrfs Wiki" . btrfs.wiki.kernel.org .
- 1 2 "Linux_4.14 - Linux Kernel Newbies" . kernelnewbies.org .
- 1 2 3 4 ماكفرسون، أماندا (22 يونيو 2009). "حوار مع كريس ماسون حول نظام الملفات BTRfs: نظام الملفات من الجيل التالي لنظام لينكس" . مؤسسة لينكس . مؤرشف من الأصل في 27 يونيو 2012. تم الاطلاع عليه في 7 يناير 2025 .
- 1 2 3 "إزالة التكرار" . Btrfs.ReadTheDocs.io . تم الاطلاع عليه بتاريخ 19 أبريل 2015 .
- ↑ "برنامج تشغيل ويندوز على GitHub.com" . GitHub . تم الاطلاع عليه بتاريخ 10 يناير 2023 .
- ↑ "تم إصدار ReactOS 0.4.1" . reactos.org . تم الاطلاع عليه بتاريخ 11 أغسطس 2016 .
- ↑ "أسئلة وأجوبة حول أوراكل لينكس 7 مع ويم كويكيرتس" . أوراكل . يبدأ الحدث عند الدقيقة 1 و15 ثانية. مؤرشف من الأصل بتاريخ 18 أغسطس 2016. تم الاطلاع عليه بتاريخ 6 فبراير 2016 .
- 1 2 هينسون، فاليري (31 يناير 2008). Chunkfs: فحص وإصلاح سريع لنظام الملفات . ملبورن ، أستراليا. حدث ذلك عند الدقيقة 18 و49 ثانية . تم الاسترجاع في 5 فبراير 2008.
يُطلق عليه اسم Butter FS أو B-tree FS، لكن جميع المستخدمين المتميزين يُطلقون عليه اسم Butter FS
. - ↑ سالتر، جيم (24 سبتمبر 2021). "دراسة نظام ملفات btrfs، نظام ملفات لينكس الذي لا يزال قيد التطوير" . آرس تكنيكا . تاريخ الاطلاع: 11 يونيو 2023.
كريس ماسون هو المطور المؤسس لنظام btrfs، الذي بدأ العمل عليه عام 2007 أثناء عمله في شركة أوراكل. هذا ما يدفع الكثيرين للاعتقاد بأن btrfs مشروع تابع لأوراكل، وهو ليس كذلك. كان المشروع ملكًا لماسون، وليس لجهة عمله، ولا يزال مشروعًا مجتمعيًا غير مقيد بملكية الشركات حتى يومنا هذا.
- ↑ "تغيير في حالة استقرار نظام الملفات fs/btrfs/Kconfig في نواة لينكس" . تم الاطلاع عليه بتاريخ 8 فبراير 2019 .
- ↑ كيرنر، شون مايكل (30 أكتوبر 2008). "نظام ملفات أفضل لنظام لينكس؟" . InternetNews.com . مؤرشف من الأصل في 8 أبريل 2011. تم الاطلاع عليه في 27 أغسطس 2020 .
- 1 2 روده، أوهاد (2007). أشجار B، والتظليل، والاستنساخ (ملف PDF) . ورشة عمل USENIX لتخزين الملفات وأنظمة الملفات في لينكس.وكذلك روديه، أوهاد (2008). "أشجار B، والتظليل، والاستنساخ". معاملات ACM في التخزين . 3 (4): 1-27 . doi : 10.1145/1326542.1326544 . S2CID 207166167 .
- 1 2 "انضمام كبار مطوري نظام ملفات Btrfs إلى فيسبوك" . phoronix.com . تم الاطلاع عليه بتاريخ 19 أبريل 2015 .
- ↑ بول، رايان (13 أبريل 2009). "متحدثون يناقشون نواة لينكس في قمة التعاون" . آرس تكنيكا . مؤرشف من الأصل في 17 يونيو 2012. تم الاطلاع عليه في 22 أغسطس 2009 .
- ↑ تسو، ثيودور (1 أغسطس 2008). "ردًا على: reiser4 للإصدار 2.6.27-rc1" . قائمة بريدية لنواة لينكس . تم الاطلاع عليه في 31 ديسمبر 2010 .
- ^ “الجدول الزمني للتطوير” . بترفس ويكي . 11 كانون الأول/ديسمبر 2008 مؤرشفة من الأصلي في 20 ديسمبر 2008.
- ↑ وولفينغ، بريتا (12 يناير 2009). "نواة 2.6.29: كوربيت يقول إن نظام ملفات Btrfs هو نظام الملفات من الجيل التالي" . مجلة لينكس . تم الاطلاع عليه في 5 نوفمبر 2011 .
- 1 2 "وثائق Red Hat Enterprise Linux 6: معاينات تقنية" . مؤرشف من الأصل بتاريخ 28 مايو 2011. تم الاطلاع عليه بتاريخ 21 يناير 2011 .
- ↑ "العدد 276 من نشرة فيدورا الأسبوعية" . 25 مايو 2011.
- ↑ «إصدار دبيان 6.0 "سكويز"» (بيان صحفي). دبيان . 6 فبراير 2011. تاريخ الاطلاع: 8 فبراير 2011.
تمت إضافة دعم لأنظمة الملفات ext4 وBtrfs...
- 1 2 "نواة لينكس 3.0، القسم 1.1. نظام الملفات Btrfs: إلغاء التجزئة التلقائي، والتنظيف، وتحسينات الأداء" . kernelnewbies.org . 21 يوليو 2011. تم الاطلاع عليه في 5 أبريل 2016 .
- ^ ليمهويس ، ثورستن (21 يونيو 2011). "سجل النواة: قادم في الإصدار 3.0 (الجزء 2) - أنظمة الملفات" . ح مفتوح . تم الاسترجاع 8 نوفمبر 2011 .
- ↑ فارغيز، سام. "آي تي واير" . ITWire.com . تم الاطلاع عليه بتاريخ 19 أبريل 2015 .
- ↑ "تم إصدار الإصدار الثاني من نواة المؤسسة غير القابلة للكسر" . تم الاطلاع عليه بتاريخ 8 مايو 2019 .
- ↑ "ملاحظات إصدار SLES 11 SP2" . 21 أغسطس 2012. تم الاطلاع عليه بتاريخ 29 أغسطس 2012 .
- ↑ "ملاحظات إصدار SUSE Linux Enterprise Server 12" . 5 نوفمبر 2015. تم الاطلاع عليه في 20 يناير 2016 .
- 1 2 "ملاحظات إصدار Red Hat Enterprise Linux 7.4، الفصل 53: الوظائف المهملة" . 1 أغسطس 2017. مؤرشف من الأصل في 8 أغسطس 2017.
- 1 2 "اعتبارات اعتماد RHEL 8" . وثائق المنتج لنظام Red Hat Enterprise Linux 8. Red Hat . تم الاطلاع عليه بتاريخ 9 مايو 2019 .
- ↑ "كيفية اختيار نظام ملفات Red Hat Enterprise Linux" . 4 سبتمبر 2020. تم الاطلاع عليه في 3 يناير 2022 .
- 1 2 مورفي، كريس؛ وايت، لانغدون (24 أغسطس 2020). "نظام الملفات Btrfs قادم إلى فيدورا 33" . مجلة فيدورا . تم الاطلاع عليه في 3 أغسطس 2025 .
- 1 2 "Btrfs Wiki: الميزات" . btrfs.wiki.kernel.org . 27 نوفمبر 2013 . تم الاسترجاع 27 نوفمبر 2013 .
- ↑ "ويكي Btrfs: سجل التغييرات" . Btrfs.Wiki.Kernel.org . 29 مايو 2019. تم الاطلاع عليه بتاريخ 27 نوفمبر 2013 .
- ↑ "الحالة - وثائق BTRFS" . Btrfs.ReadTheDocs.io . تم الاطلاع عليه بتاريخ 12 يناير 2025 .
- 1 2 "فحص btrfs(8)" . Btrfs.ReadTheDocs.io .
- ↑ "استخدام نظام الملفات Btrfs مع أجهزة متعددة" . kernel.org . 7 نوفمبر 2013. تم الاطلاع عليه بتاريخ 20 نوفمبر 2013 .
- ↑ لارابيل، مايكل (24 مارس 2025). "إضافة ضغط Zstd سريع/في الوقت الفعلي وتحسينات أخرى للأداء إلى نظام ملفات Btrfs" . Phoronix.com . تم الاطلاع عليه في 31 يوليو 2025 .
- ↑ "الضغط" . kernel.org . 25 يونيو 2013. تم الاطلاع عليه في 1 أبريل 2014 .
- ↑ "Btrfs: إضافة دعم لخصائص inode" . kernel.org . 28 يناير 2014. تم الاطلاع عليه في 1 أبريل 2014 .
- ↑ "btrfs: لقطات للقراءة فقط" . تم الاطلاع عليه بتاريخ 12 ديسمبر 2011 .
- ↑ "توفير مساحة القرص على نظام لينكس عن طريق استنساخ الملفات على نظامي الملفات Btrfs و OCFS2" . تم الاطلاع عليه بتاريخ 1 أغسطس 2017 .
- ↑ "أسئلة وأجوبة ويكي: ما هي دالة التحقق من المجموع التي يستخدمها نظام ملفات Btrfs؟" . ويكي Btrfs . تم الاطلاع عليه بتاريخ 15 يونيو 2009 .
- ↑ "أبرز ميزات نظام الملفات Btrfs في الإصدار 5.5: تجزئات جديدة" . تم الاطلاع عليه بتاريخ 29 أغسطس 2020 .
- 1 2 "إصدار برنامج Btrfs 4.6" . تم الاطلاع عليه في 1 أغسطس 2017 .
- ↑ ماسون، كريس (12 يناير 2009). "سجل تغييرات Btrfs" . مؤرشف من الأصل في 29 فبراير 2012. تم الاطلاع عليه في 12 فبراير 2012 .
- 1 2 3 كوربيت، جوناثان (11 يوليو 2012). "إرسال/استقبال Btrfs" . LWN.net . تم الاطلاع عليه بتاريخ 14 نوفمبر 2012 .
- ↑ "ويكي Btrfs: النسخ الاحتياطي التزايدي" . 27 مايو 2013. تم الاطلاع عليه في 27 نوفمبر 2013 .
- 1 2 يانسن، آرني (2011). "مجموعات الحصص الفرعية لـ Btrfs" (PDF) . ستراتو ايه جي . تم الاسترجاع 14 نوفمبر 2012 .
- ↑ "RAID 5/6" . Btrfs.ReadTheDocs.io . 16 يوليو 2016. تم الاطلاع عليه في 7 يناير 2025 .
- ↑ بلاكسيل، زيغو. "كيفية استخدام نظام الملفات btrfs raid5 بنجاح (تقريبًا)" . lore.kernel.org . تم الاطلاع عليه بتاريخ 26 يونيو 2022 .
- ↑ بلاكسيل، زيغو. "الأخطاء الحالية ذات التأثير التشغيلي على btrfs raid5" . lore.kernel.org . تم الاطلاع عليه بتاريخ 26 يونيو 2022 .
- ↑ كوربيت، جوناثان (5 مايو 2009). "الجانبان لدالة reflink()" . LWN.net . تم الاطلاع عليه بتاريخ 17 أكتوبر 2013 .
- 1 2 "حالات الاستخدام - وثائق btrfs" . kernel.org . تم الاطلاع عليه في 4 نوفمبر 2013 .
- ↑ "btrfs: السماح بنسخ الملفات عبر المجلدات الفرعية" . github.com . تم الاطلاع عليه بتاريخ 4 نوفمبر 2013 .
- 1 2 غريمر، لينز (31 أغسطس 2011). "توفير مساحة القرص على لينكس عن طريق استنساخ الملفات على Btrfs وOCFS2" . oracle.com . مؤرشف من الأصل في 18 أكتوبر 2013. تم الاطلاع عليه في 17 أكتوبر 2013 .
- ↑ "الروابط الرمزية تشير إلى الأسماء، والروابط الصلبة تشير إلى البيانات الوصفية، والروابط المرجعية تشير إلى البيانات" . pixelbeat.org . 27 أكتوبر 2010. تم الاطلاع عليه في 17 أكتوبر 2013 .
- ↑ مايرينغ، جيم (20 أغسطس 2009). "أخبار GNU coreutils: تغييرات جديرة بالذكر في الإصدار 7.5" . savannah.gnu.org . تم الاطلاع عليه في 30 أغسطس 2009 .
- ↑ سكريفانو، جوزيبي (1 أغسطس 2009). "cp: قبول خيار --reflink" . savannah.gnu.org . تم الاطلاع عليه في 2 نوفمبر 2009 .
- ↑ – دليل مبرمج لينكس – استدعاءات النظام من Manned.org
- 1 2 3 4 "دليل مسؤول النظام - وثائق Btrfs" . kernel.org . تم الاطلاع عليه بتاريخ 31 أكتوبر 2013 .
- 1 2 3 "5.6 إنشاء وحدات تخزين فرعية ولقطات [ بحاجة إلى تحديث ] " . oracle.com . 2013. تم الاطلاع عليه في 31 أكتوبر 2013 .
- ^ "مسكتك - btrfs ويكي" . btrfs.wiki.kernel.org .
- 1 2 "5.7 استخدام ميزة الإرسال/الاستقبال" . oracle.com . 2013. تم الاطلاع عليه في 31 أكتوبر 2013 .
- 1 2 3 4 ماسون، كريس (25 يونيو 2015). "التحويل من Ext3 (وثائق Btrfs)" . kernel.org . تم الاطلاع عليه في 22 أبريل 2016 .
- ↑ "btrfs-convert(8) — وثائق BTRFS" . Btrfs.ReadTheDocs.io . تم الاطلاع عليه بتاريخ 16 أكتوبر 2022 .
- ↑ "جهاز البذرة" . مؤرشف من الأصل في 12 يونيو 2017. تم الاسترجاع في 1 أغسطس 2017 .
- ↑ ستيربا، ديفيد. "أنظمة الملفات الموثقة باستخدام HMAC(SHA256)" . Lore.Kernel.org . تم الاطلاع عليه بتاريخ 25 أبريل 2020 .
- ↑ "كيفية التعافي من أخطاء BTRFS | الدعم | SUSE" . Suse.com . تم الاطلاع عليه بتاريخ 28 يناير 2023 .
- ^ "استعادة - btrfs Wiki" . btrfs.wiki.kernel.org .
- ↑ "btrfs-restore(8) - صفحة دليل لينكس" . man7.org . تم الاطلاع عليه بتاريخ 28 يناير 2023 .
- ↑ "الأسئلة الشائعة حول المشكلة - btrfs Wiki" . kernel.org . 31 يوليو 2013 . تم الاسترجاع 16 يناير 2014 .
- ↑ "kernel/git/torvalds/linux.git: Documentation: filesystems: add new btrfs mount options (Linux kernel source tree)" . kernel.org . 21 نوفمبر 2013. تم الاطلاع عليه في 6 فبراير 2014 .
- ^ "خيارات التثبيت - btrfs Wiki" . Btrfs.ReadTheDocs.io . 12 نوفمبر 2013 . تم الاسترجاع 16 يناير 2014 .
- 1 2 3 أورورا، فاليري (22 يوليو 2009). "تاريخ موجز لنظام الملفات btrfs" . LWN.net . تم الاطلاع عليه في 5 نوفمبر 2011 .
- ↑ رايزر، هانز (7 ديسمبر 2001). "ردًا على: فهرس دليل Ext2: ورقة بحثية حول ALS ومعايير الأداء" . قائمة بريدية لمطوري ReiserFS . تم الاطلاع عليه بتاريخ 28 أغسطس 2009 .
- ↑ ماسون، كريس. "Acp" . صفحة ويب شخصية لشركة أوراكل . مؤرشفة من الأصل في 16 مايو 2021.
- ↑ "تقييد الروابط الصلبة" . KernelTrap.org . 8 أغسطس 2010. تم الاطلاع عليه في 14 نوفمبر 2011 .
- ↑ فاشيه، مارك (9 أكتوبر 2012). "btrfs: مراجع inode الموسعة" . تم الاسترجاع في 7 نوفمبر 2012 .
{{cite web}}: CS1 maint: deprecated archiveal service ( link ) - ↑ تورفالدز، لينوس (10 أكتوبر 2012). "سحب تحديث btrfs من كريس ماسون" . git.kernel.org . تم الاطلاع عليه في 7 نوفمبر 2012 .
{{cite web}}: CS1 maint: deprecated archiveal service ( link ) - ↑ لارابيل، مايكل (24 ديسمبر 2010). "معايير أداء خيار ذاكرة التخزين المؤقت لمساحة Btrfs" . فورونيكس . تم الاطلاع عليه في 16 نوفمبر 2012 .
- ↑ "الأسئلة الشائعة - ويكي btrfs: ما هي دالة التحقق من المجموع التي يستخدمها نظام ملفات Btrfs؟" . مشروع btrfs . تم الاطلاع عليه بتاريخ 22 نوفمبر 2020 .
- 1 2 بيرمان، مارغريت؛ غريمر، لينز (أغسطس 2012). "كيف أستخدم الإمكانيات المتقدمة لنظام الملفات Btrfs" . تم الاطلاع عليه في 20 سبتمبر 2013 .
- ↑ سالتر، جيم (15 يناير 2014). "Bitrot و Atomic COWs: نظرة على أنظمة الملفات "الجيل التالي"" . آرس تكنيكا . تم الاطلاع عليه بتاريخ 15 يناير 2014 .
- ↑ كويكيرتس، ويم (28 سبتمبر 2011). "تنظيف نظام ملفات Btrfs - إصلاح التلفيات باستخدام النسخ المتطابقة من فضلك!" . أوراكل . تم الاسترجاع في 20 سبتمبر 2013 .
- ↑ "مسرد المصطلحات" . ويكي Btrfs . مؤرشف من الأصل في 31 يوليو 2021. تم الاطلاع عليه في 31 يوليو 2021 .
- ↑ "Manpage/mkfs.btrfs" . ويكي Btrfs . الملفات الشخصية . تم الاطلاع عليه بتاريخ 31 يوليو 2021 .
- ↑ ماسون، كريس؛ روديه، أوهاد؛ باسيك، جوزيف (9 يوليو 2012). "BTRFS: نظام ملفات لينكس ذو الشجرة B" (ملف PDF) . أبحاث IBM . مؤرشف من الأصل (ملف PDF) في 23 أبريل 2014.
- ↑ ماسون، كريس (30 أبريل 2008). "دعم الأجهزة المتعددة" . ويكي Btrfs . مؤرشف من الأصل في 20 يوليو 2011. تم الاطلاع عليه في 5 نوفمبر 2011 .
- ↑ بارتيل، شون (20 أبريل 2010). "رد: استعادة قسم BTRFS" . linux-btrfs (قائمة بريدية).
- ↑ لارابيل، مايكل (17 سبتمبر 2017). "أوراكل تدعم الآن نظام الملفات Btrfs RAID5/6 على نواة نظامها المؤسسي غير القابل للكسر" . Phoronix.com . تاريخ الاسترجاع: 26 أكتوبر 2025 .
- ↑ "SUSE تؤكد دعمها لنظام الملفات Btrfs" . LWN.net .
- ↑ "ملاحظات إصدار SUSE Linux Enterprise Server 12" . SUSE.com . تم الاطلاع عليه بتاريخ 28 فبراير 2021 .
- ↑ "الورقة البيضاء لمحطة السحابة" (ملف PDF) . Synology.com . Synology . صفحة 11. مؤرشفة من الأصل (ملف PDF) بتاريخ 11 نوفمبر 2020.
بدءًا من DSM 6.0، يمكن تهيئة وحدات تخزين البيانات بنظام Btrfs.
- ^ كافالكا ، دافيد (21 أكتوبر 2025). "الإعلان عن دعم Btrfs في نظام AlmaLinux OS 10.1" . ألما لينكس .org . تم الاسترجاع في 26 أكتوبر 2025 .
- ↑ "ملاحظات إصدار ADM" . asustor.com . 5 مارس 2026. تم الاطلاع عليه بتاريخ 11 أبريل 2026 .
- ↑ "TFSS (لقطة نظام ملفات TerraMaster)" . terra-master.com . 11 أبريل 2026. تم الاطلاع عليه بتاريخ 12 أبريل 2026 .
- ↑ "تم إيقاف دعم نظام الملفات Btrfs في RHEL" . News.YCombinator.com .
- ↑ "يبدو أن شركة ريد هات تتخلى عن آمالها في نظام Btrfs - فورونيكس" . Phoronix.com .
- ياغر، أندرياس (15 فبراير 2005). "دعم الملفات الكبيرة في لينكس" . users.suse.com . مؤرشف من الأصل في 23 يوليو 2015. تم الاطلاع عليه في 12 أغسطس 2015 .
- "مساعدة في تهيئة نواة لينكس لـ CONFIG_LBD في الإصدار 2.6.29 على معالجات x86" . kernel.xc.net . مؤرشف من الأصل بتاريخ 6 سبتمبر 2015. تم الاطلاع عليه بتاريخ 12 أغسطس 2015 .
روابط خارجية
- الموقع الرسمي

- لا أصدق أن هذا زبدة! جولة في نظام ملفات btrfs على يوتيوب - عرض تقديمي في مؤتمر قدمه آفي ميلر، مهندس أوراكل
- نظام الملفات Btrfs: العمل مع أجهزة متعددة – LWN.net ، ديسمبر 2013، بقلم جوناثان كوربيت
- منشورات مارك حول نظام ملفات Btrfs في لينكس – رؤى تفصيلية حول ميزات Btrfs المختلفة
- نظرة عامة على نظام الملفات Btrfs ، مؤتمر لينكس كون 2014، بقلم مارك ميرلين
- برنامج تشغيل WinBtrfs Btrfs لنظام التشغيل Windows
- أنظمة ضغط الملفات
- أنظمة ملفات القرص
- أنظمة الملفات التي يدعمها نواة لينكس
- البرامج المتعلقة بنظام ملفات لينكس
