Trouble Shooting

Supermicro 서버 IPMI 설정 및 팬 제어 가이드

Somaz 2026. 1. 20. 00:07
728x90
반응형

Overview

 

서버 관리에서 하드웨어 모니터링과 원격 관리는 필수적인 요소다. 특히 Supermicro 서버의 경우 IPMI(Intelligent Platform Management Interface)를 통해 강력한 하드웨어 관리 기능을 제공한다.

 

이번 글에서는 실제 서버 환경에서 IPMI 설정과 팬 제어를 시도했던 과정을 단계별로 살펴보고, 각 단계에서 마주친 문제점과 해결 방법을 공유하겠다.

 

 

 

 

 


 

 

 

Supermicro 서버 IPMI 설정 및 팬 제어 가이드

 

서버 환경 확인

먼저 서버의 기본 정보를 확인해보았다.

sensors
... (정상적인 온도 출력) ...

sensors | grep -i fan
# 아무런 결과도 나오지 않음

sudo pwmconfig
# pwmconfig version 3.6.0
...
/usr/sbin/pwmconfig: There are no pwm-capable sensor modules installed
  • sensors가 팬 속도 정보를 보여주지 않았고, pwmconfig는 "pwm-capable sensor modules이 없다"는 메시지를 반환했다.
  • 이는 운영체제(소프트웨어)가 팬을 직접 제어할 수 있는 하드웨어 인터페이스를 찾지 못했다는 의미이다.
  • 대부분의 엔터프라이즈 서버는 BMC(Baseboard Management Controller) 칩을 통해 팬, 전원, 온도 등을 관리하며, 이 BMC는 IPMI 프로토콜을 사용한다.
  • 즉, 팬 제어가 소프트웨어가 아닌 하드웨어 레벨에서 이루어지고 있었던 것이다.

 

 

 

 

IPMI를 통한 하드웨어 정보 확인

서버급 하드웨어에서는 IPMI를 통해 더 정확한 하드웨어 정보를 얻을 수 있다.

sudo ipmitool sdr list | grep -i fan
...
FAN1             | no reading        | ns
FAN2             | 3360 RPM          | ok
FANA             | 2240 RPM          | ok
FANB             | 2100 RPM          | ok
FANC             | no reading        | ns

sudo ipmitool sensor list | grep -i fan
...
FAN1             | na         |            | na    | na        | na        | na        | na        | na        | na        
FAN2             | 3220.000   | RPM        | ok    | na        | 420.000   | na        | na        | na        | na        
FANA             | 2240.000   | RPM        | ok    | na        | 420.000   | na        | na        | na        | na        
FANB             | 2100.000   | RPM        | ok    | na        | 420.000   | na        | na        | na        | na        
FANC             | na         |            | na    | na        | na        | na        | na        | na        | na

 

 

 

IPMI를 통해 확인한 팬 정보는 다음과 같았다.

  • FAN1: 측정값 없음 (no reading)
  • FAN2: 약 2800-3220 RPM
  • FANA: 약 1400-2240 RPM
  • FANB: 약 1400-2100 RPM
  • FANC: 측정값 없음 (no reading)

 

 

IPMI 네트워크 설정 및 웹 접근 활성화

 

IPMI 네트워크 정보 확인

sudo ipmitool lan print 1
...
Set in Progress         : Set Complete
Auth Type Support       : NONE MD2 MD5 PASSWORD 
Auth Type Enable        : Callback : MD2 MD5 PASSWORD 
                        : User     : MD2 MD5 PASSWORD 
                        : Operator : MD2 MD5 PASSWORD 
                        : Admin    : MD2 MD5 PASSWORD 
                        : OEM      : MD2 MD5 PASSWORD 
IP Address Source       : Static Address
IP Address              : 10.10.10.14
Subnet Mask             : 255.255.255.0
MAC Address             : 90:5a:08:74:a9:13
SNMP Community String   : public
IP Header               : TTL=0x00 Flags=0x00 Precedence=0x00 TOS=0x00
BMC ARP Control         : ARP Responses Enabled, Gratuitous ARP Disabled
Default Gateway IP      : 10.10.10.1
Default Gateway MAC     : 00:00:00:00:00:00
Backup Gateway IP       : 0.0.0.0
Backup Gateway MAC      : 00:00:00:00:00:00
802.1q VLAN ID          : Disabled
802.1q VLAN Priority    : 0
RMCP+ Cipher Suites     : 3,17
Cipher Suite Priv Max   : aaXXXXXXXXXXXXX
                        :     X=Cipher Suite Unused
                        :     c=CALLBACK
                        :     u=USER
                        :     o=OPERATOR
                        :     a=ADMIN
                        :     O=OEM
