job_container/tmpfs
概述
job_container/tmpfs 是一个可选插件,提供特定于作业的私有临时文件系统空间。
当在集群上启用时,将为每个作业创建一个文件系统命名空间,作业可以使用唯一的私有实例 /tmp 和 /dev/shm。这些目录可以通过 job_container.conf 中的 Dirs= 选项进行更改。作业终止时,这些目录的内容将被删除。
安装
该插件作为默认构建的一部分构建和安装,无需额外的安装步骤。
设置
必须通过在 slurm.conf 中添加 JobContainerType=job_container/tmpfs 和 PrologFlags=contain 来配置 Slurm 以加载作业容器插件。还必须在 job_container.conf 文件中进行额外配置,该文件应与 slurm.conf 位于同一目录中。
作业容器可以为所有节点或部分节点配置。例如,如果所有节点将以相同方式配置,则可以在 job_container.conf 中放入以下内容:
AutoBasePath=true BasePath=/var/nvme/storage
有关 job_container.conf 文件中可用参数的完整描述,请参见这里。
初步测试
验证容器是否正常工作的简单方法是运行一个作业,确保 /tmp 目录为空(因为它通常有其他文件),并且 "." 的所有者是提交作业的用户。
tim@slurm-ctld:~$ srun ls -al /tmp total 8 drwx------ 2 tim root 4096 Feb 10 17:14 . drwxr-xr-x 21 root root 4096 Nov 15 08:46 ..
在作业运行时,root 应该能够确认 /$BasePath/$JobID/_tmp
存在且为空。该目录被绑定挂载到作业中。/$BasePath/$JobID
应该由 root 拥有,并且不打算让用户访问。
SPANK
该插件与 SPANK API 接口,并在以下函数中自动加入作业的容器:
- spank_task_init_privileged()
- spank_task_init()
除了作业本身,TaskProlog 也将在容器内执行。
最后修改于 2023 年 11 月 29 日