Я использую небольшой кластер Ubuntu с 8 компьютерами. Обычные пользователи не должны иметь доступа к отдельным ПК. Они должны иметь возможность отправлять вычислительные задачи только через qsub.
Кроме того, обычные пользователи должны иметь доступ к хранилищу в кластере. В идеале обычный пользователь не должен видеть, где находятся его файлы на отдельных ПК. Он должен видеть кластер как единое хранилище. И он должен иметь доступ только к своим файлам.
Кроме того, процесс, запущенный для конкретного пользователя, должен иметь доступ к файлам этого пользователя.
Как мне все это сделать?
Сейчас кластер работает на Ubuntu с крутящим моментом + мауи. У меня есть несколько проблем, которые мне нужно исправить. Одним из них является то, что пользователи могут использовать ssh на отдельных ПК и запускать там процессы, нарушая очередь.
Я новичок в Linux и кластерах, поэтому постарайтесь дать как можно более краткий ответ. Кроме того, ссылки на полезные учебники по этим темам также будут полезны.
Вы можете явным образом запретить запуск определенных программ для обычных пользователей (однако они могут по-прежнему использовать некоторый интерпретируемый язык, если вы запретите, например, make
, gcc
).
Лучшим подходом будет использование cgroups
(введено в ядро linux в 2.6.29 - ваше ядро должно их поддерживать) или некоторая легкая виртуализация (lxc-контейнеры).
См .: https://wiki.archlinux.org/index.php/cgroups
С помощью cgroups
вы можете ограничить пользователя 1 ЦП (или даже меньше) и 50 МБ. ОЗУ, которое позволит пользователю использовать доступ по ssh, но не будет выполнять дорогостоящие вычисления (если пользователь превысит лимит, процесс будет остановлен).