无法使用 SLURM 作业覆盖 SSHFS 安装文件夹

Unable to write over an SSHFS mounted folder with SLURM jobs

我有以下问题,我不确定发生了什么。我简单解释一下。

我在一个集群上工作,该集群有多个节点,这些节点通过 slurm 进行管理。所有这些节点共享相同的磁盘内存(我认为它使用 NFS4)。我的问题是,由于这个磁盘内存由很多用户共享,我们对每个用户的磁盘内存安装量有限制。

我使用 slurm 启动 python 运行一些代码并将输出保存到 csv 文件和文件夹的脚本。

由于我需要的内存比分配的多,我所做的是通过 sshfs 从我有足够磁盘的机器上安装一个远程文件夹。然后,我将 python 脚本配置为通过名为 EXPERIMENT_PATH 的环境变量写入该文件夹。脚本示例如下:

Python 脚本:

import os

root_experiment_dir = os.getenv('EXPERIMENT_PATH')
if root_experiment_dir is None:
    root_experiment_dir = os.path.expanduser("./")


print(root_experiment_dir)

experiment_dir = os.path.join( root_experiment_dir, 'exp_dir')

## create experiment directory
try:
    os.makedirs(experiment_dir)
except:
    pass

file_results_dir = os.path.join( root_experiment_dir, 'exp_dir' , 'results.csv' )


if os.path.isfile(file_results_dir):
    f_results = open(file_results_dir, 'a')
else:
    f_results = open(file_results_dir, 'w')

如果我直接启动这个 python 脚本,我可以在我的远程机器上看到创建的文件夹和文件,该文件夹已经通过 sshfs 安装。但是,如果我使用 sbatch 通过以下 bash 文件启动此脚本:

export EXPERIMENT_PATH="/tmp/remote_mount_point/"

sbatch -A server -p queue2 --ntasks=1 --cpus-per-task=1 --time=5-0:0:0 --job-name="HOLA" --output='./prueba.txt' ./run_argv.sh   "python foo.py"        

其中 run_argv.sh 是一个简单的 bash 从 argv 获取信息并启动,即文件编码:

#!/bin/bash
$*

然后我观察到在我的远程机器上什么也没有写。我可以检查 /tmp/remote_mount_point/ 中安装的文件夹,但也没有任何显示。只有当我使用以下命令卸载此远程文件夹时:fusermount -u /tmp/remote_mount_point/ 我可以看到在 运行 机器中创建了一个名称为 /tmp/remote_mount_point/ 的文件夹并在其中创建了文件,但显然什么也没有出现远程机器。

换句话说,似乎通过 slurm 启动,它绕过了 sshfs 安装文件夹并在主机中创建一个新文件夹,只有在远程文件夹卸载后才可见。

有人知道为什么会发生这种情况以及如何解决吗?我强调,这只有在我通过 slurm 管理器启动所有内容时才会发生。如果没有,那么一切正常。

我要强调的是,集群中的所有节点都共享同一个磁盘space,所以我想挂载的文件夹对所有机器都是可见的。

提前致谢。

I shall emphasize that all the nodes in the cluster share the same disk space so I guess that the mounted folder is visible from all machines.

不幸的是,这不是它的工作原理。试图简单地说;您可以说挂载点内的挂载点(这里是 NFS 内的 SSHFS)“存储”在内存中而不是“父”文件系统(这里是 NFS)中,因此计算节点不知道登录节点上有 SSHFS 挂载。

为了让您的设置正常工作,您应该在提交脚本中创建 SSHFS 挂载点(这会产生很多新问题,例如关于身份验证等)

但在深入研究之前,您可能应该询问集群是否有另一个文件系统(“scratch”、“work”等),您可以在那里临时存储比您家中的配额允许的更大的数据文件系统。