自宅ラックでは飽き足りず、自作ラックをした

自宅ラックでは飽き足りず、自作ラックをした

Supermicro E300-9D-4CN8TP を購入したことで、 Networkラック配下に静音サーバーラックを作成することにした。

で書いてる通り、サーバーとスイッチを購入して新しい仮想基盤を作成していってる。 当初は 壁掛け型4Uウォールラック 棚板付属 奥行き調整可能 - サーバーラック | 日本 に実装予定だったが、 E300 に搭載されている 40mmx28mm 8.5krpm FAN が仕様上よりおもったよりうるさく、、また仮組みの状態でのMemoryテストで灼熱化していたためエアフローの改善も含め取り組む必要が出てきた。

最初の仮組み

設計

こういう物を作成するときはできるだけシュミレーションして制作しないと痛い目をみるため、 CAD を使って設計した。 最近は 3D プリンターの普及で CAD を使う人が増えた気がするが 3D CAD は当方は使えないため、諦めて JW CAD をしようすることにしている。

このぐらいの物であれば毎回のことなので 1時間ぐらいで外枠、3時間ぐらいで結構固まるぐらい担ってきた。そしてここで部材の販売サイズなどを考慮してカット図を作成することホームセンターでカットしてもらうときの指示書を省略している。 毎回、ホームセンターで直線のカットはお願いしているが部材からのカット図面を出せば大体はそれ通りにカットしてくれるので楽です。また、事前に部材の最大サイズと枚数も割り出せるので少し小さい部材を複数購入するより大きい部材から指定寸法でカットしてもらったほうがかなり安く済むことがわかっています。

Image from iOS (1).jpg

電装

今回の設計では、 FAN 5個をホットアイル(ラック背面)の温度で PWM 制御することで温度管理を実現するため、 FAN コントローラーが必要だった。 最初は M5Stack Core2 を利用して自作するつもりだったが PWM 制御を時前でプログラミングすること、電子回路が少しわかるとは言え パルス信号などを正しく確認する方法をゆうしてないため PC などに内蔵する FAN コントローラーと転がっていた Tinker Board S を組み合わせて FAN 制御を実現した。

一部 FAN コントローラーの配置の問題で 延長ケーブルをイチから自作して 1m の延長ケーブルを自作した。スリーブ、カシメ、端子、クロージャーほぼ全て千石電子で購入できるので手軽に制作が完了

image_from_ios (5).jpg

liquidctl

Corsair Commander Pro を購入し liquidctl で回転数制御することで実装した。

liquidctl のレポジトリ配下に Prometheus Exporter が存在するためそれを同梱して設定し Zabbix で情報を収集、監視する実装とした。

Ref:

# 依存関係
apt install \
    libhidapi-hidraw0 \
    libhidapi-libusb0 \
    python3-docopt \
    python3-hid \
    python3-smbus \
    python3-usb \
    python3.9-dev

pip3 install liquidctl
apt install uhubctl
liquidctl status
liquidctl status --json | jq
  • /etc/systemd/system/liquidcfg.service
[Unit]
Description=AIO startup service

[Service]
Type=oneshot
ExecStart=liquidctl initialize all
ExecStart=liquidctl set fan1 speed 25 400 30 800 32 1000 35 1250 40 1500 --temperature-sensor 2
ExecStart=liquidctl set fan2 speed 25 400 30 800 32 1000 35 1250 40 1500 --temperature-sensor 2
ExecStart=liquidctl set fan3 speed 25 400 30 1100 32 1400 35 1600 40 2200 --temperature-sensor 2
ExecStart=liquidctl set fan4 speed 25 400 30 1100 32 1400 35 1600 40 2200 --temperature-sensor 2
ExecStart=liquidctl set fan5 speed 25 400 30 1100 32 1400 35 1600 40 2200 --temperature-sensor 2

[Install]
WantedBy=default.target
systemctl daemon-reload
systemctl restart liquidcfg
systemctl enable liquidcfg
curl -o /usr/local/bin/prometheus-liquidctl-exporter https://raw.githubusercontent.com/liquidctl/liquidctl/main/extra/prometheus-liquidctl-exporter
chmod +x /usr/local/bin/prometheus-liquidctl-exporter

pip3 install prometheus-client

/etc/systemd/system/liquidctl-exporter.service

[Unit]
Description=Prometheus liquidctl Exporter
After=network-online.target
StartLimitInterval=0

[Service]
Type=simple
ExecStart=/usr/local/bin/prometheus-liquidctl-exporter
SyslogIdentifier=liquidctl-exporter
Restart=always
RestartSec=1

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl restart liquidctl-exporter
systemctl enable liquidctl-exporter

最後に

DIY で自作ラックをしたわけだが、費用は約防音や板材その他の電装などを購入して約 30kほどかかった。 が、一番のポイントは仕事柄データセンターでの作業が程々に合って体感したことを設計に活かせたのはよかったと思う。

また、某所でオフィスエントランスなどに自社の製品がラックで実働展示兼PoCエリアになってる箇所があると思うがそこからの発想とロマンとして中が見える仕様としたかったため奮発して 5mm というかなり厚めのアクリルパネルを全面の蓋兼防音として採用した。基礎設計時は引き出し扉か横開きを検討していたが取り回しが悪いうえ、メンテナンス性が悪いのでボツとなり今の作りとなった。写真ではわかりにくいが下から吸われた外気が E300 のフロントに出て排気が上に上昇し全面の 80mm FAN 3機で吸い出される構造になっている。メンテナンスのため全面のアクリルパネルを空けると顕著に温度上昇するため正しくエアフローが組めていた嬉しかった。

image_from_ios (6).jpg