Views: 0
목차
부팅 지연의 원인
리눅스 부팅은 펌웨어(UEFI/BIOS) 초기화, 부트로더 실행, 커널 로딩, 사용자 공간 진입 단계로 이루어진다. 이 중 한 단계라도 지연되면 전체 부팅 시간이 길어진다.
주요 원인은 다음과 같다.
- 특정 서비스가 대기 상태에서 응답하지 않음
- 네트워크 초기화 지연
- 디스크 I/O 속도 저하
- 불필요한 서비스가 자동 실행
이러한 문제를 분석하기 위해 systemd-analyze를 활용하면 각 단계의 시간 분포를 확인하고 병목을 정확히 찾아낼 수 있다.
systemd-analyze 기본 분석
전체 부팅 시간을 확인하려면 다음 명령을 사용한다.
systemd-analyze time
출력 예시는 다음과 같다.
Startup finished in 2.5s (kernel) + 18.9s (initrd) + 45.8s (userspace) = 1min 7.2s
각 단계는 다음을 의미한다.
- kernel: 커널이 하드웨어와 장치를 초기화하는 시간
- initrd: 초기 램디스크 로딩 시간
- userspace: 서비스와 데몬이 실행되는 사용자 공간의 시간
커널이나 initrd가 길다면 하드웨어나 드라이버 문제일 가능성이 높고, userspace가 길다면 서비스나 네트워크 대기 등이 원인이다.
느린 서비스 찾기 – systemd-analyze blame
다음 명령으로 서비스별 부팅 지연 시간을 확인한다.
systemd-analyze blame
결과 예시:
6.7s plymouth-quit-wait.service
1.2s NetworkManager.service
1.1s systemd-logind.service
이 결과는 부팅 과정에서 가장 오래 걸린 서비스부터 순서대로 보여준다. 상위 항목은 부팅 지연의 주된 원인일 가능성이 높다.
단, 단순히 시간이 길다고 바로 비활성화하면 안 된다. 어떤 서비스는 다른 프로세스를 기다리는 구조일 수 있기 때문이다. 따라서 blame 결과만으로 판단하기보다 다음 단계인 critical-chain을 함께 참고해야 한다.
병목 서비스 파악 – systemd-analyze critical-chain
서비스 간 의존 관계와 실제 병목 구간을 확인하려면 다음 명령을 사용한다.
systemd-analyze critical-chain
출력 예시:
graphical.target @1min 20.0s
└─multi-user.target @1min 20.0s
└─NetworkManager.service @25.5s +10.0s
여기서 “@”는 서비스 시작 시점, “+”는 실행에 걸린 시간을 나타낸다.
이 결과를 통해 어떤 서비스가 다른 서비스 시작을 지연시키는지 확인할 수 있다. 예를 들어 NetworkManager가 오래 걸리면 네트워크 연결 대기 시간이 부팅 속도를 늦추는 것이다.
원인별 개선 방법
불필요한 서비스 비활성화
필요하지 않은 서비스는 비활성화하거나 부팅 이후에 실행되도록 조정한다.
sudo systemctl disable bluetooth.service
sudo systemctl disable cups.service
프린터, 블루투스, Avahi 같은 서비스를 사용하지 않는다면 이 방법으로 부팅 시간을 단축할 수 있다.
네트워크 서비스 지연 조정
네트워크 준비를 기다리는 서비스(systemd-networkd-wait-online.service)는 부팅 속도를 지연시킬 수 있다.
아래와 같이 대기 시간을 줄일 수 있다.
ExecStart=/lib/systemd/systemd-networkd-wait-online --timeout=10
네트워크가 반드시 필요하지 않은 서버라면 해당 서비스를 아예 비활성화하는 것도 방법이다.
하드웨어 및 펌웨어 점검
커널 단계에서 지연이 발생한다면 디스크 속도나 펌웨어 문제가 원인일 수 있다. HDD 대신 SSD를 사용하거나 BIOS/UEFI를 최신 버전으로 업데이트하면 부팅 속도가 개선된다.
개선 효과 확인
조치 후에는 다시 시간을 측정해 비교한다.
systemd-analyze time
systemd-analyze blame
systemd-analyze critical-chain
userspace 단계가 단축되었거나 blame 상단의 서비스 실행 시간이 줄어들면 개선된 것이다.
실무 적용 절차 요약
systemd-analyze time으로 단계별 부팅 시간 확인systemd-analyze blame으로 느린 서비스 탐색systemd-analyze critical-chain으로 병목 서비스 파악- 불필요한 서비스 비활성화 또는 지연 실행 설정
- 네트워크 서비스 타임아웃 조정
- 하드웨어와 펌웨어 점검
- 조치 후 재측정으로 효과 검증
마무리
systemd-analyze는 부팅 속도 문제를 정량적으로 분석할 수 있는 가장 강력한 도구다. 각 단계를 체계적으로 점검하면 단순한 감이 아닌 데이터 기반으로 문제를 해결할 수 있다. 서버 운영 환경에서 부팅 속도는 곧 가용성과 직결되므로, 정기적으로 분석해 병목을 제거하는 습관이 중요하다.