virtualization / knowledge
Proxmox VM의 부팅 순서와 shutdown timeout 잡기
정전 후 복구되거나 host를 재부팅하면 VM들이 한꺼번에 올라온다. 서로 의존하는 게 있으면 순서를 정해줘야 한다. Docker VM이 NFS를 마운트하려는데 TrueNAS가 아직 안 떴으면 마운트가 실패한 채로 시작된다.
옵션
| 옵션 | 의미 |
|---|---|
| Start/Shutdown order | 낮을수록 빨리 켜지고 늦게 꺼진다 |
| Start delay | 이 VM이 뜬 뒤 다음 VM을 시작하기까지의 간격 |
| Shutdown timeout | 종료 신호를 보내고 기다리는 시간. 넘으면 강제 종료한다 |
종료는 시작의 역순이다. order가 낮을수록 나중에 꺼지므로, 다른 게 의존하는 것을 낮은 번호로 두면 켤 때도 끌 때도 맞아떨어진다.
실제 설정
| VM | order | start delay | shutdown timeout |
|---|---|---|---|
| DNS (Technitium) | 1 | 10 | 60 |
| NUT Server | 2 | 10 | 60 |
| TrueNAS | 3 | 120 | 180 |
| Debian Docker | 4 | 0 | 60 |
DNS와 NUT Server가 앞이고 실제 서비스가 뒤다. VM/CT의 ID를 정할 때 나눈 Infra, Network, Service 순서를 그대로 따랐다.
TrueNAS의 start delay가 120초인 게 핵심이다. TrueNAS는 부팅이 끝나고 pool을 import해서 NFS export가 실제로 열리기까지 시간이 걸린다. 여기서 충분히 기다려주지 않으면 다음 순서인 Docker VM이 마운트에 실패한다.
TrueNAS의 shutdown timeout만 180초로 길게 뒀다. pool을 안전하게 내리는 데 시간이 걸리는데 중간에 강제 종료하면 곤란하다. 이 180초가 UPS 쪽 offdelay 를 240초로 잡은 근거이기도 하다.
마지막인 Debian Docker의 start delay는 0이다. 뒤에 기다릴 게 없다.
옵션 설명 메모에는 shutdown timeout을 120초로 해두겠다고 적었는데, 실제로는 TrueNAS만 180이고 나머지는 60으로 들어가 있다.