IPMI는 표준화된 메세지 기반의 하드웨어 관리 interface로, 서버나 장비의 전원 상태, 하드웨어 이상 유무등을 네트워크를 통해 원격으로 모니터링하거나, 직접 제어할 수 있는 기능을 제공한다. IPMI 기능이 탑재된 메인보드나 BMC(Baseboard Management Controller)를 이용하여 운영체제와는 독립적으로 하드웨어를 직접 관리할 수 있다.
즉, 서버 전원의 on/off 여부와 상관없이, 운영체제가 제대로 동작하지 않아도, 기타 문제가 생겨 접속이 불가하더라도 IPMI로 조작할 수 있다. 당연히 모든 문제가 발생해도 IPMI를 사용할 수 있다는 것을 의미하지는 않으나, BMC에 문제가 생기지 않고 서버에 전력이 공급되고 있다면, 대체로 IPMI를 사용할 수 있다.
→ 물리적 접근이 어려운 상황에서의 관리 편의성
서버 랙 셋업, 네트워크 설치, OS 설치 및 IP 할당과 같은 서버 랙 세팅을 해야할 경우, 문제가 발생할 때마다 서버실을 직접 방문해 수정해야한다. 또한, 여러 노드에 OS를 설치해야할 때, 각 노드에 모니터를 연결하고, 부팅 USB를 꽂고, 키보드를 직접 연결한 후 OS를 설치해야하는 번거로움이 있다.이 번거로움을 IPMI는 해결한다. 서버에 접근할 때 물리적인 접근이 필요하지 않게 IPMI는 도와준다.
전원 제어
서버가 응답하지 않는 상황에도 물리적으로 서버실에 갈 필요없이 IPMI를 통해 재부팅 명령을 내릴 수 있다.
원격 전원 제어가 가능하다.
콘솔 접근
서버 앞에 직접 모니터와 키보드, 마우스를 연결한 것처럼 원격에서 서버 화면을 보고, 서버를 조작할 수 있다.
원격 Media Mount가 가능하기 때문에, 내 로컬 PC에 존재하는 파일(ex. iso)을 서버의 가상 드라이브로 인식시켜 운영체제 설치나 복구를 진행할 수 있다.
하드웨어 모니터링
CPU 온도, 팬 속도, 전압, 전력 사용량과 같은 정보를 실시간으로 모니터링 할 수 있다.
하드웨어 오류나 일정 온도 이상등의 이벤트 발생시 로그 확인이 가능하고, 미리 지정된 관리자에게 알림을 보낼 수 있다.
펌 웨어/ BIOS 관리
BMC나 BIOS를 최신 버전으로 업데이트 하거나, 설정을 변경할 수 있다.
https://charliekim.tistory.com/6 를 참고하여 설치를 진행했다.

우선 IPMI를 이전에 만들어둔 vm 환경에 설치해서 확인해보려고 한다. 하지만, vm이기때문에 당연히 물리적 하드웨어가 조회되지 않아 IPMI를 설치할 수 없는 환경이다.
이 경우에는 OpenIPMI의 ipmisim을 사용하거나, VirtualBMC(vBMC)를 사용하거나, QEMU/KVM IPMI 애뮬레이션을 통해 IPMI를 소프트웨어적으로 시뮬레이션 할 수 있다고 한다.
vBMC 는 리눅스 KVM 기반 가상머신에 대해 가짜 BMC 기능 (IPMI 프로토콜 제공)을 구현해준다.
보통 vBMC이 사용되는 사례는 다음과 같다.
베어메탈 프로비전이 기능 개발 및 테스트에 활용하는 Openstack Ironic 개발 및 테스트 진행
실제 장비 없이 BMC(IPMI) 인터페이스를 연동해야하는 IPMI 자동화 실습
교육용, 데모, PoC 환경에서 사용
가상 환경에서 자동화된 인프라 테스트 진행시 사용
필자의 경우 VirtualBMC(vBMC)을 사용해 실습을 진행하였다.
기본적으로 설치해야하는 설치 패키지
sudo apt update
sudo apt install python3-pip python3-venv ipmitool
sudo apt install pkg-config
# 하이퍼 바이저 설치
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager
python 가상환경 생성 및 활성화
시스템 영향 최소화를 목적으로 가상환경을 생성해 진행한다.
# python 가상환경 생성 (시스템 영향 최소화를 목적으로)
python3 -m venv --system-site-packages /opt/virtualbmc
# python 가상환경 활성화
source /opt/virtualbmc/bin/activate
가상환경 내부에 virtualBMC를 설치
# 가상환경 안에 virtualBMC 설치
/opt/virtualbmc/bin/pip3 install virtualbmc
# 제대로 설치되었는지 확인
vbmc --version
하이퍼 바이저 상태 확인
# 서비스 시작
sudo systemctl start libvirtd
# 부팅 시 자동 시작 설정
sudo systemctl enable libvirtd
# 상태 다시 확인
sudo systemctl status libvirtd
실습용 VM (IPMI를 설치할 VM) 생성 및 vbmc에 등록
# 실습용 VM 생성하기
virt-install --name hee \
--ram 128 \
--disk none \
--boot network \
--os-variant ubuntu22.04 \
--graphics none \
--dry-run --print-xml > hee.xml
# XML 설정을 바탕으로 VM 등록
virsh define hee.xml
# 현재 사용중인 가상머신을 vbmc에 등록
vbmc add hee --port 6230 --username admin --password admin
vBMC 활성화
# BMC 활성화
vbmc start hee
# 리스트 확인
vbmc list
vbmc list에 실습용으로 생성한 vm이 보이면 준비 완료 !

ipmitool을 설치한다.
sudo apt install ipmitool -y
전원 상태 확인, 전원 켜기 끄기
# 1. 현재 전원 상태 확인 (아마 off일 겁니다)
ipmitool -I lanplus -H 127.0.0.1 -p 6230 -U admin -P admin chassis power status
# 2. 전원 켜기
ipmitool -I lanplus -H 127.0.0.1 -p 6230 -U admin -P admin chassis power on
# 3. 다시 상태 확인 (on으로 바뀌었는지 확인!)
ipmitool -I lanplus -H 127.0.0.1 -p 6230 -U admin -P admin chassis power status

vBMC는 가상으로 BMC 시뮬레이션을 진행한 것이기 때문에 아래의 실습은 진행이 불가하였다. (값을 가져올 수 없으므로) 다만, 실제 상황에서는 사용이 가능하여 자주 사용되는 명령어를 몇가지 정리해보았다.
하드웨어 센서 모니터링 (온도, 팬 속도, 전압 상태)
- 서버 내부의 온도, 팬 속도, 전압 상태를 실시간으로 확인할 수 있음.
ipmitool -I lanplus -H 127.0.0.1 -p 6230 -U admin -P admin sdr list
시스템 이벤트 로그 확인 (SEL)
- 하드웨어 수준에서 발생한 모든 경고 기록을 확인할 수 있음. OS가 부팅되기 전의 에러도 기록됨.
ipmitool -I lanplus -H 127.0.0.1 -p 6230 -U admin -P admin sel list
시리얼 터미널 접속 (Serial Over LAN)
- 서버에 모니터 연결 안해도 네트워크를 통해 텍스트 기반의 부팅 화면이나 콘솔을 직접 확인 가능
ipmitool -I lanplus -H 127.0.0.1 -p 6230 -U admin -P admin sol activate
식별용 LED 제어
- 수많은 랙 중 작업해야할 장비가 무엇인지 알려줌
ipmitool -I lanplus -H 127.0.0.1 -p 6230 -U admin -P admin chassis identify force