У меня есть небольшое количество старых рабочих столов ubuntu, подключенных коммутатором, работающим как мини-тестовый кластер. Рабочие принимают команды от главного узла через диспетчер очередей SLURM. Они совместно используют монтирование данных и монтирование, содержащее исполняемые файлы, для обработки данных через NFS в отдельном блоке файлового сервера. Всем машинам около 5 лет. Задания от главного узла разделяются на задачи, которые затем передаются в SLURM главным узлом. При разбиении создаются рабочие каталоги, в которых хранятся символические ссылки на соответствующие файлы данных:
../job_workdir/task_1/datafile.dat -> ../datadir/dataset/task_1/datafile.dat
Когда задача запущена, структура разделения выполнила свою работу, но иногда расширение (.dat или подобное) символической ссылки не принимается исполняемым файлом, как того требует, например, .txt файлы. Поэтому задание запускает оболочку, которая символически связывает символическую ссылку с принятым именем, после чего оболочка практически сразу вызывает исполняемый файл.
../job_workdir/task_1/datafile.dat -> ../datadir/dataset1234/task_1/datafile.dat
../job_workdir/task_1/datafile.txt -> ../job_workdir/task_1/datafile.dat
Иногда исполняемый файл по необъяснимым причинам завершается с сообщением «файл не существует» для обработки символической ссылки. Я не могу воспроизвести это для конкретных задач, обычно это работает, но не всегда.
Итак, мой вопрос: есть ли проблема со временем создания символической ссылки в NFS? Сервер NFS - это старая машина i3 с двумя жесткими дисками, выступающими в качестве логического тома, а коммутатор - это коммутатор 3com Gigabit 8 («для небольших офисов»).
Нет ответов, поэтому я опишу, что сделал. Не уверен, была ли это основная проблема, но я обнаружил, что между разными компьютерами была разница в часах. Рабочие узлы и файловый сервер не подключены к Интернету, поэтому я установил ntp-сервер на главном узле, а клиенты - на рабочих и файловый сервер. Затем клиенты синхронизировались с главным узлом. С тех пор проблем не видел.