job_container.conf(5) Slurm Configuration File job_container.conf(5)

job_container.conf - فایل پیکربندی Slurm برای افزایه‌های فضای نام (namespace)

فایل job_container.conf یک فایل متنی اسکی (ASCII) است که پارامترهای مورد استفاده توسط افزایه namespace/tmpfs اسلرم (Slurm) را تعریف می‌کند. بر اساس این پارامترها، افزایه فضاهای نام مناسب و ویژه هر کار (job) را ایجاد خواهد کرد.

افزایه namespace/tmpfs یک فضای نام سیستم‌فایل ایجاد می‌کند و یک فضای نام سیستم‌فایل خصوصی (یا اختیاری مشترک) ساخته و فهرستی از پوشه‌ها (به طور پیش‌فرض /tmp و /dev/shm) را درون آن سوار (mount) می‌کند، که به کار نمایی خصوصی از این پوشه‌ها را ارائه می‌دهد. این مسیرها درون مکانی که توسط BasePath در فایل job_container.conf مشخص شده است سوار می‌شوند.

هنگامی که کار پایان می‌یابد، فضای نام پیاده (unmount) شده و تمامی فایل‌های درون آن به طور خودکار حذف می‌شوند.

برای استفاده از این افزایه، باید عبارت PrologFlags=Contain نیز در فایل slurm.conf شما وجود داشته باشد، همان‌طور که نشان داده شده است:

NamespaceType=namespace/tmpfs
PrologFlags=Contain

این فایل همیشه در همان پوشه حاوی slurm.conf قرار خواهد داشت.

اگر از فایل job_container.conf برای تعریف یک فضای نام دردسترس برای گره‌ها استفاده شود، اولین پارامتر در خط باید NodeName باشد. در صورت پیکربندی یک فضای نام بدون مشخص کردن گره‌ها، نخستین پارامتر در خط باید BasePath باشد.

نام پارامترها به حروف بزرگ و کوچک حساس نیستند (case insensitive). هر متنی که پس از کاراکتر «#» در فایل پیکربندی بیاید، تا پایان آن خط به عنوان توضیح (کامنت) در نظر گرفته می‌شود. تغییرات اعمال‌شده در فایل پیکربندی پس از راه‌اندازی مجدد دیمن‌های Slurm اعمال می‌شوند.

پارامترهای زیر در job_container.conf برای کنترل رفتار افزایه namespace/tmpfs تعریف شده‌اند:

مشخص می‌کند که آیا افزایه باید پوشه BasePath را ایجاد کند یا خیر. اگر پوشه پیش از راه‌اندازی slurm از قبل ایجاد نشده است، آن را روی true تنظیم کنید. در صورت تنظیم روی true، پوشه با دسترسی 0755 ایجاد می‌شود. پوشه هنگام خاموش شدن slurm حذف نمی‌شود. اگر روی false تنظیم شود یا مشخص نگردد، افزایه انتظار دارد که پوشه از قبل موجود باشد. این گزینه می‌تواند به صورت سراسری یا خط‌به‌خط استفاده شود. این پارامتر اختیاری است.
مسیر PATH را که افزایه tmpfs باید به عنوان پایه‌ای برای سوار کردن پوشه‌های خصوصی استفاده کند، مشخص می‌کند. این مسیر باید توسط افزایه قابل خواندن و نوشتن باشد. افزایه برای هر کار درون این مسیر یک پوشه می‌سازد که سپس برای سوار کردن استفاده می‌شود. مقدار BasePath در زمان شروع slurmd به صورت «private» سوار می‌شود و تا زمان خاموش شدن سوار باقی می‌ماند. نخستین "%h" درون نام با نام میزبانی که slurmd روی آن در حال اجراست جایگزین می‌شود. نخستین "%n" درون نام با نام گره Slurm که slurmd روی آن در حال اجراست جایگزین می‌شود. برای غیرفعال کردن افزایه tmpfs روی زیرمجموعه‌ای از گره‌ها در صورت وجود تنظیمات سراسری، مقدار PATH را روی «none» قرار دهید.

نکته: مقدار BasePath باید برای هر گره منحصربه‌فرد باشد. اگر BasePath روی یک سیستم‌فایل مشترک قرار دارد، می‌توانید از "%h" یا "%n" برای ایجاد پوشه‌های منحصربه‌فرد برای گره‌ها استفاده کنید.

نکته: پارامتر BasePath نمی‌تواند روی هیچ‌یک از مسیرهای مشخص‌شده توسط Dirs تنظیم شود. استفاده از این پوشه‌ها هنگام تلاش برای سوار کردن و پیاده کردن پوشه‌های خصوصی کار، باعث تداخل خواهد شد.

