IPMI와 KVM-over-LAN

1.
DMA 거래를 위한 서버를 공급할 때 IPMI를 요구하는 경우가 있습니다. 서울IDC는 수도권 트레이더에게 접근성이 용이하지만 부산의 경우는 다릅니다. 거리때문에 조치를 하려면 시간이 필요합니다. 서버용으로 나오는 마더보드는 IPMI기능을 기본으로 탑재하고 있습니다. 다만 Xeon을 사용하기 때문에 속도에서 이익이 거의 없습니다. 데스크탑 마더보드(고사양 게임용)는 IPMI기능을 기본으로 지원하지 않고 특정한 보드만 지원합니다. 지원방식도 PCI방식의 IPMI카드를 설치하는 방식입니다. 이 경우에도 BIOS의 Server Mgnt 기능으로 지원하는 보트와 그렇지 않은 보드로 나뉩니다.

이번 작업을 하여야 하는 보드는 BIOS에서 IPMI를 지원하지 않는 보드입니다. 다만 제조사가 IPMI를 지원한다고 하여 IPMI Expansion Card를 설치하고 부팅하였습니다. 우선 CentOS에서 IPMI를 사용하기 위한 IPMITools를 설치하였습니다. 방식은 두가지입니다. 소스를 직접 컴파일하여 사용할 수도 있고 dnf와 같은 패키지관리기능을 이용하여 설치할 수 있습니다.

먼저 소스컴파일 과정입니다.

패키지를 설치한 후 부팅을 하고 커널모듈을 확인하였습니다. 아래와 같이 ipmi_si를 확인할 수 있습니다.

[vici@viciholdings ~]$ lsmod | grep ipmi
ipmi_si 69632 0
ipmi_devintf 20480 0
ipmi_msghandler 110592 2 ipmi_devintf,ipmi_si

그런데 ipmitool 명령어를 실행하면 오류가 발생합니다. 검색을 해보니까 IPMI와 관련한 서비스를 실행하라고 합니다.

다시 명령어를 실행하니까 오류가 발생합니다. 그래서 부팅할 때 로그를 확인하였습니다.

OS가 IPMI Driver를 인식하지 못하는 상황입니다. 이유를 확인하였습니다. BIOS 정보를 확인하는 dmidecode를 실행하였습니다. IPMI카드의 경우 type이 38입니다.

smallake~]$dmidecode | grep -A10 IPMI

을 하면 결과가 없습니다. BIOS정보에서는 IPMI가 없습니다. 반면 OS가 인식한 하드웨어정보를 보면 IPMI가 있습니다.

*-serial
description: IPMI Interface
product: ASPEED Technology, Inc.
vendor: ASPEED Technology, Inc.
physical id: 1
bus info: pci@0000:73:01.0
version: 01
width: 32 bits
clock: 33MHz
capabilities: pm msi kcs cap_list
configuration: driver=ipmi_si latency=0
resources: irq:0 memory:74000000-740fffff memory:74100000-7413ffff

결국 OS는 IPMI가 있어서 관련한 하드웨어에 접근하려고 하는데 BIOS로부터 IPMI정보를 받은 것이 없어서 인식하지 못한 것이 아닐까 추측합니다. 만약 BIOS에서 데이타를 가져오면 아래와 같은 결과이지 않을까 합니다.

Oct 10 21:51:22 hp-microserver kernel: ipmi message handler version 39.2
Oct 10 21:51:22 hp-microserver kernel: IPMI System Interface driver.
Oct 10 21:51:22 hp-microserver kernel: ipmi_si: Adding hardcoded-specified kcs state machine
Oct 10 21:51:22 hp-microserver kernel: ipmi_si: Trying hardcoded-specified kcs state machine at i/o address 0xca8, slave address 0x0, irq 0
Oct 10 21:51:23 hp-microserver kernel: ipmi: Found new BMC (man_id: 0x000001, prod_id: 0x3431, dev_id: 0x20)
Oct 10 21:51:23 hp-microserver kernel: IPMI kcs interface initialized

여기서 핵심은 I/O space(i/o address)정보인 듯 합니다. 구글링을 통해 몇 가지 시도를 해보았지만 IO정보를 확인할 수 없습니다. 아마도 고수는 아실 수 있지만.

2.
지원을 하지 않는가 의구심을 가졌지만 윈도우에서는 가능했다는 말을 듣고 확인을 해보았습니다. 같은 사양의 다른 서버에 윈도우10을 설치해서 작업을 진행하였습니다. 제가 예상한 작업은 윈도우상에서 IPMITool을 이용하여 IPMI설정을 하고 필요한 작업을 하는 것이었습니다. 윈도우에 설치하여야 하는 소프트웨어를 설치한 후 화면을 보았습니다. 가장 먼저 확인한 부분이 ‘네트워크설정’입니다.

다음으로 cmd를 실행하여 ipmitools.exe를 실행하였습니다. 예상과 다른 결과이지만 리눅스와 같은 결과입니다.

네트워크와 관련한 설정을 보면 AMI Ndis adatpor가 보입니다. 아마도 IPMI가 제공하는 랜 어댑터로 보입니다. 이를 이용하여 설정하려고 하지만 설정하더라도 동작하지 않습니다. 어떻게 네트워크를 설정하고 IPMI기능을 이용하였을까 최초 시험자에게 문의하였습니다. 간단하더군요. DHCP를 이용하였습니다.

저도 DHCP 내역을 보면 관련한 주소로 접근해보았습니다. 정상적으로 IPMI를 이용한 기능을 사용할 수 있었습니다.

IPMI와 관련한 Baseboard Management Controller(BMC) Chip을 만드는 Aspeed 제품소개서를 본 적이 있습니다. ARM Processor를 내장하고 있습니다. 이 말은 Intel/AMD 구조와는 완전히 다른 환경을 제공한다는 뜻입니다. 즉, 마더보드와 직접적으로 연결하여 원격관리를 위해 필요한 정보 및 관리를 할 수 있도록 하는 별도의 시스템이라는 뜻입니다. IPMITools와 같은 소프트웨어들은 OS내에서 직접적으로 관리하기 위한 또다른 환경입니다. OS에서 접근하지 못하더라도 IPMI기능을 사용할 수 있는 이유입니다.

BMC와 관련한 국책연구소 자료입니다. 기술을 이해하기 위함입니다.

Download (PDF, 1.44MB)

Leave a Comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.