서버 온도와 팬 속도 확인 명령어 정리 lm-sensors 설치부터

조회수: 0

서버를 오래 운영하다 보면 어느 날 갑자기 부하가 조금만 걸려도 팬이 크게 돌거나, 이유 없이 서버가 다운되는 일이 생기곤 한다. 이런 문제는 상당수가 과열이나 냉각 문제에서 시작된다. 그래서 리눅스 환경에서는 서버 온도와 팬 속도를 꾸준히 모니터링하는 체계를 만들어 두는 것이 중요하다.

리눅스에서 가장 많이 사용하는 하드웨어 모니터링 도구 중 하나가 lm-sensors다. 이 도구는 CPU와 메인보드의 온도, 전압, 팬 속도 같은 정보를 커맨드라인에서 확인할 수 있게 해 준다.(위키백과)

아래에서는 lm-sensors가 무엇인지부터 설치와 초기 설정, 그리고 실제로 온도와 팬 속도를 확인하는 명령어까지 차근차근 살펴보겠다.

lm-sensors 개념 정리

lm-sensors는 리눅스용 하드웨어 모니터링 도구 모음이다. 커널이 제공하는 센서 정보를 읽어 와 다음과 같은 값들을 보여준다(위키백과)

  • CPU 코어와 소켓 온도
  • 메인보드 칩셋 온도
  • 팬 속도와 회전수
  • 전압 정보

내부적으로는 다양한 하드웨어 센서를 지원하는 드라이버와 라이브러리, 그리고 이를 사용자가 보기 좋게 출력해 주는 sensors라는 명령어로 구성된다.(위키백과)

대부분의 리눅스 배포판에서 공식 패키지로 제공되기 때문에 별도의 빌드 과정 없이 패키지 관리자만으로 설치할 수 있다.

설치 전 확인해야 할 점

lm-sensors는 리눅스 전용 도구라서 보통 다음과 같은 환경에서 사용한다.

  • Ubuntu, Debian 계열 서버
  • CentOS, RHEL, Rocky, AlmaLinux 같은 엔터프라이즈 계열
  • Fedora, Arch Linux 등 기타 배포판

가상머신에서는 하이퍼바이저가 하드웨어를 가상화하기 때문에 온도나 팬 정보를 제대로 얻지 못하는 경우가 많다. 실제 물리 서버를 기준으로 생각하는 편이 좋다.

또 한 가지 기억해 둘 점은 모든 메인보드가 팬 속도 센서를 똑같이 노출하는 것은 아니라는 점이다. 어떤 보드는 온도만 보여 주고 팬 속도는 제공하지 않거나, 특정 커널 버전에서만 동작하는 경우도 있다.(Arch Linux 포럼)

단계 1 lm-sensors 설치

배포판별로 대표적인 설치 명령 예시는 다음과 같다.

Ubuntu와 Debian 계열

sudo apt update
sudo apt install lm-sensors

RHEL 계열 예를 들어 CentOS나 Rocky

sudo yum install lm_sensors

또는 dnf를 사용하는 최신 계열

sudo dnf install lm_sensors

Arch Linux 계열

sudo pacman -S lm_sensors

패키지 이름이 배포판에 따라 조금씩 다를 수 있지만 대부분 lm-sensors 또는 lm_sensors 형태다.

설치가 끝나면 아직 바로 센서가 읽히지는 않고, 센서 칩을 탐색하고 활성화하는 초기 설정이 한 번 필요하다.

단계 2 sensors-detect 로 센서 칩 탐색

lm-sensors를 제대로 쓰기 위해서는 sensors-detect라는 스크립트를 한 번 실행해 센서 칩과 필요한 커널 모듈을 찾아야 한다.(Armbian Community Forums)

sudo sensors-detect

실행하면 여러 질문이 나오는데, 일반적인 서버 환경에서는 대부분 기본값을 사용하는 것이 무난하다. 질문마다 대괄호 안에 기본 선택지가 표시되는데 빈 엔터를 계속 눌러 진행하면 된다.

