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 تنظیم 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 است؛ یک برنامه مدیریت منابع. برای جزئیات بیشتر، نشانی را ببینید. نرم‌افزار Slurm یک نرم‌افزار آزاد است؛ شما می‌توانید آن را تحت شرایط مجوز عمومی همگانی گنو (GNU General Public License) همان‌گونه که توسط بنیاد نرم‌افزارهای آزاد منتشر شده است، چه نسخه ۲ مجوز و چه (به انتخاب خودتان) هر نسخه بعدی، بازتوزیع کرده یا تغییر دهید. نرم‌افزار Slurm با این امید توزیع شده است که مفید واقع شود، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی قابل فروش بودن یا تناسب برای یک هدف خاص. برای جزئیات بیشتر به مجوز عمومی همگانی گنو مراجعه کنید. همچنین ببینید (SEE ALSO) slurm.conf(5) Slurm 26.05 Slurm Configuration File namespace.yaml(5)