تحميل مخزن الكائن الثنائي كبير الحجم باستخدام بروتوكول 3.0 لنظام ملفات الشبكة (NFS)

توفر هذه المقالة إرشادات حول كيفية تحميل حاوية في Azure Blob Storage من جهاز Azure ظاهري (VM) يستند إلى Linux أو نظام Linux يعمل محلياً باستخدام بروتوكول 3.0 لنظام ملفات الشبكة (NFS). لمعرفة المزيد حول دعم بروتوكول NFS 3.0 في مخزن البيانات الثنائية الكبيرة، راجع دعم بروتوكول 3.0 لنظام ملفات الشبكة (NFS) لـ Azure Blob Storage.

الخطوة 1: إنشاء شبكة Azure ظاهرية

يجب تضمين حساب التخزين الخاص بك داخل شبكة ظاهرية. تمكّن الشبكة الظاهرية العملاء من الاتصال بأمان بحساب التخزين الخاص بك. لمعرفة المزيد حول شبكة Azure الظاهرية، وكيفية إنشاء شبكة ظاهرية، راجع وثائق الشبكة الظاهرية.

إشعار

يمكن للعملاء في نفس الشبكة الظاهرية تحميل حاويات في حسابك. يمكنك أيضاً تحميل حاوية من عميل يعمل في شبكة محلية، ولكن سيتعين عليك أولاً توصيل شبكتك المحلية بشبكتك الظاهرية. راجع اتصالات الشبكة المدعومة.

الخطوة 2: تكوين أمان الشبكة

حالياً، الطريقة الوحيدة لتأمين البيانات في حساب التخزين الخاص بك هي باستخدام شبكة ظاهرية وإعدادات أمان الشبكة الأخرى. راجع توصيات أمان الشبكة لتخزين Blob.

لا يمكن استخدام أي أدوات أخرى تستخدم لتأمين البيانات، بما في ذلك تخويل مفتاح الحساب وأمان Microsoft Entra وقوائم التحكم في الوصول (ACLs) لتخويل طلب NFS 3.0. في الواقع، إذا قمت بإضافة إدخال لمستخدم أو مجموعة مسماة إلى قائمة التحكم في الوصول إلى كائن ثنائي كبير الحجم أو دليل، يصبح هذا الملف غير قابل للوصول على العميل للمستخدمين غير الجذر. سيتعين عليك إزالة هذا الإدخال لاستعادة الوصول إلى المستخدمين غير الجذر على العميل.

هام

يستخدم بروتوكول NFS 3.0 المنفذين 111 و2048. إذا كنت تتصل من شبكة محلية، فتأكد من أن العميل يسمح بالاتصال الصادر من خلال هذه المنافذ. إذا منحت حق الوصول إلى شبكات ظاهرية معينة، فتأكد من أن أي مجموعات أمان شبكة مرتبطة بهذه الشبكات الظاهرية لا تحتوي على قواعد أمان تمنع الاتصال الوارد من خلال تلك المنافذ.

الخطوة 3: إنشاء حساب تخزين وتكوينه

لتحميل حاوية باستخدام NFS 3.0، يجب إنشاء حساب تخزين. لا يمكنك تمكين الحسابات الحالية.

بروتوكول NFS 3.0 مدعوم لحسابات التخزين v2 القياسية للأغراض العامة ولحسابات تخزين الكائن الثنائي كبير الحجم ذات الكتلة المتميزة. للمزيد من المعلومات عن حسابات التخزين، راجع نظرة عامة على حساب التخزين.

لتكوين الحساب، اختر القيم التالية:

الإعدادات أداء فائق أداء قياسي
الموقع جميع المناطق المتوفرة جميع المناطق المتوفرة
الأداء متميز قياسي
نوع الحساب BlockBlobStorage V2 للأغراض العامة
النسخ المتماثل التخزين المتكرر محلياً (LRS)، التخزين المتكرر في المنطقة (ZRS) التخزين المتكرر محلياً (LRS)، التخزين المتكرر في المنطقة (ZRS)
أسلوب الاتصال نقطة النهاية العامة (الشبكات المحددة) أو نقطة النهاية الخاصة نقطة النهاية العامة (الشبكات المحددة) أو نقطة النهاية الخاصة
مساحة الاسم الهرمية مُمَكّن مُمَكّن
NFS V3 مُمَكّن مُمَكّن