Bad Password Threshold  : 3
Invalid password disable: yes
Attempt Count Reset Int.: 300
User Lockout Interval   : 300

 

 

서버의 BMC는 다음과 같이 설정되어 있었다.

  • IP 주소: 10.10.10.14
  • 서브넷 마스크: 255.255.255.0
  • MAC 주소: 90:5a:08:74:a9:13

 

 

 

사용자 계정 웹 접근 활성화

IPMI 웹 인터페이스에 접근하기 위해 기존 계정들의 웹 접근을 활성화했다.

sudo ipmitool user list 1
ID  Name             Callin  Link Auth  IPMI Msg   Channel Priv Limit
1                    true    false      false      Unknown (0x00)
2   ADMIN            false   false      true       ADMINISTRATOR
3   somazxc          true    false      true       ADMINISTRATOR
4   fwupd            true    false      false      Unknown (0x00)
# ADMIN 계정의 웹 접근 활성화
sudo ipmitool channel setaccess 1 2 link=on ipmi=on callin=on privilege=4

# somazxc 계정의 웹 접근도 활성화
sudo ipmitool channel setaccess 1 3 link=on ipmi=on callin=on privilege=4

 

 

확인해본다.

sudo ipmitool user list 1
ID  Name             Callin  Link Auth  IPMI Msg   Channel Priv Limit
1                    true    false      false      Unknown (0x00)
2   ADMIN            true    true       true       ADMINISTRATOR
3   somazxc          true    true       true       ADMINISTRATOR
4   fwupd            true    false      false      Unknown (0x00)

 

 

 

BMC 재시작과 안정성 문제

 

BMC 재시작 시도

설정 변경사항을 적용하기 위해 BMC를 재시작했다.

sudo ipmitool mc reset warm

 

 

 

재시작 후 불안정성

팬 속도를 조절하기 위해 몇 가지 IPMI 명령어를 시도했지만, `Unable to send RAW command` 와 같은 오류가 발생했다. 이는 IPMI 컨트롤러 자체에 일시적인 문제가 있거나 통신이 원활하지 않다는 신호였다.

sudo ipmitool mc info
Get Device ID command failed: Unspecified error

 

 

`mc reset warm` 명령어로 컨트롤러를 재시작했지만 문제가 해결되지 않았다. 그러다가 IPMI 통신을 초기화하는 raw 명령어를 발견하고 실행했다.

sudo ipmitool raw 0x06 0x02
sudo ipmitool mc info
Device ID          : 32
...
Device ID                 : 32
Device Revision           : 1
Firmware Revision         : 1.03
IPMI Version              : 2.0
Manufacturer ID           : 10876
Manufacturer Name         : Supermicro
Product ID                : 7290 (0x1c7a)
Product Name              : Unknown (0x1C7A)
Device Available          : yes
Provides Device SDRs      : no
Additional Device Support :
    Sensor Device
    SDR Repository Device
    SEL Device
    FRU Inventory Device
    IPMB Event Receiver
    IPMB Event Generator
    Chassis Device
Aux Firmware Rev Info     : 
    0x05
    0x03
    0x00
    0x00
  • 명령어를 실행한 후 IPMI 컨트롤러가 정상적으로 응답하기 시작했다. Supermicro 서버의 경우, 이 raw 명령어가 내부 통신 문제를 해결하는 데 효과적이었던 것으로 보인다.

 

 

 

최종 결과: 팬 소음의 감소

IPMI 컨트롤러와의 통신을 정상화한 후 다시 팬 상태를 확인했다.

sudo ipmitool sdr list | grep -i fan
FAN1             | no reading      | ns
FAN2             | 2800 RPM        | ok
FANA             | 1400 RPM        | ok
FANB             | 1400 RPM        | ok
FANC             | no reading      | ns

 

놀랍게도 FAN2, FANA, FANB의 RPM이 초기 상태보다 훨씬 낮아진 것을 확인할 수 있었다. 팬 소음은 즉시 확연히 줄어들었다.

이는 IPMI 컨트롤러가 통신 문제 해결 후 자동 모드로 돌아가서, 현재 시스템 온도에 맞춰 필요한 만큼만 팬 속도를 조절하기 시작했기 때문이다.

 

 

 

 

센서 오류로 인한 팬 제어 문제 해결

 

문제 발견: 이중 온도 센서의 모순

IPMI 통신을 정상화한 후에도 팬 소음이 계속 지속되는 상황이 발생했다. 온도를 다시 확인해보니 흥미로운 사실을 발견할 수 있었다.

 

 

 