이 스크립트는 다음과 같은 일을 한다.

  • 시스템에 장착된 센서 칩을 스캔
  • 온도와 전압, 팬을 읽을 수 있는 커널 모듈 후보를 제안
  • 필요하다면 해당 모듈을 부팅 시 자동으로 로드하도록 설정

과거에는 일부 노트북이나 특정 장비에서 너무 공격적인 센서 탐색이 문제를 일으킨 사례가 있었기 때문에, 최근 버전에서는 위험도가 있는 옵션은 기본적으로 비활성화되어 있다.(위키백과)

서버용 메인보드에서는 일반적으로 기본 옵션만으로도 충분히 센서를 탐지한다.

단계 3 sensors 명령으로 온도 확인

sensors-detect를 마쳤다면 이제 가장 중요한 sensors 명령을 사용할 차례다.

sensors

이 명령은 현재 인식 가능한 모든 센서 값을 한 번에 보여 준다. 출력은 대략 아래와 같은 정보로 구성된다.

  • 센서가 속한 장치 이름 예를 들어 coretemp, acpitz, nct6775 등
  • 각 센서 항목 이름 예를 들어 CPU 패키지, Core 0, System 등
  • 섭씨 온도 값과 함께 높은 온도 임계값과 치명적인 임계값 high, crit 표시
  • 일부 장치에서는 전압 정보도 함께 표기

각 코어 온도는 일반적으로 30도에서 80도 사이를 오가며, high 값은 제조사가 설정한 권장 최대 온도, crit 값은 그 이상이면 시스템이 보호를 위해 강제로 끌 수도 있는 수준이라고 이해하면 된다.(Linux.com)

서버 부하 테스트를 하면서 sensors를 반복 실행해 온도 추이를 확인하면 쿨링 설계가 충분한지 판단하는 데 큰 도움이 된다.

단계 4 팬 속도 확인과 자주 생기는 문제

팬 속도 역시 sensors 명령에서 확인한다.

sensors

출력에서 fan이라는 이름이 들어간 항목을 보면 된다. 예를 들면 다음과 같은 형식의 항목이 보인다.

  • fan1
  • fan2
  • cpu fan
  • system fan

각 항목 옆에는 보통 숫자와 함께 단위 rpm이 표시된다. 숫자가 클수록 팬이 빠르게 도는 것이다.

다만 많은 사람들이 여기서 한 번씩 막히는 부분이 있다. 설치와 탐색을 모두 마쳤는데도 팬 속도가 전부 0으로 나오거나, 아예 fan 항목이 나타나지 않는 경우다. 이런 상황에서는 다음 항목들을 차례로 의심해 볼 수 있다.(Arch Linux 포럼)

  1. 메인보드가 팬 센서를 커널에 노출하지 않는 경우
    서버용이 아닌 보급형 보드나 일부 최신 보드는 온도만 공개하고 팬 회전수는 드라이버가 아직 지원하지 않을 수 있다. 이때는 lm-sensors만으로는 해결이 되지 않는다.
  2. 커널 모듈이 아직 완전히 지원되지 않은 경우
    최신 칩셋은 특정 커널 버전 이후에야 제대로 지원되는 수가 있다. 비슷한 사례가 커뮤니티 포럼에 자주 올라온다.(Arch Linux 포럼)
  3. 바이오스에서 팬 제어 모드 설정 문제
    팬 커넥터가 dc 모드로 설정되어 있으면 회전수를 읽지 못하고, pwm 모드로 바꾸면 정상적으로 fan 항목이 나타나는 사례도 있다.(Reddit)

이 세 가지를 순서대로 확인해 보고, 그래도 fan 항목 자체가 나타나지 않는다면 해당 메인보드와 칩셋이 현재 커널과 lm-sensors 조합에서 팬 정보를 지원하지 않는다고 보는 편이 현실적이다.

단계 5 실시간 모니터링에 활용

서버 온도와 팬 속도는 한 번만 보는 것보다 일정 간격으로 추이를 보는 것이 더 의미가 있다. 터미널에서 간단하게 실시간에 가깝게 확인하고 싶다면 watch 명령과 함께 쓰면 편하다.