يمكنك قبول القيم الافتراضية لجميع الإعدادات الأخرى.

الخطوة رقم 4: إنشاء حاوية

قم بإنشاء حاوية في حساب التخزين الخاص بك باستخدام أي من هذه الأدوات أو مجموعات SDK:

الأدوات SDK
مدخل Microsoft Azure NET.
AzCopy Java
بوويرشيل Python
Azure CLI JavaScript
REST

إشعار

بشكل افتراضي، يكون خيار"root squash" لحاوية جديدة هو "No Root Squash". ولكن يمكنك تغيير ذلك إلى "Root Squash" أو "All Squash". للحصول على معلومات حول خيارات "squash" هذه، راجع وثائق نظام التشغيل.

تعرض الصورة التالية خيارات "squash" كما تظهر في مدخل Microsoft Azure.

لقطة شاشة تعرض خيارات squash في مدخل Microsoft Azure.

الخطوة 5: تثبيت حزمة AZNFS Mount Helper

تساعد حزمة AZNFS Mount Helper عملاء Linux NFS على الوصول بشكل موثوق إلى مشاركات Azure Blob NFS حتى عندما يتغير عنوان IP لنقطة النهاية. تقوم هذه الحزمة بتشغيل مهمة خلفية تسمى aznfswatchdog التي تراقب التغييرات على عنوان IP لنقطة النهاية للمشاركات المثبتة. إذا تم الكشف عن تغيير، تقوم مهمة الخلفية هذه بتحديث قواعد ترجمة عنوان الشبكة الوجهة (DNAT). لمعرفة المزيد، راجع AZNFS Mount Helper.

  1. حدد ما إذا كانت حزمة AZNFS Mount Helper مثبتة على العميل الخاص بك.

    systemctl is-active --quiet aznfswatchdog && echo -e "\nAZNFS mounthelper is installed! \n"
    

    إذا تم تثبيت الحزمة، فستظهر الرسالة AZNFS mounthelper is installed! .

  2. إذا لم يتم تثبيت الحزمة بعد، فاستخدم الأمر التالي لتثبيتها.

    wget -O - -q https://github.com/Azure/AZNFS-mount/releases/latest/download/aznfs_install.sh | bash
    

    إشعار

    يتم دعم AZNFS على توزيعات Linux التالية:

    • Ubuntu (18.04 LTS، 20.04 LTS، 22.04 LTS)
    • RedHat7, RedHat8, RedHat9
    • Rocky8, Rocky9
    • SUSE (SLES 15)

الخطوة 6: تحميل الحاوية

إنشاء دليل على نظام Linux الخاص بك ثم تحميل الحاوية في حساب التخزين.

  1. على نظام Linux الخاص بك، أنشئ دليلاً:

    mkdir -p /nfsdata
    
  2. قم بتركيب الحاوية باستخدام أحد الأساليب التالية. في الأسلوبين، استبدل العنصر النائبة <storage-account-name> باسم حساب التخزين الخاص بك، واستبدل <container-name> باسم الحاوية الخاصة بك.

    • لتحميل المشاركة تلقائياً عند إعادة التشغيل:

      1. أنشئ إدخالاً في الملف /etc/fstab بإضافة السطر التالي:

        <storage-account-name>.blob.core.windows.net:/<storage-account-name>/<container-name>  /nfsdata    aznfs defaults,sec=sys,vers=3,nolock,proto=tcp,nofail,_netdev    0 0
        
      2. قم بتشغيل الأمر التالي لمعالجة إدخالات /etc/fstab على الفور ومحاولة تحميل المسار السابق:

        mount /nfsdata
        
    • بالنسبة إلى التحميل المؤقت الذي لا يستمر عبر عمليات إعادة التشغيل، قم بتشغيل الأمر التالي:

      mount -t aznfs -o sec=sys,vers=3,nolock,proto=tcp <storage-account-name>.blob.core.windows.net:/<storage-account-name>/<container-name>  /nfsdata
      

      تلميح

      باستخدام -t aznfs خيار التحميل، تأكد من أن عميل NFS يظل دائما متصلا بشكل صحيح بنقطة نهاية التخزين حتى إذا تغيرت نقطة النهاية IP بعد التحميل. قد تصبح مشاركات NFS التي يتم تحميلها باستخدام -t nfs خيار التحميل غير متصلة بنقطة نهاية التخزين إذا تغير عنوان IP لنقطة النهاية هذه.

      تتوفر معلمات اختيارية أخرى مع أمر التحميل. تؤثر هذه المعلمات بشكل أساسي على سلوك العميل. sys هي القيمة الوحيدة التي يدعمها sec الخيار حاليا.

      هام

      nconnect يعمل خيار التحميل فقط على العملاء الذين لديهم دعم Azure nconnect. سيؤدي استخدام الخيار على nconnect عميل غير مدعوم إلى تقليل معدل النقل ويؤدي إلى انتهاء مهلة الأوامر أو العمل بشكل غير صحيح. لمعرفة المزيد حول كيفية التأكد من أن عميلك لديه دعم Azure nconnect، راجع زيادة عدد اتصالات TCP.