Linux sensors 출력

sensors
nct6798-isa-0a30
Adapter: ISA adapter
...
CPUTIN:                +127.5°C  (high = +80.0°C, hyst = +75.0°C)  ALARM  sensor = CPU diode
...

coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +30.0°C  (high = +87.0°C, crit = +95.0°C)
Core 0:        +28.0°C  (high = +87.0°C, crit = +95.0°C)
Core 1:        +26.0°C  (high = +87.0°C, crit = +95.0°C)

 

 

IPMI 센서 출력

sudo ipmitool sdr type temperature
CPU Temp         | 01h | ok  |  3.1 | 29 degrees C
PCH Temp         | 0Ah | ok  |  7.1 | 38 degrees C
System Temp      | 0Bh | ok  |  7.2 | 27 degrees C

 

 

두 시스템이 완전히 다른 CPU 온도를 보고하고 있었다.

  • nct6798 센서: 127.5°C (과열 상태)
  • IPMI 센서: 29°C (정상 상태)
  • coretemp 센서: 26-30°C (정상 상태)

 

문제 분석

이는 메인보드의 nct6798 센서 칩이 CPU 온도를 잘못 읽고 있는 상황이었다. 시스템의 팬 제어 로직이 이 잘못된 127.5°C 값을 기준으로 작동하여 팬을 최대 속도로 돌리고 있었던 것이다.

 

실제로는

  • CPU 온도: 정상 (26-30°C)
  • 시스템 부하: 낮음
  • 팬 속도: 불필요하게 최대

 

 

해결 방법 1: 센서 설정 파일로 무시

 

가장 깔끔한 해결책은 잘못된 센서를 무시하도록 설정하는 것이다.

sudo nano /etc/sensors.d/supermicro.conf

 

 

 

설정 파일에 다음 내용을 추가한다.

chip "nct6798-*"
    # CPUTIN 센서 무시 (잘못된 127.5°C 값 출력)
    ignore temp2
    
    # 필요시 다른 문제 센서도 무시
    ignore temp1

 

 

설정을 적용한다.

sudo sensors -s

 

 

 

해결 방법 2: 모듈 완전 비활성화

 

 

 

더 확실한 방법은 문제가 있는 센서 모듈을 아예 비활성화하는 것이다.

sudo nano /etc/modprobe.d/blacklist-sensors.conf

 

 

 

다음 내용을 추가한다

# nct6798 센서 모듈 비활성화 (잘못된 온도 값 출력)
blacklist nct6798

 

 

 

현재 로드된 모듈을 제거한다.

sudo modprobe -r nct6798

 

 

결과 확인

설정 적용 후 sensors 명령어를 다시 실행하면

sensors
# nct6798 섹션에서 CPUTIN: +127.5°C 라인이 사라짐
# 또는 nct6798 섹션 전체가 사라짐 (모듈 비활성화 시)

coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +30.0°C  (high = +87.0°C, crit = +95.0°C)
# 정상적인 온도만 표시됨

 

 

 

팬 상태 재확인

sudo ipmitool sdr type fan
FAN1             | 41h | ns  | 29.1 | No Reading
FAN2             | 42h | ok  | 29.2 | 2800 RPM  # 이전 3360 RPM에서 감소
FANA             | 47h | ok  | 29.7 | 1400 RPM  # 이전 2100 RPM에서 감소  
FANB             | 48h | ok  | 29.8 | 1400 RPM  # 이전 2100 RPM에서 감소
FANC             | 49h | ns  | 29.9 | No Reading

 

 

결과

  1. 이중 센서 시스템: 최신 서버는 여러 온도 센서를 가지고 있으며, 각각 다른 값을 보고할 수 있다.
  2. 센서 우선순위: 시스템이 어떤 센서를 팬 제어 기준으로 사용하는지 파악하는 것이 중요하다.
  3. 하드웨어 vs 소프트웨어: IPMI(하드웨어)와 lm-sensors(소프트웨어)가 서로 다른 센서에서 정보를 가져올 수 있다.
  4. 선택적 비활성화: 잘못된 센서는 무시하고 정확한 센서만 사용하도록 설정할 수 있다.

 

이 경험을 통해 서버 관리에서는 단순히 명령어 하나로 해결되지 않는 복합적인 문제들이 존재하며, 각 센서의 역할과 시스템 간의 상호작용을 이해하는 것이 얼마나 중요한지 알 수 있었다.

 

 

 

 

 


 

 

 

 

 

추가 내용

 

