بي تي آر إف إس
| المطور(ون) | SUSE ، Meta ، Western Digital ، Oracle Corporation ، Fujitsu ، Fusion-io ، Intel ، The Linux Foundation ، Red Hat ، و Strato AG [1] |
|---|---|
| الاسم الكامل | نظام ملفات B-tree |
| قدَّم | 23 مارس 2009 مع نواة Linux 2.6.29 |
| معرفات القسم | |
| الهياكل | |
| محتويات الدليل | شجرة ب |
| تخصيص الملفات | المدى |
| كتل سيئة | لم يتم تسجيل أي شيء |
| الحدود | |
| الحد الأقصى لحجم الصوت | 16 EiB [3] [أ] |
| الحد الأقصى لحجم الملف | 16 EiB [3] [أ] |
| الحد الأقصى لعدد الملفات | 2 64 [ب] [4] |
| الحد الأقصى لطول اسم الملف | 255 حرفًا من نوع ASCII (أقل بالنسبة لترميزات الأحرف متعددة البايتات مثل Unicode ) |
أحرف اسم الملف المسموح بها | الكل ما عدا '/'و NUL( '\0') |
| سمات | |
| التواريخ المسجلة | الإنشاء (otime)، [5] التعديل (mtime)، تعديل السمة (ctime)، والوصول (atime) |
| نطاق التاريخ | إزاحة int موقعة 64 بت من 1970-01-01T00:00:00Z [6] |
| قرار التاريخ | نانوثانية |
| صفات | POSIX والسمات الممتدة |
أذونات نظام الملفات | أذونات يونكس، قوائم التحكم في الوصول POSIX |
ضغط شفاف | نعم ( zlib ، LZO [7] و (منذ 4.14) ZSTD [8] ) |
تشفير شفاف | مخطط [9] |
| إزالة تكرار البيانات | نعم [10] |
| نسخ عند الكتابة | نعم |
| آخر | |
| أنظمة التشغيل المدعومة | لينكس ، ويندوز ، [11] ReactOS [12] |
| موقع إلكتروني | btrfs.readthedocs.io |
Btrfs (يُنطق "better F S" أو [9] "butter F S" أو [13] [14] "b-tree F S" أو [14] أو BTRFS) هو تنسيق تخزين حاسوبي يجمع بين نظام ملفات يعتمد على مبدأ النسخ عند الكتابة (COW) ومدير وحدة تخزين منطقي (مختلف عن LVM في Linux )، تم تطويره معًا. تم إنشاؤه بواسطة كريس ماسون في عام 2007 [15] للاستخدام في Linux ، ومنذ نوفمبر 2013، تم إعلان تنسيق نظام الملفات الموجود على القرص مستقرًا في نواة Linux . [16]
يهدف Btrfs إلى معالجة نقص التجميع واللقطات ومجموعات الاختبار والامتداد المتكامل متعدد الأجهزة في أنظمة ملفات Linux . [9] صرح ماسون، المؤلف الرئيسي لـ Btrfs، أن هدفه هو "السماح [لـ Linux] بالتوسع للتخزين الذي سيكون متاحًا. لا يتعلق التوسع فقط بمعالجة التخزين ولكنه يعني أيضًا القدرة على إدارته وإدارته بواجهة نظيفة تتيح للأشخاص رؤية ما يتم استخدامه وتجعله أكثر موثوقية". [17]
تاريخ

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


