قم بتركيب نظام ملفات افتراضي على مجموعة الدُفعات
يدعم Azure Batch تركيب التخزين السحابي أو نظام ملفات خارجي على عقد حساب Windows أو Linux في تجمعات الدفعات. عندما تنضم عقدة حساب إلى التجمع، يتم تحميل نظام الملفات الظاهرية ويعمل كمحرك أقراص محلي على تلك العقدة. توضح هذه المقالة كيفية تحميل نظام ملفات ظاهري على مجموعة من عقد الحوسبة باستخدام مكتبة إدارة الدفعات ل .NET.
إن تركيب نظام الملفات إلى التجمع يجعل الوصول إلى البيانات أسهل وأكثر كفاءة من طلب المهام للحصول على بياناتها الخاصة من مجموعة بيانات مشتركة كبيرة. ضع في اعتبارك سيناريو تحتاج فيه مهام متعددة إلى الوصول إلى مجموعة شائعة من البيانات، مثل عرض فيلم. تعرض كل مهمة إطارا واحدا أو أكثر في وقت واحد من ملفات المشهد. من خلال تحميل محرك أقراص يحتوي على ملفات المشهد، يكون من الأسهل على كل عقدة حساب الوصول إلى البيانات المشتركة.
يمكنك أيضا اختيار نظام الملفات الأساسي لتلبية متطلبات الأداء، والإدخال/الإخراج في الثانية (IOPS). يمكنك تغيير حجم نظام الملفات بشكل مستقل استنادا إلى عدد عقد الحوسبة التي تصل إلى البيانات بشكل متزامن.
على سبيل المثال، يمكنك استخدام ذاكرة التخزين المؤقت الموزعة في الذاكرة Avere vFXT لدعم عمليات العرض الكبيرة على نطاق الفيلم مع الآلاف من عقد العرض المتزامنة التي تصل إلى بيانات المصدر المحلية. أو، بالنسبة للبيانات الموجودة بالفعل في تخزين blob المستند إلى السحابة، يمكنك استخدام BlobFuse لتحميل البيانات كنظام ملفات محلي. توفر Azure Files سير عمل مشابها لسير عمل BlobFuse وتتوفر على كل من Windows وLinux.
التكوينات المدعومة
يمكنك تحميل الأنواع التالية من أنظمة الملفات:
- ملفات Azure
- تخزين Azure Blob
- نظام ملفات الشبكة (NFS)، بما في ذلك ذاكرة التخزين المؤقت Avere vFXT
- نظام الملفات Common Internet File System (CIFS)
يدعم Batch أنواع نظام الملفات الظاهرية التالية لوكلاء العقد التي يتم إنتاجها للناشر والعرض الخاص بها.
نوع نظام التشغيل | مشاركة ملفات Azure | حاوية Azure Blob | تحميل NFS | جبل CIFS |
---|---|---|---|---|
Linux | ✔️ | ✔️ | ✔️ | ✔️ |
Windows | ✔️ | ❌ | ❌ | ❌ |
إشعار
تركيب نظام ملفات ظاهري غير مدعوم على تجمعات الدفعات التي تم إنشاؤها قبل 8 أغسطس 2019.
متطلبات الشبكات
عند استخدام تحميلات الملفات الظاهرية مع تجمعات الدفعات في شبكة ظاهرية، ضع المتطلبات التالية في الاعتبار، وتأكد من عدم حظر حركة المرور المطلوبة. لمزيد من المعلومات، راجع تجمعات الدفعات في شبكة ظاهرية.
تتطلب مشاركات Azure Files فتح منفذ TCP 445 لنسبة
storage
استخدام الشبكة من وإلى علامة الخدمة. لمزيد من المعلومات، راجع استخدام مشاركة ملف Azure مع Windows.تتطلب حاويات Azure Blob فتح منفذ TCP 443 لنسبة
storage
استخدام الشبكة من وإلى علامة الخدمة. يجب أن يكون للأجهزة الظاهرية (VMs) حق الوصول إلىhttps://packages.microsoft.com
لتنزيلblobfuse
الحزم وgpg
. اعتمادا على التكوين الخاص بك، قد تحتاج إلى الوصول إلى عناوين URL الأخرى.يتطلب نظام ملفات الشبكة (NFS) الوصول إلى المنفذ 2049 بشكل افتراضي. قد يكون للتكوين متطلبات أخرى. يجب أن يكون لدى الأجهزة الظاهرية حق الوصول إلى مدير الحزم المناسب لتنزيل
nfs-common
حزم (ل Debian أو Ubuntu). قد يختلف عنوان URL استنادا إلى إصدار نظام التشغيل الخاص بك. اعتمادا على التكوين الخاص بك، قد تحتاج أيضا إلى الوصول إلى عناوين URL الأخرى.قد يتطلب تحميل Azure Files Blob أو Azure Files عبر NFS المزيد من متطلبات الشبكة. على سبيل المثال، قد تحتاج عقد الحوسبة الخاصة بك إلى استخدام نفس الشبكة الفرعية للشبكة الظاهرية مثل حساب التخزين.
يتطلب نظام ملفات الإنترنت الشائع (CIFS) الوصول إلى منفذ TCP 445. يجب أن يكون لدى الأجهزة الظاهرية حق الوصول إلى مدير الحزمة المناسب لتنزيل الحزمة
cifs-utils
. قد يختلف عنوان URL استنادا إلى إصدار نظام التشغيل الخاص بك.
تركيب التكوين والتنفيذ
إن تركيب نظام ملفات افتراضي على التجمع يجعل نظام الملفات متاحًا لكل عقدة حسابية في التجمع. يحدث تكوين نظام الملفات عندما تنضم عقدة حسابية إلى تجمع، أو تعيد تشغيلها، أو يعاد تصويرها.
لتحميل نظام ملفات على تجمع، يمكنك إنشاء كائن MountConfiguration الذي يطابق نظام الملفات الظاهرية: AzureBlobFileSystemConfiguration
أو AzureFileShareConfiguration
NfsMountConfiguration
.CifsMountConfiguration
تحتاج جميع كائنات تكوين التحميل إلى المعلمات الأساسية التالية. تحتوي بعض تكوينات التحميل على معلمات محددة لنظام الملفات المعين، والتي تظهر أمثلة التعليمات البرمجية بمزيد من التفصيل.
اسم الحساب أو مصدر حساب التخزين.
مسار التحميل النسبي أو المصدر، موقع نظام الملفات لتحميله على عقدة الحساب، بالنسبة إلى الدليل القياسي \fsmounts الذي يمكن الوصول إليه عبر
AZ_BATCH_NODE_MOUNTS_DIR
.يختلف موقع الدليل \fsmounts الدقيق اعتمادا على نظام تشغيل العقدة. على سبيل المثال، الموقع على عقدة Ubuntu يعين إلى mnt\batch\tasks\fsmounts.
خيارات التحميل أو خيارات BlobFuse التي تصف معلمات معينة لتحميل نظام ملفات.
عند إنشاء التجمع والعنصر MountConfiguration
، يمكنك تعيين الكائن إلى الخاصية MountConfigurationList
. يحدث التحميل لنظام الملفات عند انضمام عقدة إلى التجمع أو إعادة التشغيل أو إعادة تصورها.
ينفذ عامل الدُفعات التثبيت بشكل مختلف على نظامي التشغيل Windows وLinux.
في Linux، يقوم Batch بتثبيت الحزمة
cifs-utils
. بعد ذلك، يصدر Batch الأمر mount.في نظام التشغيل Windows، فإن Batch يستخدم
cmdkey
لإضافة بيانات اعتماد حساب Batch الخاص بك. بعد ذلك، يصدر Batch أمر التحميل من خلالnet use
. على سبيل المثال:net use S: \\<storage-account-name>.file.core.windows.net\<fileshare> /u:AZURE\<storage-account-name> <storage-account-key>
يؤدي تحميل نظام الملفات إلى إنشاء متغير AZ_BATCH_NODE_MOUNTS_DIR
بيئة ، والذي يشير إلى موقع نظام الملفات المحملة وملفات السجل. يمكنك استخدام ملفات السجل لاستكشاف الأخطاء وإصلاحها وتصحيح الأخطاء.
تحميل مشاركة ملفات Azure مع PowerShell
يمكنك استخدام Azure PowerShell لتحميل مشاركة ملفات Azure على مجموعة Windows أو Linux Batch. يرشدك الإجراء التالي خلال تكوين وتركيب نظام ملفات مشاركة ملف Azure على تجمع Batch.
هام
الحد الأقصى لعدد أنظمة الملفات المركبة على التجمع هو 10. للحصول على التفاصيل والحدود الأخرى، راجع الحصص النسبية وحدود خدمة الدفعات.
المتطلبات الأساسية
- حساب Azure مع اشتراك نشط.
- تم تثبيت Azure PowerShell ، أو استخدم Azure Cloud Shell وحدد PowerShell للواجهة.
- حساب Batch موجود مع حساب Azure Storage مرتبط يحتوي على مشاركة ملف.
سجل الدخول إلى اشتراك Azure الخاص بك، واستبدل العنصر النائب بمعرف اشتراكك.
Connect-AzAccount -Subscription "<subscription-ID>"
احصل على سياق حساب الدُفعات الخاص بك.
<batch-account-name>
استبدل العنصر النائب باسم حساب Batch الخاص بك.$context = Get-AzBatchAccount -AccountName <batch-account-name>
قم بإنشاء تجمع Batch بالإعدادات التالية.
<storage-account-name>
<storage-account-key>
استبدل العناصر النائبة و و<file-share-name>
بالقيم من حساب التخزين المرتبط بحساب Batch الخاص بك. استبدل<pool-name>
العنصر النائب بالاسم الذي تريده للتجمع.ينشئ البرنامج النصي التالي تجمعا مع مركز بيانات Windows Server 2016 واحد، Standard_D2_V2 حجم العقدة، ثم يقوم بتحميل مشاركة ملف Azure إلى محرك أقراص S للعقدة.
$fileShareConfig = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSAzureFileShareConfiguration" -ArgumentList @("<storage-account-name>", "https://<storage-account-name>.file.core.windows.net/batchfileshare1", "S", "<storage-account-key>") $mountConfig = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSMountConfiguration" -ArgumentList @($fileShareConfig) $imageReference = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSImageReference" -ArgumentList @("WindowsServer", "MicrosoftWindowsServer", "2016-Datacenter", "latest") $configuration = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSVirtualMachineConfiguration" -ArgumentList @($imageReference, "batch.node.windows amd64") New-AzBatchPool -Id "<pool-name>" -VirtualMachineSize "STANDARD_D2_V2" -VirtualMachineConfiguration $configuration -TargetDedicatedComputeNodes 1 -MountConfiguration @($mountConfig) -BatchContext $context
اتصل بالعقدة وتحقق من صحة ملف الإخراج.
الوصول إلى الملفات المثبتة
يمكن لمهام Azure Batch الوصول إلى الملفات المثبتة باستخدام المسار المباشر لمحرك الأقراص، على سبيل المثال:
cmd /c "more S:\folder1\out.txt & timeout /t 90 > NULL"
يمنح عامل Azure Batch الوصول فقط لمهام Azure Batch. إذا كنت تستخدم بروتوكول سطح المكتب البعيد (RDP) للاتصال بالعقدة، فلن يكون لحساب المستخدم الخاص بك حق الوصول التلقائي إلى محرك الأقراص المحمل. عند الاتصال بالعقدة عبر RDP، يجب إضافة بيانات اعتماد لحساب التخزين للوصول إلى محرك الأقراص S مباشرة.
استخدم cmdkey
لإضافة بيانات الاعتماد. استبدل العناصر النائبة <storage-account-name>
و <storage-account-key
> بمعلوماتك الخاصة.
cmdkey /add:"<storage-account-name>.file.core.windows.net" /user:"Azure\<storage-account-name>" /pass:"<storage-account-key>"
استكشاف مشكلات التحميل وإصلاحها
إذا فشل تكوين التحميل، تفشل عقدة الحساب ويتم تعيين حالة العقدة إلى غير قابلة للاستخدام. لتشخيص فشل تكوين التحميل، افحص الخاصية ComputeNodeError للحصول على تفاصيل حول الخطأ.
للحصول على ملفات السجل لتصحيح الأخطاء، يمكنك استخدام واجهة برمجة تطبيقات OutputFiles لتحميل ملفات *.log . تحتوي ملفات *.log على معلومات حول تحميل نظام الملفات في AZ_BATCH_NODE_MOUNTS_DIR
الموقع. تحتوي ملفات سجل التحميل على التنسيق: <type-mountDirOrDrive>><.log لكل عملية تحميل. على سبيل المثال، يحتوي تحميل CIFS في دليل تحميل يسمى اختبار على ملف سجل تحميل يسمى: cifs-test.log.
التحقيق في أخطاء التحميل
يمكنك RDP أو SSH إلى العقدة للتحقق من ملفات السجل المتعلقة بتركيبات نظام الملفات. رسالة الخطأ المثال التالية ممكنة عند محاولة تحميل مشاركة ملف Azure إلى عقدة Batch:
Mount Configuration Error | An error was encountered while configuring specified mount(s)
Message: System error (out of memory, cannot fork, no more loop devices)
MountConfigurationPath: S
إذا تلقيت هذا الخطأ، RDP أو SSH إلى العقدة للتحقق من ملفات السجل ذات الصلة. ينفذ عامل Batch التحميل بشكل مختلف على Windows وLinux لمشاركات ملفات Azure. في Linux، يقوم Batch بتثبيت الحزمةcifs-utils
. بعد ذلك، يصدر Batch الأمر mount. في نظام التشغيل Windows، فإن Batch يستخدم cmdkey
لإضافة بيانات اعتماد حساب Batch الخاص بك. بعد ذلك، يصدر Batch أمر التحميل من خلالnet use
. على سبيل المثال:
net use S: \\<storage-account-name>.file.core.windows.net\<fileshare> /u:AZURE\<storage-account-name> <storage-account-key>
الاتصال بالعقدة عبر RDP.
افتح ملف السجل fshare-S.log، في D:\batch\tasks\fsmounts.
راجع رسائل الخطأ، على سبيل المثال:
CMDKEY: Credential added successfully. System error 86 has occurred. The specified network password is not correct.
استكشاف المشكلة وإصلاحها باستخدام مستكشف أخطاء مشاركات ملف Azure ومصلحها.
إذا لم تتمكن من استخدام RDP أو SSH للتحقق من ملفات السجل على العقدة، يمكنك تحميل السجلات إلى حساب تخزين Azure الخاص بك. يمكنك استخدام هذا الأسلوب لكل من سجلات Windows وLinux.
في مدخل Microsoft Azure، ابحث عن حساب Batch الذي يحتوي على مجموعتك وحدده.
في صفحة حساب Batch، حدد Pools من جزء التنقل الأيمن.
في صفحة Pools ، حدد اسم التجمع.
في صفحة التجمع، حدد Nodes من شريط التنقل الأيمن.
في صفحة Nodes ، حدد اسم العقدة.
في صفحة العقدة، حدد Upload batch logs.
في جزء Upload batch logs ، حدد Pick storage container.
في صفحة Storage accounts ، حدد حساب تخزين.
في صفحة Containers ، حدد حاوية أو أنشئها لتحميل الملفات إليها، وحدد Select.
حدد بدء التحميل.
عند اكتمال التحميل، قم بتنزيل الملفات وافتح agent-debug.log.
راجع رسائل الخطأ، على سبيل المثال:
..20210322T113107.448Z.00000000-0000-0000-0000-000000000000.ERROR.agent.mount.filesystems.basefilesystem.basefilesystem.py.run_cmd_persist_output_async.59.2912.MainThread.3580.Mount command failed with exit code: 2, output: CMDKEY: Credential added successfully. System error 86 has occurred. The specified network password is not correct.
استكشاف المشكلة وإصلاحها باستخدام مستكشف أخطاء مشاركات ملف Azure ومصلحها.
تحميل مشاركة ملف يدويا مع PowerShell
إذا لم تتمكن من تشخيص أخطاء التحميل أو إصلاحها، يمكنك استخدام PowerShell لتحميل مشاركة الملف يدويا بدلا من ذلك.
قم بإنشاء تجمع دون تكوين تركيب. على سبيل المثال:
$imageReference = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSImageReference" -ArgumentList @("WindowsServer", "MicrosoftWindowsServer", "2016-Datacenter", "latest") $configuration = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSVirtualMachineConfiguration" -ArgumentList @($imageReference, "batch.node.windows amd64") New-AzBatchPool -Id "<pool-name>" -VirtualMachineSize "STANDARD_D2_V2" -VirtualMachineConfiguration $configuration -TargetDedicatedComputeNodes 1 -BatchContext $Context
انتظر حتى تكون العقدة في حالة الخمول.
في مدخل Microsoft Azure، ابحث عن حساب التخزين الذي يحتوي على مشاركة الملف وحدده.
في قائمة صفحة حساب التخزين، حدد مشاركات الملفات من شريط التنقل الأيمن.
في صفحة مشاركات الملفات، حدد مشاركة الملف الذي تريد تحميله.
في صفحة مشاركة الملف، حدد اتصال.
في جزء Connect، حدد علامة التبويب Windows.
بالنسبة إلى Drive letter، أدخل محرك الأقراص الذي تريد استخدامه. الإعداد الافتراضي هو Z.
بالنسبة إلى Authentication method، حدد الطريقة التي تريدها للاتصال بمشاركة الملف.
حدد إظهار البرنامج النصي، وانسخ البرنامج النصي PowerShell لتحميل مشاركة الملف.
الاتصال بالعقدة عبر RDP.
قم بتشغيل الأمر الذي نسخته لتحميل مشاركة الملف.
لاحظ أي رسائل خطأ في الإخراج. استخدم هذه المعلومات لاستكشاف أي مشكلات متعلقة بالشبكة وإصلاحها.
مثال على تكوينات التحميل
توضح تكوينات مثال التعليمات البرمجية التالية تركيب أنظمة مشاركة الملفات المختلفة إلى مجموعة من عقد الحوسبة.
مشاركة ملفات Azure
Azure Files هو عرض نظام الملفات السحابي Azure القياسي. يقوم التكوين التالي بتحميل مشاركة ملفات Azure المسماة <file-share-name>
إلى محرك الأقراص S . للحصول على معلومات حول المعلمات في المثال، راجع تحميل مشاركة ملف SMB Azure على Windows أو إنشاء مشاركة ملف NFS Azure وتثبيته على جهاز Linux الظاهري باستخدام مدخل Microsoft Azure.
new PoolAddParameter
{
Id = poolId,
MountConfiguration = new[]
{
new MountConfiguration
{
AzureFileShareConfiguration = new AzureFileShareConfiguration
{
AccountName = "<storage-account-name>",
AzureFileUrl = "https://<storage-account-name>.file.core.windows.net/<file-share-name>",
AccountKey = "<storage-account-key>",
RelativeMountPath = "S",
MountOptions = "-o vers=3.0,dir_mode=0777,file_mode=0777,sec=ntlmssp"
},
}
}
}
حاوية Azure Blob
خيار آخر هو استخدام تخزين Azure Blob عبر BlobFuse. يتطلب تركيب نظام ملفات كائن ثنائي كبير الحجم إما مفتاح حساب أو مفتاح توقيع وصول مشترك (SAS) أو هوية مدارة مع الوصول إلى حساب التخزين الخاص بك.
للحصول على معلومات حول الحصول على هذه المفاتيح أو الهوية، راجع المقالات التالية:
منح وصول محدود إلى موارد Azure Storage باستخدام توقيعات الوصول المشترك (SAS)
تكوين الهويات المدارة في تجمعات الدفعات
تلميح
إذا كنت تستخدم هوية مدارة، فتأكد من تعيين الهوية إلى التجمع بحيث تكون متاحة على الجهاز الظاهري الذي يقوم بالتركيب. يجب أن يكون للهوية أيضا دور Storage Blob Data Contributor .
يقوم التكوين التالي بتحميل نظام ملفات كائن ثنائي كبير الحجم مع خيارات BlobFuse. لأغراض التوضيح، يظهر AccountKey
المثال ، SasKey
و IdentityReference
، ولكن يمكنك في الواقع تحديد واحد فقط من هذه الأساليب.
new PoolAddParameter
{
Id = poolId,
MountConfiguration = new[]
{
new MountConfiguration
{
AzureBlobFileSystemConfiguration = new AzureBlobFileSystemConfiguration
{
AccountName = "<storage-account-name>",
ContainerName = "<container-name>",
// Use only one of the following three lines:
AccountKey = "<storage-account-key>",
SasKey = "<sas-key>",
IdentityReference = new ComputeNodeIdentityReference("/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>"),
RelativeMountPath = "<relative-mount-path>",
BlobfuseOptions = "-o attr_timeout=240 -o entry_timeout=240 -o negative_timeout=120 "
},
}
}
}
للحصول على الوصول الافتراضي إلى الدليل المحمل BlobFuse، قم بتشغيل المهمة كمسؤول. يقوم BlobFuse بتحميل الدليل في مساحة المستخدم، وعند إنشاء التجمع يقوم بتحميل الدليل كجذر. في Linux، تكون جميع مهام المسؤول جذرا. تصف الصفحة المرجعية FUSE جميع خيارات الوحدة النمطية FUSE.
لمزيد من المعلومات والتلميحات حول استخدام BlobFuse، راجع المراجع التالية:
- مشروع Blobfuse2
- الأسئلة المتداولة حول استكشاف أخطاء Blobfuse وإصلاحها
- مشكلات GitHub في مستودع azure-storage-fuse
NFS
يمكنك تحميل مشاركات NFS إلى عقد التجمع للسماح ل Batch بالوصول إلى أنظمة الملفات التقليدية. يمكن أن يكون الإعداد خادم NFS واحد تم نشره في السحابة أو خادم NFS محلي يتم الوصول إليه عبر شبكة ظاهرية. تدعم تركيبات NFS Avere vFXT، وهي ذاكرة تخزين مؤقت موزعة في الذاكرة لمهام الحوسبة عالية الأداء (HPC) كثيفة البيانات. تدعم عمليات تحميل NFS أيضا واجهات أخرى متوافقة مع NFS القياسية، مثل NFS ل Azure Blob وNFS لملفات Azure.
يوضح المثال التالي تكوينا لتحميل نظام ملفات NFS:
new PoolAddParameter
{
Id = poolId,
MountConfiguration = new[]
{
new MountConfiguration
{
NfsMountConfiguration = new NFSMountConfiguration
{
Source = "<source>",
RelativeMountPath = "<relative-mount-path>",
MountOptions = "options ver=3.0"
},
}
}
}
CIFS
يعد تركيب CIFS على عقد التجمع طريقة أخرى لتوفير الوصول إلى أنظمة الملفات التقليدية. CIFS هو بروتوكول لمشاركة الملفات يوفر آلية مفتوحة ومتعددة الأنظمة لطلب ملفات وخدمات خادم الشبكة. يستند CIFS إلى الإصدار المحسن من بروتوكول SMB لمشاركة ملفات الإنترنت والإنترانت.
يوضح المثال التالي تكوينا لتحميل ملف CIFS.
new PoolAddParameter
{
Id = poolId,
MountConfiguration = new[]
{
new MountConfiguration
{
CifsMountConfiguration = new CIFSMountConfiguration
{
Username = "<storage-account-name>",
RelativeMountPath = "<relative-mount-path>",
Source = "<source>",
Password = "<storage-account-key>",
MountOptions = "-o vers=3.0,dir_mode=0777,file_mode=0777,serverino,domain=<domain-name>"
},
}
}
}
إشعار
هل تبحث عن مثال باستخدام PowerShell بدلا من C#؟ يمكنك العثور على مثال رائع آخر هنا: تحميل ملف Azure إلى تجمع Azure Batch.