حل الأخطاء الشائعة

خطأ السبب/الحل
Access denied by server while mounting تأكد من أن عميلك يعمل داخل شبكة فرعية مدعومة. راجع مواقع الشبكة المدعومة.
No such file or directory تأكد من كتابة أمر التحميل ومعلماته بدلاً من النسخ واللصق مباشرة في المحطة الطرفية. إذا نسخت وألصقت أي جزء من هذا الأمر في المحطة الطرفية من تطبيق آخر، فقد تتسبب الأحرف المخفية في المعلومات المُلصقة في ظهور هذا الخطأ. قد يظهر هذا الخطأ أيضاً إذا لم يتم تمكين الحساب لـ NFS 3.0.
Permission denied الوضع الافتراضي لحاوية NFS 3.0 المُنشأة حديثاً هو 0750. لا يمكن للمستخدمين غير الجذر الوصول إلى وحدة التخزين. إذا كان الوصول من المستخدمين غير الجذر مطلوباً، فيجب على المستخدمين الجذر تغيير الوضع إلى 0755. عينة الأمر: sudo chmod 0755 /nfsdata
EINVAL ("Invalid argument") يمكن أن يظهر هذا الخطأ عند محاولة عميل القيام بما يلي:
  • اكتب إلى كائن ثنائي كبير الحجم مُنشأ من نقطة نهاية كائن ثنائي كبير الحجم.
  • حذف كائن ثنائي كبير الحجم يحتوي على لقطة أو موجود في حاوية تحتوي على نهج WORM نشط (اكتب مرة واحدة، اقرأ الكثير).
  • EROFS ("Read-only file system") يمكن أن يظهر هذا الخطأ عند محاولة عميل القيام بما يلي:
  • اكتب إلى كائن ثنائي كبير الحجم أو احذف كائناً ثنائياً كبير الحجم بعقد إيجار نشط.
  • اكتب إلى كائن ثنائي كبير الحجم أو احذف كائناً ثنائياً كبير الحجم في حاوية بنهج WORM نشط.
  • NFS3ERR_IO/EIO ("Input/output error") يمكن أن يظهر هذا الخطأ عندما يحاول عميل قراءة أو كتابة أو تعيين سمات على كائنات ثنائية كبيرة الحجم مُخزنة في طبقة تخزين الأرشيف.
    خطأ OperationNotSupportedOnSymLink يمكن إرجاع هذا الخطأ أثناء عملية الكتابة عبر Blob Storage أو Azure Data Lake Storage API. لا يسمح باستخدام واجهات برمجة التطبيقات هذه لكتابة أو حذف الارتباطات الرمزية التي تم إنشاؤها باستخدام NFS 3.0. تأكد من استخدام نقطة نهاية NFS 3.0 للعمل مع الارتباطات الرمزية.
    mount: /nfsdata: bad option; قم بتثبيت برنامج مساعد NFS باستخدام sudo apt install nfs-common.
    Connection Timed Out تأكد من أن العميل يسمح بالاتصال الصادر من خلال المنفذين 111 و2048. يستخدم بروتوكول NFS 3.0 هذه المنافذ. تأكد من تحميل حساب التخزين باستخدام نقطة نهاية خدمة Blob وليس نقطة نهاية Data Lake Storage.

    القيود واستكشاف الأخطاء وإصلاحها ل AZNFS Mount Helper

    راجع AZNFS Mount Helper.

    (راجع أيضًا )