LabHub

HPC 와 Slurm · 장애 진단 · 실습

깨진 클러스터 진단하기

LabHub 에서 이어서 보기

목표

깨진 Slurm 설정과 로그를 받아 원인 네 개를 각각 특정하고, 고치고, 복구 절차와 RCA 보고서를 남깁니다.

왜 중요한가

Slurm 장애의 특징은 로그 한 줄이 원인을 다 말해 준다는 것입니다. 문제는 그 한 줄을 찾는 순서를 모르면 며칠이 걸린다는 점입니다. 순서는 정해져 있습니다 — sinfo 로 범위를 좁히고, slurmctld.log 에서 이유를 읽고, 설정 파일에서 그 줄을 확인합니다.

특히 munge 오류의 두 종류를 구분하는 것이 중요합니다. Expired credential 은 시계 문제라 NTP 를 보고, Invalid credential 은 키 문제라 키 파일을 비교합니다. 완전히 다른 대응입니다.

픽스처는 /opt/fixtures/slurm/broken/ 에 있습니다. slurm.conf, gres.conf, slurmctld.log, sinfo.txt 네 파일입니다.

단계

1. /root/rca 디렉터리를 만들고, sinfo.txt 에서 정상(idle/alloc/mix)이 아닌 상태의 서로 다른 노드 이름을 한 줄에 하나씩 /root/rca/bad-nodes.txt 에 적으세요.
2. 노드 정의 불일치를 찾아 /root/rca/node.txt 에 두 줄로 적으세요.
NODE=<문제 노드 이름> / KEY=<불일치가 난 설정 키 이름>
3. munge 인증 실패를 특정해 /root/rca/munge.txt 에 두 줄로 적으세요.
KIND=<expired|invalid> / CAUSE=<clock|key>
4. 파티션이 참조하지만 정의되지 않은 노드 이름을 한 줄로 /root/rca/partition.txt 에 적으세요.
5. GRES 개수 불일치를 /root/rca/gres.txt 에 두 줄로 적으세요.
CONFIGURED=<slurm.conf 가 선언한 그 노드의 GPU 수> / REPORTED=<gres.conf 가 실제로 가리키는 장치 수>
6. 네 가지 문제를 모두 고친 /root/rca/slurm.conf/root/rca/gres.conf 를 제출하세요. 문제 노드의 CPUs 를 실제와 맞추고, 파티션의 노드 목록에서 없는 노드를 빼고, GRES 개수를 일치시키세요. (munge 는 설정 파일이 아니라 운영 문제이므로 이 파일에서는 다루지 않습니다.)
7. /root/rca/recovery.sh 를 작성하세요. 다음 두 종류의 명령이 순서대로 들어 있어야 합니다.

참고

단계 8개

  1. 증상 정리
  2. 노드 정의 불일치 찾기
  3. 인증 실패 특정
  4. 정의되지 않은 노드 참조
  5. GRES 개수 불일치
  6. 수정본 제출
  7. 복구 절차 작성
  8. RCA 보고서