Linux Machine Check Exception(MCE) 오류가 발생하는 원인과 해결 방법

Linux 서버를 운영하다 보면 커널 로그에서 Machine Check Exception, MCE, Hardware Error와 같은 메시지를 발견하는 경우가 있습니다. 이러한 오류는 일반적인 소프트웨어 문제가 아니라 CPU가 직접 하드웨어 이상을 감지했을 때 발생하는 예외입니다.

Machine Check Exception(MCE)은 CPU, 메모리, 캐시(Cache), 메인보드, 전원 공급 장치 등 하드웨어 구성 요소에서 치명적인 오류가 발생했음을 의미합니다. 이를 무시하면 서버 다운, Kernel Panic, 데이터 손상으로 이어질 수 있으므로 즉시 원인을 분석해야 합니다.

이번 글에서는 Linux에서 Machine Check Exception(MCE)이 발생하는 원인과 실무에서 사용하는 진단 및 해결 방법을 자세히 알아보겠습니다.

Machine Check Exception(MCE)이란 무엇인가?

Machine Check Exception은 CPU 내부의 Machine Check Architecture(MCA)가 하드웨어 오류를 감지했을 때 운영체제에 전달하는 예외입니다.

대표적인 로그는 다음과 같습니다.

Machine check events logged

또는

Machine Check Exception: 0 Bank 4

또는

Hardware Error: CPU 0: Machine Check Exception

CPU가 오류를 감지하면 커널 로그에 MCE 정보를 기록하며, 심한 경우 시스템이 자동으로 재부팅되거나 Kernel Panic이 발생할 수도 있습니다.

Machine Check Exception이 발생하는 대표적인 원인

다음과 같은 상황에서 자주 발생합니다.

  • CPU 불량
  • CPU 과열
  • ECC 메모리 오류
  • 캐시(Cache) 오류
  • 메인보드 이상
  • 전원 공급 장치(PSU) 문제
  • BIOS 버그
  • CPU Microcode 문제
  • 오버클럭
  • 전압 불안정

실무에서는 CPU와 메모리 상태를 가장 먼저 확인하는 것이 중요합니다.

1. 커널 로그 확인하기

먼저 MCE 로그를 확인합니다.

dmesg | grep -i "machine"

또는

journalctl -k | grep -Ei "machine|hardware error|mce"

오류 발생 시간과 CPU 번호를 함께 확인합니다.

2. mcelog 확인하기

Intel CPU에서는 mcelog를 사용할 수 있습니다.

mcelog

로그 확인

cat /var/log/mcelog

CPU의 Bank 번호와 오류 유형을 확인할 수 있습니다.

3. rasdaemon 확인하기

최신 배포판에서는 rasdaemon 사용이 권장됩니다.

서비스 상태 확인

systemctl status rasdaemon

오류 확인

ras-mc-ctl --summary

또는

journalctl -u rasdaemon

하드웨어 오류를 보다 자세히 분석할 수 있습니다.

4. CPU 정보 확인하기

CPU 정보를 확인합니다.

lscpu

또는

cat /proc/cpuinfo

CPU 모델과 코어 수, 마이크로코드 버전을 확인합니다.

5. CPU 온도 확인하기

CPU 과열 여부를 확인합니다.

sensors

또는

ipmitool sdr

CPU 온도가 지속적으로 높다면 냉각 시스템을 점검해야 합니다.

6. 메모리(ECC) 오류 확인하기

ECC 메모리를 사용하는 서버에서는 반드시 메모리 오류를 확인합니다.

ipmitool sel list

또는

edac-util -v

다음과 같은 오류를 확인합니다.

  • Correctable Error
  • Uncorrectable Error
  • ECC Memory Error

메모리 오류가 반복된다면 DIMM 교체를 검토해야 합니다.

7. BIOS 및 Microcode 확인하기

현재 BIOS와 CPU Microcode를 확인합니다.

dmidecode -t bios

Microcode 확인

dmesg | grep microcode

오래된 BIOS나 Microcode는 CPU 오류를 유발할 수 있습니다.

8. Crash Dump 분석하기

kdump가 활성화되어 있다면 Crash Dump를 확인합니다.

ls /var/crash

분석

crash vmcore

CPU 오류 발생 당시의 시스템 상태를 분석할 수 있습니다.

9. 하드웨어 이벤트 로그 확인하기

IPMI 이벤트 로그를 확인합니다.

ipmitool sel list

다음 항목을 확인합니다.

  • Machine Check Exception
  • CPU Failure
  • Thermal Event
  • Voltage Error
  • Power Supply Failure

제조사 서버에서는 BMC 로그도 함께 확인하는 것이 좋습니다.

10. 하드웨어 스트레스 테스트 수행하기

하드웨어 이상이 의심된다면 테스트를 수행합니다.

CPU 테스트

stress-ng --cpu 8 --timeout 300

메모리 테스트

memtester 4G

운영 서버에서는 서비스 영향도를 고려하여 점검 시간에 수행하는 것이 좋습니다.

Machine Check Exception 문제를 확인하는 순서

실무에서는 다음 순서대로 점검하는 것이 효율적입니다.

  1. dmesg 확인
  2. journalctl -k 확인
  3. mcelog 또는 rasdaemon 확인
  4. CPU 정보 확인
  5. CPU 온도 확인
  6. ECC 메모리 확인
  7. BIOS 및 Microcode 확인
  8. Crash Dump 분석
  9. IPMI 이벤트 로그 확인
  10. 하드웨어 스트레스 테스트 수행

이 순서대로 진행하면 대부분의 원인을 체계적으로 분석할 수 있습니다.

Machine Check Exception을 예방하는 방법

MCE는 대부분 하드웨어 이상으로 인해 발생하므로 예방이 매우 중요합니다.

다음과 같은 관리 방법을 권장합니다.

  • CPU 온도 상시 모니터링
  • ECC 메모리 사용
  • BIOS 최신 버전 유지
  • CPU Microcode 업데이트
  • 안정적인 전원 공급(UPS)
  • 정기적인 서버 내부 청소
  • 하드웨어 이벤트 로그 점검
  • 제조사 진단 도구 활용

특히 장시간 고부하 서버에서는 CPU와 메모리 상태를 정기적으로 점검하는 것이 좋습니다.

자주 묻는 질문

Machine Check Exception이 발생하면 CPU를 교체해야 하나요?

반드시 그렇지는 않습니다. CPU 과열, 메모리 오류, BIOS 문제, 전원 공급 문제 등 다양한 원인이 있으므로 로그와 하드웨어 상태를 먼저 분석해야 합니다.

MCE는 소프트웨어 문제인가요?

아닙니다. 대부분 CPU나 메모리 등 하드웨어에서 감지한 오류입니다.

mcelog와 rasdaemon 중 무엇을 사용해야 하나요?

최근 Linux 배포판에서는 rasdaemon 사용을 권장합니다. 일부 최신 CPU에서는 mcelog보다 더 다양한 오류 정보를 제공할 수 있습니다.

마무리

Machine Check Exception(MCE)은 Linux 시스템에서 CPU가 직접 감지한 하드웨어 오류를 의미하며, 서버 안정성에 매우 큰 영향을 미칠 수 있습니다. dmesg, journalctl, mcelog, rasdaemon, ipmitool 등을 함께 활용하면 CPU, 메모리, 메인보드의 문제를 효과적으로 분석할 수 있습니다. 특히 반복적으로 MCE가 발생한다면 단순히 재부팅으로 끝내지 말고 하드웨어 점검과 부품 교체 여부까지 검토하는 것이 안정적인 서버 운영의 핵심입니다.

댓글 남기기