job_container/tmpfs

概述

job_container/tmpfs 是一个可选插件,提供特定于作业的私有临时文件系统空间。

当在集群上启用时,将为每个作业创建一个文件系统命名空间,作业可以使用唯一的私有实例 /tmp 和 /dev/shm。这些目录可以通过 job_container.conf 中的 Dirs= 选项进行更改。作业终止时,这些目录的内容将被删除。

安装

该插件作为默认构建的一部分构建和安装,无需额外的安装步骤。

设置

必须通过在 slurm.conf 中添加 JobContainerType=job_container/tmpfsPrologFlags=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 日