ما هو BlobFuse؟ - BlobFuse2
BlobFuse هو برنامج تشغيل نظام ملفات ظاهري لتخزين Azure Blob. استخدم BlobFuse للوصول إلى بيانات كائن ثنائي كبير الحجم لكتلة Azure الموجودة من خلال نظام ملفات Linux. لا يتم دعم كائن ثنائيكبير الحجم للصفحة.
حول مشروع BlobFuse2 مفتوح المصدر
BlobFuse2 هو مشروع مصدر مفتوح يستخدم مكتبة مصدر مفتوح libfuse (fuse3) للتواصل مع الوحدة النمطية Linux FUSE kernel. يقوم BlobFuse2 بتنفيذ عمليات نظام الملفات باستخدام واجهات برمجة تطبيقات Azure Storage REST.
مشروع مصدر مفتوح BlobFuse2 موجود على GitHub:
الترخيص
يتم ترخيص مشروع BlobFuse2 بموجب ترخيص MIT.
الميزات
توجد قائمة كاملة بميزات BlobFuse2 في BlobFuse2 README. هذه بعض المهام الرئيسية التي يمكنك تنفيذها باستخدام BlobFuse2:
- قم بتحميل حاوية Azure Blob Storage أو نظام ملفات Azure Data Lake Storage على Linux. (يدعم BlobFuse2 حسابات التخزين مع تكوين مساحات أسماء مسطحة أو مساحة اسم هرمية.)
- استخدم عمليات نظام الملفات الأساسية مثل
mkdir
وopendir
وrmdir
readdir
وopen
وread
وcreate
وwrite
unlink
close
truncate
stat
.rename
- استخدم التخزين المؤقت للملفات المحلية لتحسين أوقات الوصول اللاحقة.
- الحصول على رؤى حول أنشطة التحميل واستخدام الموارد باستخدام BlobFuse2 مؤشر قوة العمل.
تتضمن الميزات الرئيسية الأخرى في BlobFuse2 ما يلي:
- الدفق لدعم قراءة الملفات الكبيرة وكتابتها
- التنزيلات والتحميلات المتوازية لتحسين وقت الوصول للملفات الكبيرة
- تحميلات متعددة إلى نفس الحاوية لأحمال العمل للقراءة فقط
هام
نظرا لمشكلات تناسق البيانات المعروفة عند استخدام الإصدارات القديمة من Blobfuse2 في الدفق مع block-cache
الوضع، يوصى بشدة بترقية جميع عمليات تثبيت Blobfuse2 إلى الإصدار 2.3.2 أو أعلى. لمزيد من المعلومات، راجع this.
تحسينات BlobFuse2 من BlobFuse v1
يحتوي BlobFuse2 على المزيد من دعم الميزات والأداء المحسن في سيناريوهات مستخدم متعددة من BlobFuse v1. للحصول على قائمة واسعة من التحسينات، راجع BlobFuse2 README. فيما يلي ملخص للتحسينات في BlobFuse2 من BlobFuse v1:
- التخزين المؤقت المحسن
- مزيد من دعم الإدارة من خلال أوامر Azure CLI الجديدة
- المزيد من دعم التسجيل
- إضافة دفق الكتابة للملفات الكبيرة (في السابق، كان البث للقراءة فقط مدعوما)
- مؤشر قوة العمل BlobFuse2 الجديدة لمساعدتك في الحصول على رؤى حول أنشطة التحميل واستخدام الموارد
- خيارات التوافق والترقية لمستخدمي BlobFuse v1 الحاليين
- التحقق من الإصدار ومطالبة الترقية
- دعم تشفير ملف التكوين
راجع قائمة تحسينات أداء BlobFuse2 من BlobFuse v1.
لمستخدمي BlobFuse v1
التحسينات التي يوفرها BlobFuse2 هي أسباب مقنعة للترقية والترحيل إلى BlobFuse2. إذا لم تكن جاهزا للترحيل، يمكنك استخدام BlobFuse2 لتحميل حاوية كائن ثنائي كبير الحجم باستخدام نفس خيارات التكوين ومعلمات Azure CLI التي تستخدمها مع BlobFuse v1.
يوفر دليل ترحيل BlobFuse2 جميع التفاصيل التي تحتاجها للتوافق وترحيل أحمال العمل الحالية.
يدعم
يتم دعم BlobFuse2 من قبل Microsoft إذا تم استخدامه ضمن الحدود المحددة. إذا واجهت مشكلة، فبلغ عنها على GitHub.
القيود
لا يضمن BlobFuse2 توافق POSIX بنسبة 100٪ لأن BlobFuse2 يترجم ببساطة الطلبات إلى واجهات برمجة تطبيقات Blob REST. على سبيل المثال، عمليات إعادة التسمية هي عمليات ذرية في POSIX ولكن ليس في BlobFuse2.
راجع القائمة الكاملة للاختلافات بين نظام ملفات أصلي وBlobFuse2.
الاختلافات بين نظام ملفات Linux وBlobFuse2
في نواح عديدة، يمكنك استخدام التخزين المثبت على BlobFuse2 تماما مثل نظام ملفات Linux الأصلي. نظام الدليل الظاهري هو نفسه ويستخدم شرطة مائلة للأمام (/
) كمحدد. تعمل عمليات نظام الملفات الأساسية مثل mkdir
و opendir
readdir
و rmdir
و read
write
create
open
unlink
truncate
close
stat
و rename
كما هو الحال في نظام ملفات Linux.
يختلف BlobFuse2 عن نظام ملفات Linux ببعض الطرق الرئيسية:
عدد Readdir للارتباطات الثابتة:
لأسباب تتعلق بالأداء، لا يقوم BlobFuse2 بالإبلاغ عن الارتباطات الثابتة داخل الدليل بشكل صحيح. يرجع عدد الارتباطات الثابتة للدلائل الفارغة على أنه 2. يرجع دائما عدد الدلائل غير الفارغة ك 3، بغض النظر عن العدد الفعلي للارتباطات الثابتة.
إعادة تسمية غير ذرية:
لا يدعم Azure Blob Storage عمليات إعادة التسمية الذرية. إعادة تسمية ملف واحد هي في الواقع عمليتان: نسخة، ثم حذف الأصلي. يعيد الدليل تسمية كافة الملفات في الدليل بشكل متكرر ويعيد تسمية كل ملف.
ملفات خاصة:
يدعم BlobFuse2 الدلائل والملفات العادية والارتباطات الرمزية فقط. لا يتم دعم الملفات الخاصة مثل ملفات الجهاز والأنابيب والمآخذ.
mkfifo:
إنشاء Fifo غير مدعوم من قبل BlobFuse2. تؤدي محاولة هذا الإجراء إلى ظهور خطأ "لم يتم تنفيذ الدالة".
chown و chmod:
تدعم حسابات تخزين Data Lake Storage كل أذونات الكائن وقوائم التحكم في الوصول، ولكن لا تدعم الكائنات الثنائية كبيرة الحجم كتلة مساحة الاسم المسطحة (FNS). ونتيجة لذلك، لا يدعم BlobFuse2
chown
وchmod
عمليات لحاويات الكائن الثنائي كبير الحجم للكتلة المحملة. يتم دعم العمليات ل Data Lake Storage.ملفات الجهاز أو الأنابيب:
لا يدعم BlobFuse2 إنشاء ملفات الجهاز أو الأنابيب.
السمات الموسعة (x-attrs):
لا يدعم BlobFuse2 عمليات السمات الموسعة (
x-attrs
).دفق الكتابة:
قد يؤدي الدفق المتزامن لعمليات القراءة والكتابة على بيانات الملفات الكبيرة إلى نتائج غير متوقعة. الكتابة في نفس الوقت إلى نفس الكائن الثنائي كبير الحجم من مؤشرات ترابط مختلفة غير مدعومة.
تكامل البيانات
يلعب التخزين المؤقت للملفات دورا مهما في تكامل البيانات التي تتم قراءتها وكتابتها في تحميل نظام ملفات Blob Storage. نوصي بوضع الدفق للاستخدام مع الملفات الكبيرة، والذي يدعم الدفق لكل من عمليات القراءة والكتابة. يخزن BlobFuse2 كتل تدفق الملفات في الذاكرة مؤقتا. بالنسبة للملفات الأصغر التي لا تتكون من كتل، يتم تخزين الملف بأكمله في الذاكرة. ذاكرة التخزين المؤقت للملفات هي الوضع الثاني. نوصي بذاكرة التخزين المؤقت للملفات لأحمال العمل التي لا تحتوي على ملفات كبيرة، مثل عندما يتم تخزين الملفات على القرص بالكامل.
يدعم BlobFuse2 عمليات القراءة والكتابة. المزامنة المستمرة للبيانات المكتوبة إلى التخزين باستخدام واجهات برمجة التطبيقات الأخرى أو عمليات تحميل أخرى من BlobFuse2 غير مضمونة. لسلامة البيانات، نوصي بأن لا تقوم مصادر متعددة بتعديل نفس الكائن الثنائي كبير الحجم، خاصة في نفس الوقت. إذا حاول تطبيق واحد أو أكثر الكتابة إلى نفس الملف في وقت واحد، فقد تكون النتائج غير متوقعة. اعتمادا على توقيت عمليات الكتابة المتعددة ونضارة ذاكرة التخزين المؤقت لكل عملية، قد تكون النتيجة أن آخر كاتب يفوز ويتم فقدان عمليات الكتابة السابقة، أو بشكل عام أن الملف المحدث ليس في الحالة المقصودة.
التخزين المؤقت للملف على القرص
عندما يكون الملف موضوع عملية كتابة، تستمر البيانات أولا في التخزين المؤقت على قرص محلي. تتم كتابة البيانات إلى Blob Storage فقط بعد إغلاق مقبض الملف. إذا حدثت مشكلة أثناء محاولة الاحتفاظ بالبيانات في Blob Storage، تظهر رسالة خطأ.
الدفق
للبث أثناء عمليات القراءة والكتابة، يتم تخزين كتل البيانات مؤقتا في الذاكرة أثناء قراءتها أو تحديثها. يتم مسح التحديثات إلى Azure Storage عند إغلاق ملف أو عند ملء المخزن المؤقت بكتل قذرة.
يتم دعم قراءة نفس الكائن الثنائي كبير الحجم من مؤشرات ترابط متزامنة متعددة. ومع ذلك، قد تؤدي عمليات الكتابة المتزامنة إلى نتائج غير متوقعة لبيانات الملفات، بما في ذلك فقدان البيانات. يتم دعم إجراء عمليات قراءة متزامنة وعمليات كتابة واحدة، ولكن قد لا تكون البيانات التي تتم قراءتها من بعض مؤشرات الترابط حديثة.
الأذونات
عند تحميل حاوية بالخيارات الافتراضية، تحصل جميع الملفات على 770 إذنا ولا يمكن الوصول إليها إلا من قبل المستخدم الذي يقوم بالتركيب. للسماح لأي مستخدم بالوصول إلى تحميل BlobFuse2، قم بتحميل BlobFuse2 باستخدام --allow-other
الخيار . يمكنك أيضا تكوين هذا الخيار في ملف تكوين YAML.
كما ذكر سابقا، chown
يتم دعم العمليات و chmod
ل Data Lake Storage، ولكن ليس للكائنات الثنائية كبيرة الحجم لكتلة FNS. chmod
يؤدي تشغيل عملية على حاوية كائن ثنائي كبير الحجم كتلة FNS مثبتة إلى إرجاع رسالة نجاح، ولكن العملية لا تنجح في الواقع.
دعم الميزة
يوضح هذا الجدول كيف يتم دعم هذه الميزة في حسابك والتأثير على ذلك الدعم عند تمكين بعض الإمكانات.
نوع حساب التخزين | Blob Storage (الدعم الافتراضي) | Data Lake Storage 1 | نظام ملفات الشبكة (NFS) 3.0 1 | بروتوكول نقل الملفات SSH (SFTP) 1 |
---|---|---|---|---|
معيار الأغراض العامة v2 | ![]() |
![]() |
![]() |
![]() |
Premium كتلة blobs | ![]() |
![]() |
![]() |
![]() |
1 يتطلب Data Lake Storage وبروتوكول NFS 3.0 وSFTP حساب تخزين تم تمكين مساحة اسم هرمية فيه.