يمكن اعتبار مجلد فرعي Btrfs بمثابة مساحة اسم ملف POSIX منفصلة ، ويمكن تثبيته بشكل منفصل عن طريق تمرير خيارات subvolأو إلى الأداة المساعدة. ويمكن أيضًا الوصول إليه عن طريق تثبيت المجلد الفرعي ذي المستوى الأعلى، وفي هذه الحالة تكون المجلدات الفرعية مرئية ويمكن الوصول إليها كأدلة فرعية. [64]subvolid
يمكن إنشاء مجلدات فرعية في أي مكان ضمن التسلسل الهرمي لنظام الملفات، ويمكن أيضًا تضمينها. تظهر المجلدات الفرعية المتداخلة كأدلة فرعية داخل المجلدات الفرعية الأصلية، على نحو مماثل للطريقة التي يعرض بها المجلد الفرعي من المستوى الأعلى مجلداته الفرعية كأدلة فرعية. لا يمكن حذف مجلد فرعي حتى يتم حذف جميع المجلدات الفرعية الموجودة أسفله في التسلسل الهرمي المتداخل؛ ونتيجة لذلك، لا يمكن حذف المجلدات الفرعية من المستوى الأعلى. [65]
يحتوي أي نظام ملفات Btrfs دائمًا على وحدة تخزين فرعية افتراضية، يتم تعيينها في البداية لتكون وحدة التخزين الفرعية ذات المستوى الأعلى، ويتم تثبيتها افتراضيًا إذا لم يتم تمرير خيار تحديد وحدة تخزين فرعية إلى mount. يمكن تغيير وحدة التخزين الفرعية الافتراضية حسب الحاجة. [65]
إن لقطة Btrfs هي مجلد فرعي يتشارك بياناته (وبياناته الوصفية) مع مجلد فرعي آخر، باستخدام إمكانيات النسخ عند الكتابة في Btrfs، ولا تظهر التعديلات على اللقطة في المجلد الفرعي الأصلي. بمجرد إنشاء لقطة قابلة للكتابة، يمكن التعامل معها كإصدار بديل لنظام الملفات الأصلي. على سبيل المثال، للرجوع إلى لقطة، يجب إلغاء تحميل المجلد الفرعي الأصلي المعدل ويجب تحميل اللقطة في مكانه. في هذه المرحلة، يمكن أيضًا حذف المجلد الفرعي الأصلي. [64]
تعني طبيعة النسخ عند الكتابة (CoW) في Btrfs أن اللقطات يتم إنشاؤها بسرعة، بينما تستهلك في البداية مساحة صغيرة جدًا على القرص. نظرًا لأن اللقطة هي مجلد فرعي، فإن إنشاء لقطات متداخلة أمر ممكن أيضًا. إن أخذ لقطات لمجلد فرعي ليس عملية متكررة؛ وبالتالي، إذا تم إنشاء لقطة لمجلد فرعي، يتم تعيين كل مجلد فرعي أو لقطة يحتوي عليها المجلد الفرعي بالفعل إلى دليل فارغ بنفس الاسم داخل اللقطة. [64] [65]
لا يمكن التقاط لقطات من دليل، حيث يمكن فقط للمجلدات الفرعية الحصول على لقطات. ومع ذلك، هناك حل بديل يتضمن إعادة نشر الروابط عبر المجلدات الفرعية: يتم إنشاء مجلد فرعي جديد، يحتوي على روابط إعادة نشر عبر المجلدات الفرعية لمحتوى الدليل المستهدف. بعد توفر ذلك، يمكن إنشاء لقطة من هذا المجلد الجديد. [57]
تختلف وحدة التخزين الفرعية في Btrfs تمامًا عن وحدة التخزين المنطقية التقليدية في Logical Volume Manager (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 مع kernel 4.13. [69]
أجهزة التثبيت/البذور
عند إنشاء Btrfs جديد، يمكن استخدام Btrfs الحالي كنظام ملفات "بذرة" للقراءة فقط. [70] سيعمل نظام الملفات الجديد بعد ذلك كطبقة نسخ عند الكتابة على البذرة، كشكل من أشكال التثبيت الموحد . يمكن فصل البذرة لاحقًا عن Btrfs، وعند هذه النقطة سيقوم المعيد التوازن ببساطة بنسخ أي بيانات بذرة لا يزال يشير إليها نظام الملفات الجديد قبل الفصل. اقترح ماسون أن هذا قد يكون مفيدًا لمثبت Live CD ، والذي قد يقوم بالتمهيد من بذرة Btrfs للقراءة فقط على قرص ضوئي، وإعادة توازن نفسه إلى القسم المستهدف على قرص التثبيت في الخلفية بينما يستمر المستخدم في العمل، ثم إخراج القرص لإكمال التثبيت دون إعادة التشغيل. [71]
التشفير
في مقابلته عام 2009، ذكر ماسون أن دعم التشفير كان مخططًا لنظام الملفات Btrfs. [9] وفي الوقت نفسه، فإن الحل البديل لدمج التشفير مع نظام الملفات Btrfs هو استخدام آلية تشفير القرص الكامل مثل dm-crypt / LUKS على الأجهزة الأساسية وإنشاء نظام ملفات Btrfs فوق تلك الطبقة.
اعتبارًا من عام 2020، [تحديث]كان المطورون يعملون على إضافة تجزئة رئيسية مثل HMAC ( SHA256 ). [72]
التحقق والاسترداد
تعتمد أنظمة يونكس تقليديًا على برامج " fsck " للتحقق من أنظمة الملفات وإصلاحها. يتم تنفيذ هذه الوظيفة عبر btrfs checkالبرنامج. منذ الإصدار 4.0، تعتبر هذه الوظيفة مستقرة نسبيًا. ومع ذلك، اعتبارًا من ديسمبر 2022، تقترح وثائق btrfs --repairاستخدام خيارها فقط إذا نصحك "مطور أو مستخدم متمرس". [73] اعتبارًا من أغسطس 2022، توصي وثائق SLE باستخدام Live CD وإجراء نسخة احتياطية واستخدام خيار الإصلاح فقط كملاذ أخير. [74]
توجد أداة أخرى تسمى btrfs-restore، والتي يمكن استخدامها لاستعادة الملفات من نظام ملفات غير قابل للتركيب، دون تعديل نظام الملفات المكسور نفسه (أي بطريقة غير مدمرة). [75] [76]
في الاستخدام العادي، يكون نظام الملفات Btrfs قادرًا على الشفاء ذاتيًا في الغالب ويمكنه التعافي من الأشجار الجذرية المكسورة في وقت التثبيت، وذلك بفضل إجراء عمليات مسح دورية للبيانات إلى وحدة تخزين دائمة، افتراضيًا كل 30 ثانية. وبالتالي، فإن الأخطاء المعزولة ستتسبب في فقدان ما يصل إلى 30 ثانية من تغييرات نظام الملفات في التثبيت التالي. [77] يمكن تغيير هذه الفترة من خلال تحديد قيمة مرغوبة (بالثواني) مع commitخيار التثبيت. [78] [79]
تصميم
أشار اقتراح أوهاد روديه الأصلي في مؤتمر USENIX 2007 إلى أن أشجار B+ ، والتي تُستخدم على نطاق واسع كهياكل بيانات على القرص لقواعد البيانات، لا يمكنها أن تسمح بكفاءة بلقطات تعتمد على النسخ عند الكتابة لأن عقدها الورقية كانت مرتبطة ببعضها البعض: إذا تم نسخ ورقة عند الكتابة، فيجب أن يتم نسخ إخوتها ووالديها أيضًا، وكذلك إخوتها ووالديها وهكذا حتى يتم نسخ الشجرة بالكامل. واقترح بدلاً من ذلك شجرة B معدلة (ليس لها ارتباط ورقي)، مع عدد مرجعي مرتبط بكل عقدة شجرة ولكن يتم تخزينها في بنية خريطة مجانية مخصصة وبعض الاسترخاءات لخوارزميات موازنة الشجرة لجعلها صديقة للنسخ عند الكتابة. ستكون النتيجة بنية بيانات مناسبة لمخزن كائنات عالي الأداء يمكنه إجراء لقطات نسخ عند الكتابة، مع الحفاظ على التزامن الجيد . [18]
في وقت لاحق من ذلك العام، بدأ ماسون في العمل في شركة أوراكل على نظام ملفات قادر على التقاط الصور والذي من شأنه أن يستخدم بنية البيانات هذه بشكل حصري تقريبًا - ليس فقط للبيانات الوصفية وبيانات الملفات، ولكن أيضًا بشكل متكرر لتتبع تخصيص المساحة للأشجار نفسها. سمح هذا بتوجيه جميع عمليات الانتقال والتعديلات عبر مسار كود واحد، حيث كان من الضروري تنفيذ ميزات مثل النسخ عند الكتابة والتحقق من المجموع والنسخ مرة واحدة فقط للاستفادة من نظام الملفات بالكامل. [80]
تم تصميم Btrfs على هيئة عدة طبقات من هذه الأشجار، وكلها تستخدم نفس تنفيذ شجرة B. تخزن الأشجار عناصر عامة مرتبة حسب مفتاح مكون من 136 بت. تعد البتات الـ 64 الأكثر أهمية من المفتاح هي معرف كائن فريد . البتات الثمانية الوسطى هي حقل نوع العنصر: يتم تضمين استخدامها في الكود كمرشح عنصر في عمليات البحث في الشجرة. يمكن أن تحتوي الكائنات على عناصر متعددة من أنواع متعددة. يتم استخدام البتات الـ 64 المتبقية (الأقل أهمية) بطرق خاصة بالنوع. لذلك، تنتهي العناصر لنفس الكائن بجوار بعضها البعض في الشجرة، مجمعة حسب النوع. من خلال اختيار قيم مفتاح معينة، يمكن للكائنات وضع عناصر من نفس النوع في ترتيب معين. [80] [4]
إن عقد الشجرة الداخلية عبارة عن قوائم مسطحة من أزواج المفاتيح والمؤشرات، حيث يكون المؤشر هو رقم الكتلة المنطقية لعقدة فرعية. تحتوي عقد الأوراق على مفاتيح العناصر معبأة في مقدمة العقدة وبيانات العناصر معبأة في النهاية، مع نمو الاثنين تجاه بعضهما البعض مع امتلاء الورقة. [80]
شجرة نظام الملفات
داخل كل دليل، تظهر إدخالات الدليل كعناصر دليل ، حيث تكون البتات الأقل أهمية لقيم المفتاح عبارة عن تجزئة CRC32C لاسم الملف الخاص بها. بياناتها هي مفتاح موقع ، أو مفتاح عنصر العقدة التي يشير إليها. وبالتالي يمكن لعناصر الدليل معًا أن تعمل كمؤشر لعمليات البحث من المسار إلى العقدة، ولكن لا يتم استخدامها للتكرار لأنها مرتبة حسب التجزئة الخاصة بها، مما يؤدي إلى تبديلها عشوائيًا بشكل فعال . وهذا يعني أن تطبيقات المستخدم التي تتكرر وتفتح الملفات في دليل كبير ستولد بالتالي المزيد من عمليات البحث على القرص بين الملفات غير المتجاورة - وهو استنزاف ملحوظ للأداء في أنظمة الملفات الأخرى ذات الدلائل المرتبة بالتجزئة مثل ReiserFS ، [81] و ext3 (مع تمكين فهارس Htree [82] ) وext4، وكلها لها أسماء ملفات مجزأة TEA . لتجنب ذلك، يحتوي كل إدخال دليل على عنصر فهرس دليل ، حيث يتم تعيين قيمة مفتاح العنصر على عداد لكل دليل يزداد مع كل إدخال دليل جديد. يؤدي التكرار عبر عناصر الفهرس هذه إلى إرجاع الإدخالات بنفس الترتيب تقريبًا كما هو مخزّن على القرص.
تحتوي الملفات التي تحتوي على روابط صلبة في أدلة متعددة على عناصر مرجعية متعددة، عنصر لكل دليل رئيسي. تقوم الملفات التي تحتوي على روابط صلبة متعددة في نفس الدليل بتجميع جميع أسماء ملفات الروابط في نفس عنصر المرجع. كان هذا عيبًا في التصميم يحد من عدد الروابط الصلبة في نفس الدليل إلى أي عدد يمكن أن يتناسب مع كتلة شجرة واحدة. (على حجم الكتلة الافتراضي 4 كيلوبايت، وطول اسم ملف متوسط 8 بايت ورأس لكل اسم ملف 4 بايت، سيكون هذا أقل من 350.) لوحظ أن التطبيقات التي استخدمت بشكل مكثف روابط صلبة متعددة في نفس الدليل، مثل git و GNUS و GMame و BackupPC، فشلت عند هذا الحد. [83] تمت إزالة الحد في النهاية [84] (واعتبارًا من أكتوبر 2012 تم دمجه [85] في انتظار الإصدار في Linux 3.7) من خلال تقديم عناصر مرجعية ممتدة لاحتواء أسماء ملفات الروابط الصلبة التي لا تتناسب بخلاف ذلك.
المدى
يحتاج هذا القسم إلى مصادر إضافية للتحقق . ( يناير 2017 ) |
يتم الاحتفاظ ببيانات الملف خارج الشجرة في الامتدادات ، وهي عبارة عن تشغيلات متجاورة لكتل بيانات القرص. يبلغ حجم كتل الامتداد افتراضيًا 4 كيلوبايت، ولا تحتوي على رؤوس وتحتوي فقط على بيانات ملف (ربما مضغوطة). في الامتدادات المضغوطة، لا يتم ضغط الكتل الفردية بشكل منفصل؛ بل يمتد مجرى الضغط عبر الامتداد بالكامل.
تحتوي الملفات على عناصر بيانات المدى لتتبع المدى الذي يحتوي على محتوياتها. القيمة الأساسية للعنصر هي إزاحة البايت الأولية للمدى. وهذا يجعل عمليات البحث فعالة في الملفات الكبيرة ذات المدى المتعدد، لأن المدى الصحيح لأي إزاحة ملف معينة يمكن حسابها من خلال بحث شجرة واحد فقط.
تتشارك اللقطات الفورية والملفات المستنسخة في الامتدادات. وعندما يتم استبدال جزء صغير من امتداد كبير، فقد يؤدي النسخ عند الكتابة الناتج إلى إنشاء ثلاثة امتدادات جديدة: امتداد صغير يحتوي على البيانات التي تم استبدالها، واثنان كبيران ببيانات غير معدلة على جانبي الاستبدال. لتجنب الاضطرار إلى إعادة كتابة البيانات غير المعدلة، قد ينشئ النسخ عند الكتابة بدلاً من ذلك امتدادات نهاية الكتاب ، أو امتدادات تكون ببساطة شرائح من الامتدادات الموجودة. تسمح عناصر بيانات الامتداد بذلك من خلال تضمين إزاحة في الامتداد الذي تتبعه: العناصر الخاصة بامتدادات النهاية هي تلك التي تحتوي على إزاحات غير صفرية. [4]
شجرة تخصيص المدى
يحتاج هذا القسم إلى مصادر إضافية للتحقق . ( يناير 2017 ) |
تعمل شجرة تخصيص المدى كخريطة تخصيص لنظام الملفات. وعلى عكس الأشجار الأخرى، لا تحتوي العناصر في هذه الشجرة على معرفات كائنات. فهي تمثل مناطق من الفضاء: تحتوي قيمها الأساسية على الإزاحات الأولية وأطوال المناطق التي تمثلها.
يقسم نظام الملفات مساحته المخصصة إلى مجموعات كتل وهي مناطق تخصيص متغيرة الحجم تتناوب بين تفضيل امتدادات البيانات الوصفية (عقد الشجرة) وامتدادات البيانات (محتويات الملف). النسبة الافتراضية لمجموعات كتل البيانات إلى مجموعات كتل البيانات الوصفية هي 1:2. وهي تهدف إلى استخدام مفاهيم مُخصص كتلة أورلوف لتخصيص الملفات ذات الصلة معًا ومقاومة التجزئة عن طريق ترك مساحة خالية بين المجموعات. (ومع ذلك، فإن مجموعات كتل Ext3 لها مواقع ثابتة يتم حسابها من حجم نظام الملفات، في حين أن تلك الموجودة في Btrfs ديناميكية ويتم إنشاؤها حسب الحاجة.) ترتبط كل مجموعة كتل بعنصر مجموعة كتل . تتضمن عناصر العقدة في شجرة نظام الملفات مرجعًا لمجموعة الكتل الحالية الخاصة بها. [4]
تحتوي عناصر المدى على مرجع خلفي لعقدة الشجرة أو الملف الذي يشغل هذا المدى. قد يكون هناك مراجع خلفية متعددة إذا كان المدى مشتركًا بين اللقطات. إذا كان هناك عدد كبير جدًا من المراجع الخلفية بحيث لا يمكن احتواؤه في العنصر، فإنها تنتشر في عناصر مرجعية لبيانات المدى الفردية . تحتوي عقد الشجرة، بدورها، على مراجع خلفية للأشجار التي تحتوي عليها. يجعل هذا من الممكن العثور على الامتدادات أو عقد الشجرة الموجودة في أي منطقة من المساحة عن طريق إجراء بحث في نطاق شجرة B على زوج من الإزاحات التي تقوس تلك المنطقة، ثم تتبع المراجع الخلفية. لنقل البيانات، يسمح هذا بعبور صاعد فعال من الكتل المنقولة للعثور بسرعة على جميع المراجع السفلية لتلك الكتل وإصلاحها، دون الحاجة إلى مسح نظام الملفات بالكامل. يسمح هذا بدوره لنظام الملفات بتقليص حجم التخزين ونقله وتجزئةه بكفاءة عبر الإنترنت.
شجرة تخصيص المدى، كما هو الحال مع جميع الأشجار الأخرى في نظام الملفات، هي شجرة نسخ عند الكتابة. وبالتالي، قد تتسبب عمليات الكتابة إلى نظام الملفات في حدوث سلسلة من التغييرات حيث تؤدي عقد الشجرة وبيانات الملف المتغيرة إلى تخصيص مدى جديد، مما يتسبب في تغيير شجرة المدى نفسها. لتجنب إنشاء حلقة تغذية مرتدة ، يمكن تحديث عقد شجرة المدى التي لا تزال في الذاكرة ولكنها لم تُحفظ على القرص بعد في مكانها لتعكس مدى جديد تم نسخه عند الكتابة.
من الناحية النظرية، تجعل شجرة تخصيص المدى خريطة بتات المساحة الحرة التقليدية غير ضرورية لأن شجرة تخصيص المدى تعمل كإصدار شجرة B من شجرة BSP . ولكن من الناحية العملية، يتم استخدام شجرة حمراء وسوداء في الذاكرة من خرائط بتات بحجم الصفحة لتسريع التخصيصات. يتم الاحتفاظ بهذه الخرائط البتات على القرص (بدءًا من Linux 2.6.37، عبر space_cacheخيار التثبيت [86] ) كامتدادات خاصة معفاة من التحقق من المجموع والنسخ عند الكتابة.
شجرة المجموع الاختباري والتنظيف
يتم حساب مجموعات التحقق CRC-32C لكل من البيانات والبيانات الوصفية وتخزينها كعناصر مجموع تحقق في شجرة مجموع تحقق . هناك مساحة لـ 256 بت من مجموعات التحقق الخاصة بالبيانات الوصفية وما يصل إلى عقدة كاملة (حوالي 4 كيلوبايت أو أكثر) لمجموعات التحقق الخاصة بالبيانات. يحتوي Btrfs على أحكام لإضافة خوارزميات مجموع تحقق إضافية في الإصدارات المستقبلية من نظام الملفات. [37] [87]
يوجد عنصر مجموع اختباري واحد لكل تشغيل متجاور للكتل المخصصة، مع مجموعات اختبارية لكل كتلة معبأة من البداية إلى النهاية في بيانات العنصر. إذا كان هناك مجموعات اختبارية أكثر مما يمكن أن تلائم، فإنها تتسرب إلى عنصر مجموع اختباري آخر في ورقة جديدة. إذا اكتشف نظام الملفات عدم تطابق في مجموع الاختبار أثناء قراءة كتلة، فإنه يحاول أولاً الحصول على (أو إنشاء) نسخة جيدة من هذه الكتلة من جهاز آخر - إذا كانت تقنيات النسخ المتطابق الداخلي أو RAID قيد الاستخدام. [88] [89]
يمكن لبرنامج Btrfs بدء فحص عبر الإنترنت لنظام الملفات بالكامل من خلال تشغيل مهمة فحص نظام الملفات التي يتم إجراؤها في الخلفية. تقوم مهمة الفحص بفحص نظام الملفات بالكامل للتأكد من سلامته وتحاول تلقائيًا الإبلاغ عن أي كتل تالفة تجدها على طول الطريق وإصلاحها. [88] [90]
شجرة السجل
يقوم طلب fsync بإرسال البيانات المعدلة على الفور إلى وحدة تخزين مستقرة. يمكن أن تتسبب أحمال العمل الثقيلة التي تتطلب fsync (مثل قاعدة البيانات أو الجهاز الظاهري الذي يعمل بنظام تشغيل fsync بشكل متكرر) في توليد قدر كبير من عمليات الإدخال والإخراج للكتابة الزائدة عن الحاجة من خلال إجبار نظام الملفات على النسخ المتكرر عند الكتابة وتفريغ الأجزاء المعدلة بشكل متكرر من الأشجار إلى وحدة التخزين. لتجنب ذلك، يتم إنشاء شجرة سجل مؤقتة لكل وحدة تخزين فرعية لتسجيل النسخ التي يتم تشغيلها بواسطة fsync عند الكتابة. أشجار السجل مستقلة بذاتها، حيث تتبع نطاقاتها الخاصة وتحتفظ بعناصر المجموع الاختباري الخاصة بها. يتم إعادة تشغيل عناصرها وحذفها عند إرسال الشجرة الكاملة التالية أو (في حالة حدوث تعطل في النظام) عند إعادة التحميل التالية.
أشجار القطع والأجهزة
يحتاج هذا القسم إلى مصادر إضافية للتحقق . ( ديسمبر 2020 ) |
يتم تقسيم أجهزة الكتلة إلى أجزاء مادية بحجم 1 جيجابايت للبيانات و256 ميجابايت للبيانات الوصفية. [91] يمكن عكس الأجزاء المادية عبر أجهزة متعددة أو تجميعها معًا في جزء منطقي واحد . يتم دمج هذه الأجزاء المنطقية في مساحة عنوان منطقية واحدة يستخدمها بقية نظام الملفات.
تتبع شجرة القطع هذا الأمر من خلال تخزين كل جهاز فيها كعنصر جهاز وقطع منطقية كعناصر خريطة قطع ، والتي توفر تعيينًا أماميًا من العناوين المنطقية إلى العناوين المادية من خلال تخزين إزاحاتها في أقل 64 بت أهمية من مفتاحها. يمكن أن تكون عناصر خريطة القطع من عدة أنواع مختلفة:
- أعزب
- 1 قطعة منطقية إلى 1 قطعة مادية
- مضاعف
- 1 قطعة منطقية إلى قطعتين ماديتين على جهاز كتلة واحد
- غارة0
- N قطعة منطقية إلى N ≥ 2 قطعة مادية عبر أجهزة كتلة N ≥ 2
- غارة 1
- 1 قطعة منطقية إلى قطعتين ماديتين عبر 2 من أصل N ≥ 2 جهاز كتلة، [92] على النقيض من RAID 1 التقليدي الذي يحتوي على N قطعة مادية
- غارة 1 سي 3
- 1 قطعة منطقية إلى 3 قطع مادية من أصل N≥3 أجهزة كتلة
- غارة 1 سي 4
- 1 قطعة منطقية إلى 4 قطع مادية من إجمالي N≥4 أجهزة كتلة
- غارة 5
- N (لـ N ≥ 2) من القطع المنطقية إلى N+1 من القطع المادية عبر أجهزة كتلة N+1، مع استخدام قطعة مادية واحدة كتكافؤ
- غارة 6
- N (لـ N ≥ 2) من القطع المنطقية إلى N+2 من القطع المادية عبر أجهزة كتلة N+2، مع استخدام قطعتين ماديتين كتكافؤ
N هو عدد أجهزة الكتلة التي لا تزال بها مساحة خالية عند تخصيص القطعة. إذا لم يكن N كبيرًا بما يكفي للنسخ/التعيين المختار، فإن نظام الملفات يكون فعليًا خارج المساحة.
أشجار النقل
تتطلب عمليات إلغاء التجزئة والتقليص وإعادة التوازن نقل الامتدادات. ومع ذلك، فإن القيام بنسخ بسيط عند الكتابة للامتداد الذي يتم نقله سيؤدي إلى كسر المشاركة بين اللقطات واستهلاك مساحة القرص. للحفاظ على المشاركة، يتم استخدام خوارزمية التحديث والتبديل، مع وجود شجرة نقل خاصة تعمل كمساحة مؤقتة للبيانات الوصفية المتأثرة. يتم نسخ الامتداد المراد نقله أولاً إلى وجهته. ثم، من خلال متابعة المراجع الخلفية لأعلى عبر شجرة نظام الملفات في المجلد الفرعي المتأثر، يتم تحديث البيانات الوصفية التي تشير إلى الامتداد القديم تدريجيًا للإشارة إلى الامتداد الجديد؛ يتم تخزين أي عناصر تم تحديثها حديثًا في شجرة النقل. بمجرد اكتمال التحديث، يتم تبديل العناصر في شجرة النقل مع نظيراتها في المجلد الفرعي المتأثر، ويتم تجاهل شجرة النقل. [93]
سوبربلوك
يتم تخزين كافة أشجار نظام الملفات—بما في ذلك شجرة المقطع نفسها—في مقاطع، مما يؤدي إلى مشكلة تمهيد محتملة عند تحميل نظام الملفات. للتمهيد في عملية تحميل، يتم تخزين قائمة بالعناوين الفعلية للمقاطع التي تنتمي إلى شجرة المقطع والجذر في الكتلة الفائقة . [94]
يتم الاحتفاظ بمرايا Superblock في مواقع ثابتة: [95] 64 KiB في كل جهاز كتلة، مع نسخ إضافية عند 64 MiB و256 GiB و1 PiB. عند تحديث مرآة Superblock، يتم زيادة رقم جيلها . في وقت التثبيت، يتم استخدام النسخة ذات أعلى رقم جيل. يتم تحديث جميع مرايا Superblock بالترادف، باستثناء وضع SSD الذي يتناوب التحديثات بين المرايا لتوفير بعض تسوية التآكل .
الدعم التجاري
مدعوم
- Oracle Linux من الإصدار 7 [96]
- خادم SUSE Linux Enterprise من الإصدار 12 [97] [98]
- Synology DiskStation Manager (DSM) من الإصدار 6.0 [99]
لم يعد مدعوما
- تم تضمين Btrfs كـ "معاينة تقنية" في Red Hat Enterprise Linux 6 و7؛ [24] [33] وتمت إزالته في RHEL 8 في عام 2018. [34] [100] [101]
انظر أيضا
- APFS – نظام ملفات نسخ عند الكتابة لأنظمة macOS وiPadOS وiOS وtvOS وwatchOS
- باكاشيفس
- مقارنة بين أنظمة الملفات
- HAMMER – نظام ملفات DragonFly BSD الذي يستخدم أشجار B، مقترنة بمجموعات اختبارية كإجراء مضاد لفساد البيانات
- قائمة أنظمة الملفات
- ReFS – نظام ملفات النسخ عند الكتابة لنظام التشغيل Windows Server 2012
- زد اف اس
ملحوظات
- ^ ab هذا هو حد حجم القرص الخاص بـ Btrfs. يتم تقليل الحد إلى 8 EiB على أنظمة 64 بت و2 EiB على أنظمة 32 بت بسبب الحدود الداخلية لنواة Linux، ما لم يتم تمكين
CONFIG_LBDخيار تكوين النواة (المتاح منذ سلسلة نواة 2.6.x ) لإزالة حدود النواة هذه. [102] [103] - ^ كل عنصر في Btrfs لديه معرف 64 بت، مما يعني أن أكبر عدد من الملفات التي يمكن لأي شخص أن يمتلكها على نظام ملفات Btrfs هو 2 64 .
مراجع
- ^ "المساهمون في توثيق BTRFS". Btrfs.ReadTheDocs.io . 15 يونيو 2022 . تم الاسترجاع في 5 ديسمبر 2022 .
- ^ "GPT fdisk - ArchWiki".
- ^ "وثائق Suse: دليل إدارة التخزين – دعم الملفات الكبيرة في Linux". SUSE . تم الاسترجاع في 12 أغسطس 2015 .
- ^ abcd Mason, Chris. "Btrfs design". Btrfs wiki . تم الاسترجاع في 8 نوفمبر 2011 .
- ^ كوربيت، جوناثان (26 يوليو 2010). "أوقات إنشاء الملفات". LWN.net . تم الاسترجاع في 15 أغسطس 2015 .
- ^ “تنسيق على القرص – btrfs Wiki”. btrfs.wiki.kernel.org .
- ^ ab "btrfs Wiki". kernel.org . تم الاسترجاع في 19 أبريل 2015 .
- ^ من "Linux_4.14 - Linux Kernel Newbies". kernelnewbies.org .
- ^ abcd McPherson, Amanda (22 يونيو 2009). "محادثة مع كريس ماسون حول BTRfs: نظام الملفات من الجيل التالي لنظام Linux". Linux Foundation . مؤرشف من الأصل في 27 يونيو 2012 . تم الاسترجاع في 7 يناير 2025 .
- ^ abc "Deduplication". Btrfs.ReadTheDocs.io . تم الاسترجاع في 19 أبريل 2015 .
- ^ "Windows Driver on GitHub.com". GitHub . تم الاسترجاع في 10 يناير 2023 .
- ^ "إصدار ReactOS 0.4.1". reactos.org . تم الاسترجاع في 11 أغسطس 2016 .
- ^ "Oracle Linux 7 Q&A with Wim Coekaerts". Oracle . حدث الحدث في الدقيقة 1 دقيقة و15 ثانية. مؤرشف من الأصل في 18 أغسطس 2016 . تم الاسترجاع في 6 فبراير 2016 .
- ^ ab Henson, Valerie (31 January 2008). Chunkfs: Fast File System Check and Repair. Melbourne , Australia. حدث الحدث في 18m 49s . تم الاسترجاع في 5 February 2008 .
يُطلق عليه Butter FS أو B-tree FS، لكن جميع الأطفال الرائعين يقولون Butter FS
- ^ سالتر، جيم (24 سبتمبر 2021). "فحص btrfs، نظام الملفات نصف المكتمل على لينكس إلى الأبد". Ars Technica . تم الاسترجاع في 11 يونيو 2023.
كريس ماسون هو المطور المؤسس لـ btrfs، والذي بدأ العمل عليه في عام 2007 أثناء عمله في Oracle. هذا يقود الكثير من الناس إلى الاعتقاد بأن btrfs هو مشروع Oracle - وهو ليس كذلك. كان المشروع ملكًا لماسون، وليس لصاحب عمله، ويظل مشروعًا مجتمعيًا غير مثقل بالملكية المؤسسية حتى يومنا هذا.
- ^ "تغيير حالة استقرار التزام نواة Linux في fs/btrfs/Kconfig" . تم الاسترجاع في 8 فبراير 2019 .
- ^ Kerner, Sean Michael (30 October 2008). "نظام ملفات أفضل لنظام Linux؟". InternetNews.com . مؤرشف من الأصل في 8 أبريل 2011 . تم الاسترجاع في 27 أغسطس 2020 .
- ^ ab Rodeh, Ohad (2007). B-trees, shadeing, and clones (PDF) . ورشة عمل USENIX Linux Storage & Filesystem.أيضًا ، روديه، أوهاد (2008). "أشجار B، والتظليل، والاستنساخ". معاملات ACM للتخزين . 3 (4): 1– 27. doi :10.1145/1326542.1326544. S2CID 207166167.
- ^ "مطورو نظام الملفات Btrfs الرائدون ينضمون إلى Facebook". phoronix.com . تم الاسترجاع في 19 أبريل 2015 .
- ^ بول، رايان (13 أبريل 2009). "المتحدثون يتأملون نواة Linux Collaboration Summit". Ars Technica . مؤرشف من الأصل في 17 يونيو 2012. تم الاسترجاع في 22 أغسطس 2009 .
- ^ Ts'o, Theodore (1 أغسطس 2008). "Re: reiser4 for 2.6.27-rc1". linux-kernel (قائمة بريدية) . تم الاسترجاع في 31 ديسمبر 2010 .
- ^ “الجدول الزمني للتطوير”. بترفس ويكي . 11 كانون الأول/ديسمبر 2008 مؤرشفة من الأصلي في 20 ديسمبر 2008 . تم الاسترجاع 5 نوفمبر 2011 .
- ^ Wuelfing, Britta (12 يناير 2009). "Kernel 2.6.29: Corbet Says Btrfs Next Generation Filesystem". مجلة لينكس . تم الاسترجاع في 5 نوفمبر 2011 .
- ^ "وثائق Red Hat Enterprise Linux 6: معاينات التكنولوجيا". مؤرشف من الأصل في 28 مايو 2011. تم الاسترجاع في 21 يناير 2011 .
- ^ "Fedora Weekly News Issue 276". 25 مايو 2011.
- ^ "إصدار Debian 6.0 "Squeeze"" (بيان صحفي). Debian . 6 فبراير 2011 . تم استرجاعه في 8 فبراير 2011 .
تمت إضافة الدعم أيضًا لأنظمة الملفات ext4 وBtrfs...
- ^ ab "Linux kernel 3.0, Section 1.1. Btrfs: Automatic defragmentation, scrubbing, performance improvement". kernelnewbies.org . 21 يوليو 2011 . تم الاسترجاع في 5 أبريل 2016 .
- ^ ليمهويس ، ثورستن (21 يونيو 2011). “سجل Kernel: قادم في 3.0 (الجزء 2) – أنظمة الملفات”. ح مفتوح . تم الاسترجاع 8 نوفمبر 2011 .
- ^ فارغيز، سام. "iTWire". ITWire.com . تم الاسترجاع في 19 أبريل 2015 .
- ^ "تم إصدار الإصدار الثاني من نواة Unbreakable Enterprise" . تم الاسترجاع في 8 مايو 2019 .
- ^ "ملاحظات إصدار SLES 11 SP2". 21 أغسطس 2012. تم الاسترجاع في 29 أغسطس 2012 .
- ^ "SUSE Linux Enterprise Server 12 Release Notes". 5 نوفمبر 2015. تم الاسترجاع في 20 يناير 2016 .
- ^ "ملاحظات إصدار Red Hat Enterprise Linux 7.4، الفصل 53: الوظائف القديمة". 1 أغسطس 2017. مؤرشف من الأصل في 8 أغسطس 2017. تم الاسترجاع 15 أغسطس 2017 .
- ^ "اعتبارات في تبني RHEL 8". وثائق المنتج لـ Red Hat Enterprise Linux 8. Red Hat . تم الاسترجاع في 9 مايو 2019 .
- ^ "كيفية اختيار نظام الملفات Red Hat Enterprise Linux الخاص بك". 4 سبتمبر 2020. تم الاسترجاع في 3 يناير 2022 .
- ^ "Btrfs قادم إلى Fedora 33". مجلة فيدورا . 24 أغسطس 2020. تم الاسترجاع في 25 أغسطس 2020 .
- ^ أ ب “Btrfs Wiki: الميزات”. btrfs.wiki.kernel.org . 27 نوفمبر 2013 . تم الاسترجاع 27 نوفمبر 2013 .
- ^ "Btrfs Wiki: Changelog". btrfs.wiki.kernel.org . 29 مايو 2019 . تم الاسترجاع في 27 نوفمبر 2013 .
- ^ "الحالة — توثيق BTRFS". btrfs.readthedocs.io . تم الاسترجاع في 12 يناير 2025 .
- ^ “Manpage btrfs-check”. Btrfs.ReadTheDocs.io .
- ^ "استخدام Btrfs مع أجهزة متعددة". kernel.org . 7 نوفمبر 2013 . تم الاسترجاع في 20 نوفمبر 2013 .
- ^ "Compression". kernel.org . 25 يونيو 2013 . تم الاسترجاع في 1 أبريل 2014 .
- ^ "Btrfs: إضافة دعم لخصائص inode". kernel.org . 28 يناير 2014 . تم الاسترجاع في 1 أبريل 2014 .
- ^ "btrfs: لقطات للقراءة فقط" . تم الاسترجاع في 12 ديسمبر 2011 .
- ^ "وفّر مساحة القرص على لينكس عن طريق استنساخ الملفات على Btrfs وOCFS2" . تم الاسترجاع في 1 أغسطس 2017 .
- ^ "Wiki FAQ: ما هي دالة المجموع الاختباري التي يستخدمها Btrfs؟". Btrfs wiki . تم الاسترجاع في 15 يونيو 2009 .
- ^ "Btrfs يسلط الضوء على 5.5: تجزئات جديدة" . تم الاسترجاع في 29 أغسطس 2020 .
- ^ "إصدار Btrfs progs 4.6" . تم الاسترجاع في 1 أغسطس 2017 .
- ^ ماسون، كريس (12 يناير 2009). "سجل تغييرات Btrfs". مؤرشف من الأصل في 29 فبراير 2012. تم الاسترجاع في 12 فبراير 2012 .
- ^ abc Corbet, Jonathan (11 يوليو 2012). "Btrfs send/receive". LWN.net . تم الاسترجاع في 14 نوفمبر 2012 .
- ^ "Btrfs Wiki: النسخ الاحتياطي التدريجي". 27 مايو 2013. تم الاسترجاع في 27 نوفمبر 2013 .
- ^ أب يانسن ، آرني (2011). "مجموعات الحصص الفرعية لـ Btrfs" (PDF) . ستراتو ايه جي . تم الاسترجاع 14 نوفمبر 2012 .
- ^ "RAID 5/6". Btrfs.ReadTheDocs.io . 16 يوليو 2016 . تم الاسترجاع في 7 يناير 2025 .
- ^ Blaxell, Zygo. "كيفية استخدام btrfs raid5 بنجاح(ish)". lore.kernel.org . تم الاسترجاع في 26 يونيو 2022 .
- ^ Blaxell, Zygo. "Current bugs with operations impact on btrfs raid5". lore.kernel.org . تم الاسترجاع في 26 يونيو 2022 .
- ^ كوربيت، جوناثان (5 مايو 2009). "الجانبان من reflink()". LWN.net . تم الاسترجاع في 17 أكتوبر 2013 .
- ^ "حالات الاستخدام – توثيق btrfs". kernel.org . تم الاسترجاع في 4 نوفمبر 2013 .
- ^ "btrfs: السماح باستنساخ ملف عبر مجلدات فرعية". github.com . تم الاسترجاع في 4 نوفمبر 2013 .
- ^ ab Grimmer, Lenz (31 أغسطس 2011). "توفير مساحة القرص على لينكس عن طريق استنساخ الملفات على Btrfs وOCFS2". oracle.com . مؤرشف من الأصل في 18 أكتوبر 2013 . تم الاسترجاع في 17 أكتوبر 2013 .
- ^ "أسماء مرجعية للروابط الرمزية، وبيانات مرجعية للروابط الصلبة، وبيانات مرجعية للروابط المرجعية". pixelbeat.org . 27 أكتوبر 2010 . تم الاسترجاع في 17 أكتوبر 2013 .
- ^ Meyering, Jim (20 أغسطس 2009). "GNU coreutils NEWS: Noteworthy changes in release 7.5". savannah.gnu.org . تم الاسترجاع في 30 أغسطس 2009 .
- ^ سكريفانو، جوزيبي (1 أغسطس 2009). "cp: قبول خيار --reflink". savannah.gnu.org . تم الاسترجاع في 2 نوفمبر 2009 .
- ^ – دليل مبرمج لينكس – نداءات النظام
- ^ abcd "SysadminGuide – Btrfs documentation". kernel.org . تم الاسترجاع في 31 أكتوبر 2013 .
- ^ abc "5.6 إنشاء مجلدات فرعية ولقطات سريعة [بحاجة لتحديث]". oracle.com . 2013 . تم الاسترجاع في 31 أكتوبر 2013 .
- ^ “مسكتك – btrfs ويكي”. btrfs.wiki.kernel.org .
- ^ ab "5.7 استخدام ميزة الإرسال/الاستقبال". oracle.com . 2013 . تم الاسترجاع في 31 أكتوبر 2013 .
- ^ abcd Mason, Chris (25 يونيو 2015). "التحويل من Ext3 (وثائق Btrfs)". kernel.org . تم الاسترجاع في 22 أبريل 2016 .
- ^ "btrfs-convert(8) — BTRFS Documentation". Btrfs.ReadTheDocs.io . تم الاسترجاع في 16 أكتوبر 2022 .
- ^ "جهاز البذور". مؤرشف من الأصل في 12 يونيو 2017. اطلع عليه بتاريخ 1 أغسطس 2017 .
- ^ ماسون، كريس (5 أبريل 2012). "نظام الملفات Btrfs: الحالة والميزات الجديدة". مؤسسة لينكس . تم الاسترجاع في 16 نوفمبر 2012 .[ رابط ميت دائم ]
- ^ Sterba, David. "authenticated file systems using HMAC(SHA256)". Lore.Kernel.org . تم الاسترجاع في 25 أبريل 2020 .
- ^ “فحص btrfs (8)”. Btrfs.ReadTheDocs.io .
- ^ "كيفية التعافي من أخطاء BTRFS | الدعم | SUSE". www.suse.com . تم الاسترجاع في 28 يناير 2023 .
- ^ “استعادة – btrfs Wiki”. btrfs.wiki.kernel.org .
- ^ "btrfs-restore(8) - صفحة دليل Linux". 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 .
- ^ abc Aurora, Valerie (22 يوليو 2009). "تاريخ مختصر لـ btrfs". LWN.net . تم الاسترجاع في 5 نوفمبر 2011 .
- ^ Reiser, Hans (7 December 2001). "Re: Ext2 directory index: ALS paper and benchmarks". قائمة بريدية لمطوري ReiserFS . تم الاسترجاع في 28 أغسطس 2009 .
- ^ ماسون، كريس. "Acp". صفحة الويب الشخصية لشركة Oracle . مؤرشف من الأصل في 16 مايو 2021. تم الاسترجاع في 5 نوفمبر 2011 .
- ^ "حد الارتباط الثابت". kerneltrap.org . 8 أغسطس 2010 . تم الاسترجاع في 14 نوفمبر 2011 .
- ^ Fasheh, Mark (9 أكتوبر 2012). "btrfs: extended inode refs". مؤرشف من الأصل في 15 أبريل 2013. استرجاع 7 نوفمبر 2012 .
- ^ Torvalds, Linus (10 October 2012). "Pull btrfs update from Chris Mason". git.kernel.org . مؤرشف من الأصل في 15 أبريل 2013 . تم الاسترجاع في 7 نوفمبر 2012 .
- ^ لارابيل، مايكل (24 ديسمبر 2010). "معايير خيار ذاكرة التخزين المؤقت لمساحة Btrfs". Phoronix . تم الاسترجاع في 16 نوفمبر 2012 .
- ^ "الأسئلة الشائعة - ويكيبيديا btrfs: ما هي وظيفة المجموع الاختباري التي يستخدمها Btrfs؟". مشروع btrfs . تم الاسترجاع في 22 نوفمبر 2020 .
- ^ ab Bierman, Margaret; Grimmer, Lenz (August 2012). "كيف أستخدم الإمكانيات المتقدمة لـ Btrfs" . تم الاسترجاع في 20 سبتمبر 2013 .
- ^ سالتر، جيم (15 يناير 2014). "Bitrot and Atomic COWs: Inside "Next-Gen" Filesystems". Ars Technica . تم الاسترجاع في 15 يناير 2014 .
- ^ Coekaerts, Wim (28 سبتمبر 2011). "Btrfs Scrub – Go Fix Corruptions with Mirror Copies Please!". Oracle . تم الاسترجاع في 20 سبتمبر 2013 .
- ^ "Glossary". ويكيبيديا Btrfs . مؤرشف من الأصل في 31 يوليو 2021. استرجاع 31 يوليو 2021 .
- ^ "Manpage/mkfs.btrfs". ويكيبيديا Btrfs . الملفات الشخصية . تم الاسترجاع في 31 يوليو 2021 .
- ^ ماسون، كريس؛ روديه، أوهاد؛ باسيك، جوزيف (9 يوليو 2012). "BTRFS: نظام الملفات B-tree في لينكس" (PDF) . IBM Research . مؤرشف من الأصل (PDF) في 23 أبريل 2014.
- ^ ماسون، كريس (30 أبريل 2008). "دعم الأجهزة المتعددة". ويكيبيديا Btrfs . مؤرشف من الأصل في 20 يوليو 2011. استرجاع 5 نوفمبر 2011 .
- ^ Bartell, Sean (20 أبريل 2010). "Re: استعادة قسم BTRFS". linux-btrfs (قائمة بريدية).
- ^ "Oracle تدعم الآن Btrfs RAID5/6 على نواة المؤسسة غير القابلة للكسر - Phoronix". Phoronix.com .
- ^ "SUSE تؤكد دعمها لنظام Btrfs". LWN.net .
- ^ "ملاحظات إصدار SUSE Linux Enterprise Server 12". SUSE.com . تم الاسترجاع في 28 فبراير 2021 .
- ^ "ورقة عمل Cloud Station" (PDF) . Synology.com . Synology . ص. 11. مؤرشف من الأصل (PDF) في 11 نوفمبر 2020.
بدءًا من DSM 6.0، يمكن تنسيق أحجام البيانات بتنسيق Btrfs
- ^ "تم إيقاف استخدام Btrfs في RHEL". News.YCombinator.com .
- ^ "يبدو أن شركة Red Hat تتخلى عن آمالها في Btrfs - Phoronix". Phoronix.com .
- ^ Jaeger, Andreas (15 فبراير 2005). "دعم الملفات الكبيرة في لينكس". users.suse.com . مؤرشف من الأصل في 23 يوليو 2015 . تم الاسترجاع في 12 أغسطس 2015 .
- ^ "مساعدة تكوين نواة Linux لـ CONFIG_LBD في 2.6.29 على x86". kernel.xc.net . مؤرشف من الأصل في 6 سبتمبر 2015 . تم الاسترجاع في 12 أغسطس 2015 .
روابط خارجية
- الموقع الرسمي
- لا أصدق أن هذا زبدة! جولة في btrfs على YouTube – عرض تقديمي في مؤتمر قدمه أفي ميلر، مهندس في شركة أوراكل
- Btrfs: العمل مع أجهزة متعددة – LWN.net ، ديسمبر 2013، بقلم جوناثان كوربيت
- منشورات مارك عن Linux Btrfs – رؤى تفصيلية حول ميزات Btrfs المختلفة
- نظرة عامة على Btrfs، LinuxCon 2014، بقلم مارك ميرلين
- برنامج تشغيل WinBtrfs Btrfs لنظام التشغيل Windows
