| namespace.yaml(5) | Slurm Configuration File | namespace.yaml(5) |
نام (NAME)
namespace.yaml - فایل پیکربندی اسلورم برای پلاگین namespace/linux
توضیحات (DESCRIPTION)
فایل namespace.yaml یک فایل پیکربندی با قالب YAML است که پارامترهای مورد استفاده توسط پلاگین namespace/linux اسلورم را تعریف میکند. بر اساس این پارامترها، پلاگین فضاینام (یا فضاهاینام) متناسب و مختص به هر کار را ایجاد خواهد کرد. پلاگین namespace/linux میتواند یک فضاینام سیستمفایل ایجاد کرده و یک فضاینام سیستمفایل خصوصی (یا به صورت اختیاری مشترک) بسازد و فهرستی از دایرکتوریها (به طور پیشفرض /tmp و /dev/shm) را درون آن سوار کند، که نمایی اختصاصی از این دایرکتوریها به کار ارائه میدهد. این مسیرها درون مکانی که توسط base_path در فایل namespace.yaml مشخص شده است سوار میشوند. این پلاگین همچنین میتواند فضاهاینام جدید کاربر (User) و شناسه فرایند (PID) را برای کار ایجاد کند.
هنگامی که کار به پایان میرسد، فضاینام پیادهسازی (unmount) شده و تمامی فایلهای درون آن به طور خودکار حذف میشوند.
برای استفاده از این پلاگینها، عبارت 'PrologFlags=Contain' نیز باید مطابق نمونه زیر در فایل slurm.conf شما وجود داشته باشد:
NamespaceType=namespace/linux PrologFlags=Contain
این فایل همیشه در همان دایرکتوری حاوی slurm.conf قرار خواهد داشت.
این فایل باید در همان دایرکتوری slurm.conf قرار گیرد. هر متنی پس از یک «#» در این فایل تا پایان آن سطر به عنوان توضیح (کامنت) در نظر گرفته میشود. تغییرات اعمالشده در فایل پیکربندی پس از راهاندازی مجدد دیمنهای Slurm اعمال خواهند شد.
پارامترها (PARAMETERS)
فایل namespace.yaml شامل ویژگیهای زیر است:
- defaults
- پیکربندی پیشفرض فضاینام. در صورت مشخص شدن، شامل فیلدهای شرح دادهشده در گزینهها (options) خواهد بود.
- disable_bpf_token
- در صورت تعیین، استفاده از توکنهای bpf را در پلاگین فضاینام غیرفعال میکند. استفاده از این گزینه هنگامی که ConstrainDevices در فایل cgroup.conf تنظیم شده باشد، منجر به این میشود که دستگاهها فقط در سطح کار محدود شوند؛ اگر گامهای مجزا دستگاههای کمتری نسبت به کار درخواست کنند، در عمل محدود نخواهند شد. این همچنین به ConstrainDevices اجازه میدهد روی هستههایی (کرنلهایی) که توکنهای bpf در دسترس نیستند کار کند.
- node_confs
- فهرستی از پیکربندیهای فضاینام گره. ویژگیهای عناصر این فهرست در ادامه شرح داده شده است.
تعاریف عناصر فهرست node_confs (node_confs list element definitions)
هر عنصر node_confs شامل ویژگیهای زیر است:
- nodes
- فهرستی از نامهای گرهها که گزینهها روی آنها اعمال خواهند شد.
- options
- گزینههای پیکربندی فضاینام. گزینههای مشخصشده، موارد تعیینشده توسط defaults را بازنویسی (override) خواهند کرد.
تعاریف گزینهها (options definitions)
بخش options شامل ویژگیهای زیر است:
- auto_base_path
- این گزینه تعیین میکند که آیا پلاگین باید دایرکتوری BasePath را بسازد یا خیر. اگر دایرکتوری پیش از راهاندازی slurm از قبل ایجاد نشده است، آن را برابر 'true' قرار دهید. اگر روی true تنظیم شود، دایرکتوری با مجوز 0755 ایجاد میشود. دایرکتوری در طول خاموش شدن slurm حذف نمیگردد. اگر برابر 'false' تنظیم شود یا مشخص نگردد، پلاگین انتظار دارد دایرکتوری از قبل وجود داشته باشد. این گزینه میتواند به صورت سراسری یا سطربهسطر استفاده شود. هنگامی که dir_confs تنظیم شده باشد، هر ورودی base_path مربوط به هر دایرکتوری در dir_confs نیز ایجاد خواهد شد. این پارامتر اختیاری است.
- base_path
- مسیر (PATH)
پایهای را
مشخص کنید
که پلاگین
فضاینام
باید به
عنوان پایه
برای سوار
کردن
دایرکتوریهای
اختصاصی
استفاده
کند. این
مسیر باید
توسط
پلاگین
قابل
خواندن و
نوشتن باشد.
پلاگین
درون این
مسیر
دایرکتوری
ویژهای
برای هر کار
میسازد که
سپس برای
سوار کردن
استفاده
میشود.
مقدار base_path در
طول شروع slurmd
به عنوان 'private'
سوار
میشود و تا
زمان خاموش
شدن سوار
باقی
میماند.
اولین «%h»
در نام با
نام میزبان
(hostname) که slurmd روی
آن اجرا
میشود
جایگزین
میگردد.
اولین «%n»
در نام با
نام گره Slurm که
slurmd روی آن
اجرا
میشود
جایگزین
میشود.
برای
غیرفعال
کردن
پلاگین namespace/linux
روی
زیرمجموعهای
از گرهها
هنگامی که
یک تنظیم
سراسری در
defaults وجود
دارد، PATH را
برابر 'none'
قرار دهید.
نکته: مقدار base_path باید برای هر گره منحصربهفرد باشد. اگر base_path روی یک سیستمفایل مشترک قرار دارد، میتوانید از «%h» یا «%n» برای ایجاد دایرکتوریهای منحصربهفرد برای هر گره استفاده کنید.
نکته: پارامتر base_path نمیتواند روی هیچیک از مسیرهای مشخصشده توسط dirs تنظیم شود. استفاده از این دایرکتوریها هنگام تلاش برای سوار کردن و پیادهسازی دایرکتوریهای اختصاصی برای کار باعث بروز تداخل خواهد شد.
- clone_ns_script
- مسیر کامل و مطلق یک اسکریپت راهاندازی اختیاری را مشخص میکند. این اسکریپت پس از ساخت فضاینام یک کار اجرا میشود. متغیر محیطی SLURM_NS حاوی مسیر فضاینام که میتواند توسط دستور nsenter استفاده شود، در اختیار این اسکریپت قرار میگیرد. این متغیر به اسکریپت اجازه میدهد تا به فضاینام تازه ایجادشده بپیوندد و کارهای پیکربندی بیشتری را انجام دهد. این پارامتر اختیاری است.
- clone_ns_script_wait
- تعداد ثانیههایی که باید منتظر تکمیل clone_ns_script ماند پیش از آنکه اسکریپت شکستخورده تلقی شود. مقدار پیشفرض ۱۰ ثانیه است.
- clone_ns_epilog
- مسیر کامل و مطلق یک اسکریپت پسگفتار (epilog) اختیاری را مشخص میکند. این اسکریپت درست قبل از برچیده شدن فضاینام اجرا میشود. متغیر محیطی SLURM_NS حاوی مسیر فضاینام که میتواند توسط دستور nsenter استفاده شود، در اختیار این اسکریپت قرار میگیرد. این متغیر به اسکریپت اجازه میدهد تا به فضاینامی که بهزودی حذف میشود بپیوندد و کارهای پاکسازی را انجام دهد. این پارامتر اختیاری است.
- clone_ns_epilog_wait
- تعداد ثانیههایی که باید منتظر تکمیل clone_ns_epilog ماند پیش از آنکه اسکریپت شکستخورده تلقی شود. مقدار پیشفرض ۱۰ ثانیه است.
- clone_ns_flags
- این
پارامتر
حاوی
فهرستی از
مقادیر
رشتهای
پرچم است و
مشخص
میکند چه
فضاهاینام
دیگری باید
برای کار
ایجاد شوند.
مقادیر
معتبر شامل
"CLONE_NEWPID" و "CLONE_NEWUSER"
به ترتیب
برای ایجاد
فضاهاینام
جدید PID و USER
هستند.
مقدار "CLONE_NEWNS"
نیز
پذیرفته
میشود،
اما همیشه
فعال است.
نکته: هنگامی که CLONE_NEWUSER مشخص شود، در صورت استفاده از ConstrainDevices در cgroup.conf، پشتیبانی از توکن bpf نیز الزامی است.
- dirs
- فهرستی
جداشده با
کاما از
دایرکتوریهایی
که باید
نقاط سوار
کردن
اختصاصی
برای آنها
ایجاد شود.
این
پارامتر
اختیاری
است و در
صورت عدم
تعیین،
مقدار
پیشفرض آن
"/tmp,/dev/shm" خواهد
بود. این
گزینه با dir_confs
مانعةالجمع
است. در
صورت تنظیم
هر دو، dir_confs
اولویت
خواهد داشت.
نکته: مسیر /dev/shm مدیریت ویژهای دارد و به جای یک سوار کردن اتصالی (bind mount)، همیشه یک سیستمفایل تازه tmpfs است.
نکته: هنگامی که CLONE_NEWPID مشخص شود، یک سیستمفایل منحصربهفرد /proc برای کانتینر به طور خودکار سوار خواهد شد.
- dir_confs
- فهرستی ساختاریافته از پیکربندیهای سوار کردن به ازای هر دایرکتوری. هر ورودی یک مسیر، ذخیرهسازی پشتیبان اختیاری برای هر دایرکتوری، و گزینههای سوار کردن اختیاری را مشخص میکند. در صورت تنظیم، جایگزین dirs میشود. ویژگیهای عناصر این فهرست در بخش تعاریف عناصر فهرست dir_confs (dir_confs list element definitions) در ادامه شرح داده شده است. این پارامتر اختیاری است.
- init_script
- مسیر کامل و مطلق یک اسکریپت راهاندازی اختیاری را مشخص میکند. این اسکریپت قبل از ساخت فضاینام یک کار اجرا میشود. میتوان از آن برای پیوستن کار به فضاهاینام دیگر پیش از ساخت فضاینام /tmp یا برای هرگونه راهاندازی ویژه سیستم استفاده کرد. این پارامتر اختیاری است.
- تنظیم Shared=true سوار کردنهای جدید را بین فضاینام سیستمفایل مختص کار و فضاینام سیستمفایل ریشه منتقل میکند و استفاده از autofs را روی گره فعال میسازد. این پارامتر اختیاری است.
- user_ns_script
- مکان اسکریپتی را مشخص میکند که راهاندازی فضاینام کاربر (user namespace) را انجام میدهد. این اسکریپت هنگام راهاندازی فضاینام در ابتدا اجرا میشود. متغیر محیطی "SLURM_NS_PID" برای امکانپذیر ساختن ساخت مسیر به فایلهای نقشهبرداری گوناگونی که این اسکریپت میتواند در آنها بنویسد فراهم شده است. اگر مشخص نشود، هر کاربر و گروهی نگاشت خواهد شد.
تعاریف عناصر فهرست dir_confs (dir_confs list element definitions)
هر عنصر dir_confs شامل ویژگیهای زیر است:
- path
- دایرکتوری مقصد برای سوار کردن اختصاصی، مانند "/tmp". جایگزینیهای زیر پشتیبانی میشوند: %j (شناسه کار)، %S (SLUID)، و %u (نام کاربری). این پارامتر الزامی است.
- base_path
- ریشه فضای ذخیرهسازی پشتیبان اختیاری برای هر دایرکتوری. مقدار سراسری base_path را برای این سوار کردن بازنویسی میکند. یک زیردایرکتوری مختص کار در اینجا برای پشتیبانی از سوار کردن اختصاصی ایجاد خواهد شد. هنگام تنظیم tmpfs نادیده گرفته میشود. این پارامتر اختیاری است.
- options
- فهرستی جداشده با کاما از گزینههای mount. پشتیبانی برای ارسال گزینههای زیر به دستور mount فراهم شده است:
- noatime
- زمانهای دسترسی به inode را در این سیستمفایل بهروزرسانی نکن.
- nodev
- دستگاههای ویژه کاراکتری یا بلوکی را در این سیستمفایل تفسیر نکن.
- nodiratime
- زمانهای دسترسی به inode دایرکتوری را در این سیستمفایل بهروزرسانی نکن.
- noexec
- اجرای مستقیم فایلهای باینری را در سیستمفایل سوارشده مجاز ندان.
- nosuid
- بیتهای set-user-ID و set-group-ID یا قابلیتهای فایل را هنگام اجرای برنامهها از این سیستمفایل در نظر نگیر.
- relatime
- زمانهای دسترسی به inode را متناسب با زمان تغییر یا اصلاح بهروزرسانی کن.
- ro
- سیستمفایل را به صورت فقطخواندنی سوار کن.
- برای سوار
کردنهای
tmpfs،
گزینههای
دادهای
اضافی
مانند size=4g و
mode=1777 نیز
میتوانند
مشخص شوند و
مستقیماً
به هسته
(کرنل)
ارسال
میشوند.
گزینههایی
که به عنوان
پرچم
شناخته
نشوند به
عنوان داده
سوار کردن tmpfs
تلقی شده و
در سوار
کردنهای bind
بدون اعلام
خطا نادیده
گرفته
میشوند.
این
پارامتر
اختیاری
است.
نکته: سوار کردنهای tmpfs صرفنظر از این تنظیم، همیشه دارای nosuid و nodev هستند.
- tmpfs
- اگر روی true تنظیم شود، به جای ایجاد یک سوار کردن bind پشتیبانیشده توسط base_path، یک tmpfs تازه را در این مسیر سوار میکند. این پارامتر اختیاری است.
نکات (NOTES)
اگر هر پارامتری در namespace.yaml در هنگام اجرای slurm تغییر داده شود، سرویس slurmd در گرههای مربوطه برای اعمال تغییرات باید مجدداً راهاندازی شود (اجرای دستور scontrol reconfigure کافی نیست). علاوه بر این، این موضوع میتواند باعث اختلال در کارهایی شود که هماکنون روی گره در حال اجرا هستند. بنابراین باید دقت شود تا در صورت استقرار هرگونه تغییری در namespace.yaml، هیچ کاری در حال اجرا نباشد.
راهاندازی مجدد slurmd تا زمانی که namespace.yaml بین راهاندازیهای مجدد تغییر نکرده باشد، ایمن بوده و بدون اختلال در کارهای در حال اجرا انجام میشود، که در غیر این صورت نکته بالا صادق خواهد بود.
مثال (EXAMPLE)
---
defaults:
auto_base_path: true
base_path: "/var/nvme/storage_0"
clone_ns_flags:
- "CLONE_NEWPID"
- "CLONE_NEWUSER"
- "CLONE_NEWNS"
clone_ns_epilog: "/path/to/epilog_script"
clone_ns_epilog_wait: 10
clone_ns_script: "/path/to/ns_script"
init_script: "/path/to/init_script"
shared: true
node_confs:
- nodes:
- "n1"
- "n[2-4,6]"
options:
auto_base_path: true
base_path: "/var/nvme/storage_1"
clone_ns_script_wait: 20
dir_confs:
- path: "/tmp"
options: "noexec,nosuid,size=8g"
tmpfs: true
- path: "/scratch"
base_path: "/var/nvme/storage_1"
options: "noexec,nosuid"
shared: false
user_ns_script: "/path/to/user_script"
- nodes:
- "n[7-10]"
options:
auto_base_path: true
base_path: "/var/nvme/storage_2"
init_script: "/etc/slurm/init.sh"
کپیرایت و تکثیر (COPYING)
Copyright (C) 2025 SchedMD LLC.
این فایل بخشی از Slurm است؛ یک برنامه مدیریت منابع. برای جزئیات بیشتر، نشانی https://slurm.schedmd.com را ببینید.
نرمافزار Slurm یک نرمافزار آزاد است؛ شما میتوانید آن را تحت شرایط مجوز عمومی همگانی گنو (GNU General Public License) همانگونه که توسط بنیاد نرمافزارهای آزاد منتشر شده است، چه نسخه ۲ مجوز و چه (به انتخاب خودتان) هر نسخه بعدی، بازتوزیع کرده یا تغییر دهید.
نرمافزار Slurm با این امید توزیع شده است که مفید واقع شود، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی قابل فروش بودن یا تناسب برای یک هدف خاص. برای جزئیات بیشتر به مجوز عمومی همگانی گنو مراجعه کنید.
همچنین ببینید (SEE ALSO)
| Slurm Configuration File | Slurm 26.05 |