検索

PowerEdge R740のファンを静かにする。

PowerEdge R740(以後PER740と記載)を少し前に購入した。Aamzonやらヤフオクやらで買い漁ったサードパーティ製の拡張カードやHDDをつけるとファンがめちゃくちゃ煩くなる。今回はこのファンを静かにする方法を書き記しておく。

これはHPEのサーバ製品とかでもよくある挙動。DELLの製品では「Third-Party PCIe Card Default Cooling Response Logic」と呼ぶらしく古いバージョンのiDRACならIPMIコマンドで無効にできたがPER740が搭載しているiDRAC 9以降はそのコマンドが封印され、できなくなっている模様。

ただしiDRAC9のファームウェア 3.30.30.30以下ならまだファンを手動でコントロールするコマンドが残っているらしく、PER740上で動いてるOSや外部からiDRACを操作することでファン制御を実現する。

有志の方がそれを実現するためのDockerイメージを作っており、サンプルのdocker-composeも用意されていたのでそれを参考に環境を構築した。

環境

  • ハードウェア: PowerEdge R740
  • IPMI: iDRAC9 ファームウェア 3.30.30.30
  • ホストOS: Proxmox VE 8.2.4

環境構築

ホストOSはProxmoxVEを利用している。debianベースなのでホスト上でそのままdocker動かしてもいいけど、ハイパーバイザー的なOSの上でそういったことは心理的にあまりやりたくないので、LXCの中にdockerの実行環境を作ることにした。

LXCを作成

とりあえず、特権コンテナとしてdebian12のLXCを用意。ネストは有効。

設定ファイル(/etc/pve/lxc/VMID.conf)には以下のようにdev0: /dev/ipmi0という行を追加してipmi0というデバイスファイルをパススルーする。これでゲストのLXCがこのファイルを用いて直接iDRACを操作可能になるっぽい。

TCP/IP通信でiDRACを操作するのかと思ったが、ホストOSが自身の筐体にのっかってるIPMIに直接アクセスする仕組みがるみたい。

arch: amd64
cores: 2
dev0: /dev/ipmi0
features: nesting=1
hostname: hostname
memory: 512
net0: name=eth0,bridge=vmbr0,firewall=1,hwaddr=BC:24:11:A5:FA:55,ip=dhcp,type=veth
onboot: 1
ostype: debian
rootfs: local-zfs:subvol-101-disk-0,size=8G
swap: 512Code language: plaintext (plaintext)

dcokerの実行環境用意

debian12で使える標準のリポジトリのdockerは古いのしか導入できないので、Docekr Docsで紹介されている手順に従ってdockerを導入。

任意のディレクトリでdocker-composeを作成して実行する

docker-compose.ymlを作る

services:
  Dell_iDRAC_fan_controller:
    image: tigerblue77/dell_idrac_fan_controller:latest
    container_name: Dell_iDRAC_fan_controller
    restart: unless-stopped
    environment:
      - IDRAC_HOST=local
      - FAN_SPEED=20
      - CPU_TEMPERATURE_THRESHOLD=50
      - CHECK_INTERVAL=60
        - DISABLE_THIRD_PARTY_PCIE_CARD_DELL_DEFAULT_COOLING_RESPONSE=false
    devices:
      - /dev/ipmi0:/dev/ipmi0:rwCode language: YAML (yaml)

あとはdcoker-compose.ymlを作ったディレクトリの中で以下のようにコンテナをビルド and 起動させればおk

docker compsoe up -d

参考文献