Fan Mode 변경

 

  • sensors-detect가 Nuvoton NCT6798D Super IO Sensors를 찾았음
  • 이 칩은 팬 제어가 가능한 하드웨어 모니터링 칩

 

sudo sensors-detect
# sensors-detect version 3.6.0
# System: Supermicro Super Server [0123456789]
# Board: Supermicro X13SRA-TF
# Kernel: 5.15.0-153-generic x86_64
# Processor: Intel(R) Xeon(R) w5-2465X (6/143/8)

This program will help you determine which kernel modules you need
to load to use lm_sensors most effectively. It is generally safe
and recommended to accept the default answers to all questions,
unless you know what you're doing.

Some south bridges, CPUs or memory controllers contain embedded sensors.
Do you want to scan for them? This is totally safe. (YES/no):  yes  
Module cpuid loaded successfully.
Silicon Integrated Systems SIS5595...                       No
VIA VT82C686 Integrated Sensors...                          No
VIA VT8231 Integrated Sensors...                            No
AMD K8 thermal sensors...                                   No
AMD Family 10h thermal sensors...                           No
AMD Family 11h thermal sensors...                           No
AMD Family 12h and 14h thermal sensors...                   No
AMD Family 15h thermal sensors...                           No
AMD Family 16h thermal sensors...                           No
AMD Family 17h thermal sensors...                           No
AMD Family 15h power sensors...                             No
AMD Family 16h power sensors...                             No
Hygon Family 18h thermal sensors...                         No
Intel digital thermal sensor...                             Success!
    (driver `coretemp')
Intel AMB FB-DIMM thermal sensor...                         No
Intel 5500/5520/X58 thermal sensor...                       No
VIA C7 thermal sensor...                                    No
VIA Nano thermal sensor...                                  No

Some Super I/O chips contain embedded sensors. We have to write to
standard I/O ports to probe them. This is usually safe.
Do you want to scan for Super I/O sensors? (YES/no): yes
Probing for Super-I/O at 0x2e/0x2f
Trying family `National Semiconductor/ITE'...               No
Trying family `SMSC'...                                     No
Trying family `VIA/Winbond/Nuvoton/Fintek'...               Yes
Found `Nuvoton NCT6798D Super IO Sensors'                   Success!
    (address 0xa30, driver `nct6775')

 

 

Module을 로드한다.

sudo modprobe nct6775
sudo modprobe coretemp

 

 

Sensors 명령어로 확인해본다.

sensors

nct6798-isa-0a30
Adapter: ISA adapter
in0:                     1.83 V  (min =  +0.00 V, max =  +1.74 V)  ALARM
in1:                     1.25 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in2:                     3.34 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in3:                     3.36 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in4:                     1.80 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in5:                   1000.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM
in6:                     1.81 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in7:                     3.34 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in8:                     3.04 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in9:                   496.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM
in10:                  896.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM
in11:                  576.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM
in12:                    1.06 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in13:                    1.08 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in14:                    1.06 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
fan1:                     0 RPM  (min =    0 RPM)
fan2:                     0 RPM  (min =    0 RPM)
fan3:                     0 RPM  (min =    0 RPM)
fan4:                     0 RPM  (min =    0 RPM)
fan5:                     0 RPM  (min =    0 RPM)
fan7:                     0 RPM  (min =    0 RPM)
SYSTIN:                 +29.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor
CPUTIN:                +127.5°C  (high = +80.0°C, hyst = +75.0°C)  ALARM  sensor = CPU diode
AUXTIN0:                -23.5°C    sensor = thermistor
AUXTIN1:                -23.0°C    sensor = thermistor
AUXTIN2:                +18.0°C    sensor = thermistor
AUXTIN3:                +23.0°C    sensor = thermistor
PCH_CHIP_CPU_MAX_TEMP:   +0.0°C  
PCH_CHIP_TEMP:           +0.0°C  
PCH_CPU_TEMP:            +0.0°C  
PCH_MCH_TEMP:            +0.0°C  
intrusion0:            ALARM
intrusion1:            ALARM
beep_enable:           disabled

eno2-pci-0500
Adapter: PCI adapter
PHY Temperature:  +43.0°C  
MAC Temperature:  +43.0°C  

coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +30.0°C  (high = +87.0°C, crit = +95.0°C)
Core 0:        +27.0°C  (high = +87.0°C, crit = +95.0°C)
Core 1:        +26.0°C  (high = +87.0°C, crit = +95.0°C)
Core 2:        +30.0°C  (high = +87.0°C, crit = +95.0°C)
Core 3:        +26.0°C  (high = +87.0°C, crit = +95.0°C)
Core 4:        +26.0°C  (high = +87.0°C, crit = +95.0°C)
Core 5:        +28.0°C  (high = +87.0°C, crit = +95.0°C)
Core 6:        +28.0°C  (high = +87.0°C, crit = +95.0°C)
Core 7:        +26.0°C  (high = +87.0°C, crit = +95.0°C)
Core 8:        +27.0°C  (high = +87.0°C, crit = +95.0°C)
Core 9:        +25.0°C  (high = +87.0°C, crit = +95.0°C)
Core 10:       +28.0°C  (high = +87.0°C, crit = +95.0°C)
Core 11:       +27.0°C  (high = +87.0°C, crit = +95.0°C)
Core 12:       +25.0°C  (high = +87.0°C, crit = +95.0°C)
Core 13:       +27.0°C  (high = +87.0°C, crit = +95.0°C)
Core 14:       +28.0°C  (high = +87.0°C, crit = +95.0°C)
Core 15:       +28.0°C  (high = +87.0°C, crit = +95.0°C)

 

 

IPMI 팬 모드 변경한다.

sudo ipmitool raw 0x30 0x45 0x00
02

sudo ipmitool raw 0x30 0x45 0x01 0x00

sudo ipmitool raw 0x30 0x45 0x00
00
  • `0x02 (Optimal)` 에서 `0x00 (Standard)` 로 성공적으로 변경됨

 

 

현재 상태 분석할 수 있다.

sudo ipmitool raw 0x30 0x70 0x66 0x00  # 결과: 2f
sudo ipmitool raw 0x30 0x45 0x00        # 결과: 00

 

  • `0x2f` (47 decimal) = 현재 팬 속도가 약 **18%**로 설정되어 있음
  • `0x00` = Standard 자동 모드가 아직 활성화되어 있다.

 

 

 

 

또는 수동 모드로 변경도 가능하다.

# 12% 속도 (0x20 = 32 decimal)
sudo ipmitool raw 0x30 0x70 0x66 0x01 0x00 0x20

# 20% 속도 (0x33 = 51 decimal)
sudo ipmitool raw 0x30 0x70 0x66 0x01 0x00 0x33

# 25% 속도 (0x40 = 64 decimal) 
sudo ipmitool raw 0x30 0x70 0x66 0x01 0x00 0x40

# 30% 속도 (0x4D = 77 decimal)
sudo ipmitool raw 0x30 0x70 0x66 0x01 0x00 0x4D

 

 

다시 자동모드로 변경하는 방법은 아래와 같다.

# 자동 팬 제어 모드로 복원
sudo ipmitool raw 0x30 0x30 0x01 0x01

# 그 다음 Standard 모드로 설정
sudo ipmitool raw 0x30 0x45 0x01 0x00

# 현재 모드 확인
sudo ipmitool raw 0x30 0x45 0x00

 

 

 

 


 

 

 

 

마무리: 하드웨어 관리의 중요성

 

`lm-sensors` 나 `fancontrol` 로 해결되지 않는 팬 소음은 대부분 하드웨어 레벨의 문제이며, 이럴 땐 IPMI(또는 벤더사에서 제공하는 관리 도구)를 사용해야 한다.

 

이 경험을 통해 얻은 교훈은 다음과 같다.

  • IPMI 우선: 서버 팬 제어는 소프트웨어보다 IPMI를 통한 하드웨어 제어가 기본 방식일 수 있다.
  • IPMI 통신 점검: `ipmitool` 을 사용해 `mc info` 가 정상 작동하는지 확인하고, 문제가 있다면 초기화 명령어를 시도하자.
  • 팬 속도 자동 조절: IPMI 통신이 정상화되면 대부분의 BMC는 시스템 부하에 따라 팬 속도를 자동으로 최적화한다.

 

최종적으로 잘못된 nct6798 센서를 비활성화한 후

  • 팬 소음이 현저히 감소
  • CPU 온도 모니터링은 정확한 IPMI와 coretemp 센서로 유지
  • 시스템 안정성과 사용자 경험 모두 개선

서버 환경에서는 이처럼 하드웨어와 소프트웨어가 복합적으로 작용하는 문제들이 자주 발생한다. 각 컴포넌트의 역할을 정확히 파악하고 문제의 근본 원인을 찾아 해결하는 것이 효과적인 서버 관리의 핵심이다.

 

 

 


Reference

https://www.supermicro.com/en/

https://www.intel.com/content/www/us/en/servers/ipmi/ipmi-second-gen-interface-spec-v2-rev1-1.html

https://linux.die.net/man/1/ipmitool

https://hwmon.wiki.kernel.org/lm_sensors

728x90
반응형