watch -n 2 sensors

이렇게 실행하면 2초마다 sensors 출력이 갱신되면서 온도와 팬 속도가 변하는 모습을 그대로 볼 수 있다. 부하 테스트를 하면서 이 값을 함께 관찰하면

  • 부하가 올라갈 때 온도가 얼마나 빠르게 따라 오르는지
  • 팬이 제때 충분한 rpm까지 올라가는지
  • 일정 온도 이상에서 팬이 과도하게 요동치지는 않는지

같은 부분을 쉽게 체크할 수 있다.

특정 센서만 골라 보는 방법

서버에 센서가 많을수록 sensors 출력이 길어지기 때문에, 특정 장치만 골라 보고 싶을 때도 있다. 이때는 장치 이름을 인자로 넘겨 주면 된다.(Unix & Linux Stack Exchange)

sensors coretemp

이렇게 하면 CPU 관련 센서만 표시된다. 메인보드 센서 칩 이름을 알고 있다면 해당 이름을 넣어 필요한 부분만 골라 볼 수 있다.

또는 grep과 함께 사용해 코어 온도만 간단히 확인할 수도 있다.

sensors | grep Core

쉘 스크립트에서 이 값을 파싱해 특정 온도 이상일 때 메일을 보내거나 로그를 남기는 식으로도 활용할 수 있다.

센서 값 파일을 직접 확인하는 방법

조금 더 깊게 들어가 보면 실제 센서 값은 커널이 제공하는 가상 파일 시스템 아래에서 확인할 수 있다. 대표적인 경로가 다음과 같다.(Super User)

ls /sys/class/hwmon

이 안에 hwmon0, hwmon1 같은 디렉터리가 있고, 각 디렉터리 안에는 온도와 팬에 대한 값들이 파일 형태로 들어 있다. 예를 들어

  • temp1 input
  • fan1 input

같은 파일을 cat으로 읽으면 현재 값을 숫자로 얻을 수 있다.

cat /sys/class/hwmon/hwmon0/fan1_input

이 방법은

  • 스크립트에서 센서 값을 직접 읽어야 할 때
  • lm-sensors 없이 커널이 노출한 값만 활용하고 싶을 때

유용하게 쓸 수 있다.

서버 운영 환경에서의 활용 팁

실제 서버 운영 관점에서는 lm-sensors와 sensors 명령을 단순히 수동으로만 쓰기보다 다음과 같이 체계적으로 묶어 두면 좋다.

  1. 부팅 직후에 sensors 값을 한 번 확인해 기본 상태를 기록해 둔다
  2. 스트레스 테스트 도구를 사용해 CPU와 메모리에 부하를 걸면서 watch와 sensors로 온도와 팬 동작을 체크한다
  3. 평소 서비스 운영 중에는 정기적으로 cron에서 sensors를 실행하고 로그에 적재해 추세를 남긴다
  4. 온도가 특정 값 이상으로 올라가면 알림을 보내는 간단한 스크립트를 추가한다

프로메테우스 같은 모니터링 스택을 사용하는 경우에는 exporter가 커널 hwmon 정보를 수집하도록 설정해 대시보드에서 온도와 팬 속도를 함께 볼 수도 있다. 기본 원리는 sensors 명령과 동일하게 커널이 제공하는 센서 값을 읽어 오는 것이다.(Linux.com)

마무리

정리하자면 리눅스 서버에서 온도와 팬 속도를 확인하는 기본 흐름은 다음과 같다.

  1. 패키지 관리자로 lm-sensors 설치
  2. sensors-detect 실행해 센서 칩 탐색
  3. sensors 명령으로 온도와 팬 속도 확인
  4. watch와 스크립트를 이용해 실시간 모니터링과 알림 체계 구축

이 네 가지를 한 번만 제대로 세팅해 두면, 이후에는 단순한 명령 몇 줄로 서버 상태를 빠르게 점검할 수 있다. 특히 24시간 돌아가는 서버나 랙에 여러 대가 들어간 환경이라면 lm-sensors는 필수에 가까운 도구라고 봐도 된다.