작업 스케줄러를 사용하지 않고 공유 파일 시스템이 있는 여러 Linux 서버를 어떻게 설정합니까?

작업 스케줄러를 사용하지 않고 공유 파일 시스템이 있는 여러 Linux 서버를 어떻게 설정합니까?

저는 주로 딥 러닝 작업을 위해 연구실에서 여러 GPU 서버를 관리합니다. 우리는 이들 머신이 동일한 파일 시스템을 공유하여 머신 간 전환이 더 쉽기를 원합니다.

현재 NFS를 사용하여 /home모든 컴퓨터에서 폴더를 공유하고 있지만 모든 컴퓨터에 시스템 업데이트(예: 기본 폴더 외부의 NVIDIA 드라이버)를 설치하는 것은 각 컴퓨터에서 수행해야 하기 때문에 번거롭습니다.

전체 파일 시스템(root)을 공유할 수 있는 방법이 있는지 궁금합니다 /. 내 관심사는 이러한 컴퓨터가 서로 다른 구성(다른 CPU, GPU, 메모리)을 갖고 있고 다른 작업을 실행하기 때문에 /dev, , /proc와 같은 폴더가 있다는 것입니다 /tmp. 그냥 공유하는 것이 좋은 생각인가요 /?

Linux 클러스터를 설정하는 방법에 대한 몇 가지 기사를 읽었으며 대부분 Slurm과 같은 예약 시스템을 사용하는 것이 좋습니다. 다만, 당사 서버는 주로 알고리즘 개발(디버깅)에 사용되므로 클라이언트 컴퓨터에서 직접 접속하는 것을 선호합니다. 작업 대기열 시스템을 사용하지 않고 전체 파일 시스템을 공유할 수 있습니까?

답변1

그것은 가능하며 실제로는 상대적으로 간단합니다. NFS를 사용하여 마운트할 수 있습니다. 이것이 제가 Linux를 실행하는 방법이었습니다.

/dev /proc /sys /tmp /run과 같은 폴더는 이미 별도로 마운트되어 있어야 합니다. 따라서 /가 NFS라고 해도 그렇지 않습니다.

공유되지 않은 것으로 생각되는 다른 폴더가능한예/등. 시스템 업그레이드에서 파일을 상속하려고 하기 때문에 이는 더 까다로울 수 있지만 각 서버의 로컬 변경 사항을 보존할 수도 있습니다. 한 가지 해결책은 NFS 하위 계층 및 로컬 파일 시스템 상위 계층과 함께 overlayfs를 사용하는 것입니다.

정말로 필요한 경우에만 /etc를 이 방법으로 사용하겠습니다. 일관성을 유지하는 것이 가장 좋습니다.

반면 /var는 변경 가능한 데이터에 사용됩니다. 즉, 모든 서버가 해당 데이터를 수정하려고 시도한다는 의미입니다. 이에 대해 많은 것을 공유하고 싶지는 않을 것입니다.

/를 NFS로 마운트하려면 initramfs에 이를 마운트하도록 지시해야 합니다. 많은 배포판에서는 initramfs가 실제로 읽는 커널 매개변수를 사용하여 이를 수행할 수 있습니다. 이봐https://www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txt

이를 위해서는 부트로더의 부팅 옵션을 수정해야 합니다. 예를 들어, grub 구성에서 메뉴 항목을 수정해야 합니다.

어떤 배포판을 지정하지 않았으므로 설정에 대해 더 구체적으로 설명할 수 없습니다.

관련 정보