مسیر کامل یک اسکریپت راه‌اندازی اختیاری را مشخص می‌کند. این اسکریپت پس از ایجاد فضای نام کار اجرا می‌شود. متغیر محیطی SLURM_NS شامل مسیر فضای نام که توسط دستور nsenter قابل استفاده است، در اختیار این اسکریپت قرار داده خواهد شد. این متغیر به اسکریپت اجازه می‌دهد تا به فضای نام تازه ایجاد‌شده بپیوندد و اقدامات راه‌اندازی بیشتری را انجام دهد. این پارامتر اختیاری است.
مدت زمان به ثانیه برای انتظار جهت تکمیل CloneNSScript پیش از آنکه اسکریپت شکست‌خورده تلقی شود. مقدار پیش‌فرض ۱۰ ثانیه است.
مسیر کامل یک اسکریپت پس‌درآمد (epilog) اختیاری را مشخص می‌کند. این اسکریپت درست قبل از برچیده شدن فضای نام اجرا می‌شود. متغیر محیطی SLURM_NS شامل مسیر فضای نام که توسط دستور nsenter قابل استفاده است، در اختیار این اسکریپت قرار داده خواهد شد. این متغیر به اسکریپت اجازه می‌دهد به فضای نامی که به زودی حذف می‌شود بپیوندد و کارهای پاک‌سازی را انجام دهد. این پارامتر اختیاری است.
مدت زمان به ثانیه برای انتظار جهت تکمیل CloneNSEpilog پیش از آنکه اسکریپت شکست‌خورده تلقی شود. مقدار پیش‌فرض ۱۰ ثانیه است.
مشخص کردن EntireStepInNS=true تمام پردازش‌های slurmstepd (به استثنای گام خارجی که وظیفه ایجاد فضای نام را بر عهده دارد) را به فضای نام ساخته‌شده منتقل (pivot) می‌کند. اگر مسیرهای مشخصی مانند SlurmdSpoolDir غیرقابل دسترس باشند، این مورد باعث ایجاد مشکل خواهد شد. این پارامتر اختیاری است.
مسیر کامل یک اسکریپت راه‌اندازی اختیاری را مشخص می‌کند. این اسکریپت پیش از ساخت فضای نام یک کار اجرا می‌شود. این اسکریپت می‌تواند برای ملحق کردن کار به فضاهای نام اضافی پیش از ساخت فضای نام /tmp یا برای هرگونه راه‌اندازی ویژه مرکز محاسباتی استفاده شود. این پارامتر اختیاری است.
تعیین NodeName امکان استفاده از یک فایل job_container.conf را برای تمامی گره‌های محاسباتی یک کلاستر با مشخص کردن گره(هایی) که هر خط باید روی آن‌ها اعمال شود، فراهم می‌کند. تعیین NodeName می‌تواند همان‌طور که در مثال زیر نشان داده شده است از مشخصه‌سازی فهرست میزبان (hostlist) در Slurm استفاده کند. این پارامتر اختیاری است.
مشخص کردن Shared=true تغییرات سوار کردن‌های جدید را میان فضای نام سیستم‌فایل ویژه کار و فضای نام سیستم‌فایل ریشه منتشر (propagate) می‌کند و امکان استفاده از autofs را روی گره فراهم می‌سازد. این پارامتر اختیاری است.

اگر هر پارامتری در job_container.conf هنگام اجرای slurm تغییر داده شود، slurmd روی گره‌های مربوطه باید مجدداً راه‌اندازی شود تا تغییرات اعمال شوند (اجرای scontrol reconfigure کافی نیست). علاوه بر این، این امر می‌تواند برای کارهایی که در حال حاضر روی گره در حال اجرا هستند مختل‌کننده باشد. بنابراین باید دقت شود که در صورت اعمال تغییرات در job_container.conf، هیچ کاری روی گره در حال اجرا نباشد.

راه‌اندازی مجدد slurmd تا زمانی که job_container.conf میان راه‌اندازی‌ها تغییر نکرده باشد، ایمن است و برای کارهای در حال اجرا اختلالی ایجاد نمی‌کند؛ در غیر این صورت نکته بالا اعمال می‌شود.

/etc/slurm/slurm.conf:
این‌ها ورودی‌های لازم در slurm.conf برای فعال‌سازی افزایه namespace/tmpfs هستند:
NamespaceType=namespace/tmpfs
PrologFlags=Contain
/etc/slurm/job_container.conf:
اولین فایل نمونه، یک BasePath برای همه گره‌ها تعریف می‌کند و این مسیر به طور خودکار ایجاد خواهد شد:
AutoBasePath=true
BasePath=/var/nvme/storage

فایل نمونه دوم، دو BasePath را تعریف می‌کند. اولی فقط روی largemem[1-2] خواهد بود و به طور خودکار ایجاد خواهد شد. دومی فقط روی gpu[1-10] خواهد بود، انتظار می‌رود که از قبل موجود باشد و قبل از هر کار یک initscript را اجرا خواهد کرد:

NodeName=largemem[1-2] AutoBasePath=true BasePath=/var/nvme/storage_a
NodeName=gpu[1-10] BasePath=/var/nvme/storage_b InitScript=/etc/slurm/init.sh

فایل نمونه سوم، یک BasePath را تعریف می‌کند که روی همه گره‌ها خواهد بود، به طور خودکار ساخته می‌شود و پوشه‌های /tmp و /var/tmp را به عنوان سوارکردن‌های خصوصی دربرمی‌گیرد:

AutoBasePath=true
BasePath=/var/nvme/storage Dirs=/tmp,/var/tmp

Copyright (C) 2021 Regents of the University of California Produced at Lawrence Berkeley National Laboratory
Copyright (C) 2021-2022 SchedMD LLC.

این فایل بخشی از اسلورم (Slurm)، یک برنامه مدیریت منابع است. برای جزئیات بیشتر به https://slurm.schedmd.com مراجعه کنید.

اسلورم یک نرم‌افزار آزاد است؛ شما می‌توانید آن را تحت شرایط مجوز عمومی همگانی گنو (GNU General Public License) که توسط بنیاد نرم‌افزارهای آزاد منتشر شده است، چه نسخه ۲ مجوز یا (به انتخاب خودتان) هر نسخه بعدی، مجدداً توزیع کرده و/یا تغییر دهید.

اسلورم با این امید توزیع شده است که مفید واقع شود، اما بدون هیچ‌گونه ضمانتی؛ حتی بدون ضمانت ضمنی قابل فروش بودن یا تناسب برای یک هدف خاص. برای جزئیات بیشتر به مجوز عمومی همگانی گنو مراجعه کنید.

slurm.conf(5)

Slurm Configuration File Slurm 26.05