이슈 내용
- Azure VM 리부팅 시 행이 발생하여 서버 부팅이 정상적으로 진행이 되지 않음.
- 특이한점은 부팅 방법에 따라 정상적으로 올라올때가 있고, 올라오지 않을때가 있음
- Stop -> Start 리부팅 진행 시 부팅 오류
- Restart 리부팅 진행 시 정상 부팅 진행
로그를 확인 해 보니 NAS 마운트 시간이 오래 소요되어 정상적인 부팅이 되지 않은 것으로 보임.
- VM start일 때 수행되는 mount -a 부분에서 다시 restart할때까지 467초 소요되고 있다가 정상 수행되지 못하고 실패 발생
cloud-init.log 파일 일부
2025-09-11 06:42:17,652 - modules.py[DEBUG]: Running module mounts (<module 'cloudinit.config.cc_mounts' from ' usr="" lib="" python3="" dist-packages="" cloudinit="" config="" cc_mounts.py'="">) with frequency once-per-instance</module 'cloudinit.config.cc_mounts' from '>
2025-09-11 06:42:17,652 - handlers.py[DEBUG]: start: init-network/config-mounts: running config-mounts with frequency once-per-instance
…
2025-09-11 06:42:17,654 - subp.py[DEBUG]: Running command ['mount', '-a'] with allowed return codes [0] (shell=False, capture=True)
2025-09-11 06:50:04,665 - performance.py[DEBUG]: Running ['mount', '-a'] took 467.010 seconds
2025-09-11 06:50:04,665 - subp.py[DEBUG]: Running command ['systemctl', 'daemon-reload'] with allowed return codes [0] (shell=False, capture=True)
2025-09-11 06:50:04,886 - performance.py[DEBUG]: Running ['systemctl', 'daemon-reload'] took 0.221 seconds
2025-09-11 06:50:04,886 - handlers.py[DEBUG]: finish: init-network/config-mounts: FAIL: running config-mounts with frequency once-per-instance
이슈 원인
Cloud-init 진행 시 mount -a 를 진행하는 타이밍 이슈로 보임
- Cloud-init 주요 기능 중 "네트워크 구성"보다 "마운트 처리"가 먼저 진행되어 문제가 발생한 것으로 추정
- Stop -> Start 시 네트워크/DNS 초기화가 mount 시점보다 늦게 일어나서 부팅 행
- Restart는 기존 네트워크 정보가 유지되어 문제 없음
해결 방안
- OS 부팅 중 mount를 진행하기 때문에 cloud-init 과정에서 mount -a 를 진행할 필요가 없어 mount 부분을 disable 적용
- 99-disable-mounts.cfg 파일 생성 및 편집 ( /etc/cloud/cloud.cfg.d/ )
# vi /etc/cloud/cloud.cfg.d/99-disable-mounts.cfg
# 파일 내 아래 내용 추가 및 저장
cloud_init_modules:
- mounts: [disabled]
- Stop -> Start 로 여러번 리부팅 해 봤으나 부팅 중 멈추는 증상은 발생하지 않음
Stop -> Start 와 Restart 부팅 차이
- Stop -> Start
- 전원을 껐다 켜는 콜드부팅 (환경 리셋)
- VM 전원을 완전히 끈 상태로 CPU/메모리 등 리소스 해제되고, 호스트에서 내려감
- 재시작 시 BIOS -> Boot loader -> OS 순서로 부팅
- Restart
- OS 레벨에서 재부팅하는 웜부팅 (환경 유지)
- 같은 호스트에서 OS가 재시작되며, 임시 디스크 및 네트워크 정보는 유지 됨
동작 | 리소스 상태 | IP 유지 | 임시 디스크 | 요금 | 비유 |
Stop -> Start | 호스트 해제 후 새 할당 | 초기화 | 초기화 | 디스크만 과금 | 콜드 부팅 |
Restart | 동일 호스트에서 OS 재시작 | 유지 | 유지 | 계속 과금 | 웜 부팅 |
Cloud-init 주요 기능
- 호스트/시스템 기본 설정
- Hostname 설정 및 /etc/hosts 갱신
- Timezone, Locale 설정 등
- 사용자 계정 및 인증 관리
- 사용자 계정 생성
- SSH 공개키 배포
- sudo 권한 부여 등
- 네트워크 구성
- 인터페이스 및 DNS 설정 등
- 패키지 관리 및 소프트웨어 설치
- 부팅 시 자동으로 apt, yum, dnf 등을 실행해 업데이트 및 패키지 설치
- 스토리지 마운트
- /etc/fstab 항목에 따라 디스크 마운트
- data 디스크 초기화 및 포맷 등
- User-data 실행
- 보안 및 키 관리
- SSH 키 자동 주입 등
- 부팅 후 작업
- 서비스 자동 시작
- 커스텀 스크립트 실행
- 로그 기록(/var/log/cloud-init.log, /var/log/cloud-init-output.log) 등