香港机房电源与散热实战指南:香港服务器功耗估算、A/B 配比、风道改造与监控告警全流程(含参数表、CentOS 7 脚本与避坑清单)

凌晨 2:17,我站在柴湾某机房的冷通道里,顶灯刚被动静感应器点亮,风从地板送风口直往脸上灌。A 路 32A 机柜 PDU 的断路器刚刚“啪”地跳了,告警短信一串串地进来。我一眼看见两台新上架的 2U NVMe 节点风扇满速吼叫,交换机侧送风热得像电吹风。这不是第一次在香港碰到——楼层冷量和每柜供电其实够,但配比不均、风道短路、以及“名牌功耗”和“实测功耗”的错位,足以让任何一次扩容变成连环事故。
那一夜之后,我把电源与散热这件“最容易被忽视的基础活”彻底梳理了一遍。下面是我的实操笔记与可复用的清单、表格和脚本。
1. 现场边界条件(香港机房的几件真话)
- 供电常见:230V / 50Hz,单相 32A(IEC 60309 插头)到智能 PDU(C13/C19 口);有的机柜可选 3 相,但老楼里单相 32A 最常见。
- 连续载流的业界常识:按 80% 降额计算(NEC/IEC 的通用做法),32A × 230V × 0.8 ≈ 5.9kW 可长期稳定使用。
- 机房冷量标称 8–12kW/柜的不少,但风道组织差、侧送风设备与线缆遮挡常把有效冷量砍掉一大截。
- 香港电价不低,功耗监控与负载分配不是锦上添花,而是“别交学费”的唯一办法。
- 湿度与海风环境下,盐雾与粉尘让前面板滤网和冷凝水管理都值得多留一道心眼。
2. 上架前的功耗估算(别被“名牌功耗”骗)
2.1 我的估算基线
- 名牌功耗(PSU 额定):只用于“上限审查”。
- 实测满载:优先参考同代 CPU/GPU 的TDP + 驱动器 + 风扇曲线;NVMe 全盘写、存储 JBOD 的满转速会显著抬头。
- PDU/设备的功率因数(PF):现代服务器 PF 通常 0.95–1.0,估算时我按 0.95。
- 冗余校验:A/B 双电源设备要验证“单路失效时另一路是否能兜住全柜负载”。
2.2 资产清单与估算表(上架前必须有的表 1)
| 设备 | 数量 | CPU/存储要点 | 空闲功耗(W) | 满载功耗(W) | 名牌功耗(W) | 典型PDU口 | 风向 |
|---|---|---|---|---|---|---|---|
| Dell R740xd(2×Xeon Silver 4214, 12×SAS, 2×NVMe) | 4 | 256GB RAM | 180 | 550 | 750 | C13 | 前进后出 |
| Supermicro 2029U-E1CR25M(2U, 24×NVMe) | 2 | 384GB RAM | 220 | 700 | 1200 | C19 | 前进后出 |
| HPE DL360 Gen10(1U) | 2 | 128GB RAM | 90 | 300 | 500 | C13 | 前进后出 |
| 4U 45盘位 JBOD(SM 946ED 直连) | 1 | 45×SATA | 150 | 500 | 800 | C19 | 前进后出 |
| Juniper EX4300-48T(侧进侧出,未加风道件) | 1 | 48×1G | 90 | 200 | 350 | C13 | 侧→侧 |
| Cisco Nexus 3064(前进后出) | 1 | 40×10G | 110 | 300 | 500 | C13 | 前进后出 |
| 智能 PDU 内部耗电 | 2 | — | 10 | 15 | 20 | — | — |
小结:满载合计 ≈ 3,815W;按同时性系数 0.7~0.8 折算运行态 ≈ 2.7–3.0kW/柜;但单路兜底时要按 3.8kW 评估。
3. A/B 配比与“单路兜底”校验(避免一侧跳闸)
目标:在任一路掉电时,另一侧电流不超过额定的 80%。
给定每台设备的满载功耗 P[i],双电源设备平均分摊到 A/B,两端各取 P[i]/2;单电源设备全部落在某一侧。校验式:
max( Sum(A_half_of_dual) + Sum(A_single),
Sum(B_half_of_dual) + Sum(B_single) ) ≤ PDU_cap_80%
以单相 32A 举例:
PDU_cap_80% = 230V × 32A × 0.8 ≈ 5,888 W
实操要点
- 端口分配表:每台设备明确 A/B 插口与相邻口,避免人为迁移时把两条电源线都插到同一侧。
- 单电源设备交叉分布:像部分 JBOD、老交换机,尽量放向负载较轻的一侧。
- 相电流平衡(3 相场景):若是 3 相 PDU,按相电流差 < 20% 的目标去排口。
我用的简单 Python 校验脚本(本地跑一下就能出结论):
# devices: name, dual_psu(bool), full_watt, side_if_single('A'/'B'/'')
devices = [
("R740xd-1", True, 550, ""),
("R740xd-2", True, 550, ""),
("R740xd-3", True, 550, ""),
("R740xd-4", True, 550, ""),
("SM-NVMe-1", True, 700, ""),
("SM-NVMe-2", True, 700, ""),
("DL360-1", True, 300, ""),
("DL360-2", True, 300, ""),
("JBOD-1", False, 500, "B"),
("EX4300", False, 200, "A"), # 侧送风交换机
("N3K3064", True, 300, ""),
("PDU-aux-A", False, 15, "A"),
("PDU-aux-B", False, 15, "B"),
]
PDU_CAP_80 = 230*32*0.8 # 5888W
A = B = 0
for name, dual, w, side in devices:
if dual:
A += w/2.0
B += w/2.0
else:
if side == "A": A += w
else: B += w
print("A路满载兜底功率: ", A, "W")
print("B路满载兜底功率: ", B, "W")
print("是否安全:", max(A,B) <= PDU_CAP_80)
4. 实测与校准(PDU + IPMI 是真相)
4.1 PDU 实时电流/功率(SNMP 示例)
OID 因厂牌/型号不同而异,下面以 APC 新款 rPDU2 系为例(示范思路):
# 每5秒抓一次 A 路电流与功率(需要事先在PDU上启用SNMP/社区串)
watch -n 5 '
snmpget -v2c -c public 10.0.0.10 \
1.3.6.1.4.1.318.1.1.12.1.8.1.3.1 \ # rPDU2 phaseCurrent
1.3.6.1.4.1.318.1.1.12.1.19.1.1.2.1 # rPDU2 power
'
4.2 服务器 IPMI 实测(适配 CentOS 7 运维环境)
# 批量拉取主机当前功率与温度(需要BMC网络可达)
HOSTS=(r740-1-bmc sm-nvme-1-bmc dl360-1-bmc)
for h in "${HOSTS[@]}"; do
echo "== $h =="
ipmitool -I lanplus -H $h -U root -P "***" sdr | egrep -i "watts|temp"
done
4.3 名称对齐与校准
- 插座功率计抽样:对“高波动”设备做 24h 抽样,校正“估算满载”。
- PDU 与主机 IPMI 对表:两边相差>5% 的,检查电源线接法、PF、固件。
- 建立“实测库”:不怕累,第一次上架最值得。
5. 风道评估:先量再改
5.1 快速热工核算
- 1W ≈ 3.412 BTU/h
- 热量流:Q = ρ × cp × Airflow × ΔT,其中 ρ≈1.2 kg/m³,cp≈1.005 kJ/kg·K
例:若机柜 5kW,期望进出风 ΔT≈10°C,则所需风量:
Airflow ≈ 5000W / (1.2 × 1005 J/kgK × 10K) ≈ 0.414 m³/s ≈ 876 CFM
把这数跟行级空调或地板风量对上,心里就有底。
5.2 我用的简易实测法
红外测温:前门中上中下三点进风温度,后门三点出风温度,记录 ΔT。
手持风速仪:门栅风速换算 CFM;网线扎带可帮你“看流向”。
摄像头/手机延时:热斑随负载变化的漂移很有用。
6. 风道改造小技巧(便宜且有效)
- 盲板与刷条:空 U 位全上盲板;顶部/底部走线位上刷条,堵回流。
- 线缆管理:后部走线束尽可能沿立柱,避免挡住热风排出。
- 侧送风交换机导风件:EX4300/某些接入交换机侧→侧,必须上官方导风件或自制风道(我用 3mm Coroplast + 魔术贴做了个“前吸后排”的风道盒)。
- 短深设备隔板:1U 短机深,后面留大空腔会“回吸”,加定制隔板或挡板。
- 冷通道门:门缝用泡棉条封补,别让热风绕进冷通道。
- 风扇曲线:在 BIOS/BMC 里选“散热优先”策略先稳态,再逐步降噪。
- 滤网维护:香港粉尘不算少,月度清洁能白捡 1–2°C 的进风改善。
7. BIOS/固件层面的功耗与风扇控制(谨慎但很值)
- CPU PL1/PL2 限制:把 PL1 定位在“长期 95% 满足性能”的点,夜间批处理前临时放开。
- 内存风扇靶温:有的厂商允许微调,每 -1°C 可能换来 +3–5% 风扇功率的代价。
- 禁用无用外设(未用 HBA/10G NIC),能省一点是一点。
- 固件一致性:混合风扇算法会导致“某几台一直狂转”,统一版本是必要条件。
- Dell/HP/Supermicro 的命令行各异,通用的 ipmitool raw 风险较高,先在一台做 A/B 对比再批量。
8. 监控与告警(CentOS 7 部署片段)
8.1 PDU + 机柜温度的 Prometheus 采集
- 用 snmp_exporter 抓 PDU 电流、功率、每口状态
- 用 node_exporter 抓服务器温度、风扇、功耗(能从 /sys 或 ipmitool 导出)
systemd 定时抓取 IPMI 的 sidecar 脚本(CentOS 7):
# /usr/local/bin/power_scrape.sh
#!/bin/bash
HOSTS=(r740-1-bmc sm-nvme-1-bmc dl360-1-bmc)
OUT=/var/lib/node_exporter/textfile_collector/power.prom
:> $OUT
for h in "${HOSTS[@]}"; do
W=$(ipmitool -I lanplus -H $h -U root -P "***" sdr | awk '/Watt/ {print $NF; exit}')
echo "server_power_watts{host=\"$h\"} $W" >> $OUT
done
# /etc/systemd/system/power-scrape.service
[Unit]
Description=Export IPMI power metrics
[Service]
Type=oneshot
ExecStart=/usr/local/bin/power_scrape.sh
# /etc/systemd/system/power-scrape.timer
[Unit]
Description=Every 30s scrape IPMI power
[Timer]
OnBootSec=30s
OnUnitActiveSec=30s
Unit=power-scrape.service
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now power-scrape.timer
8.2 告警规则(示例)
# power_alerts.yml
groups:
- name: power
rules:
- alert: PDUFeedNearLimit
expr: pdu_power_watts{feed="A"} > 5200
for: 2m
labels: {severity: critical}
annotations:
summary: "A路功率接近连续上限"
description: "A路>5.2kW 已持续2分钟,请检查配比或负载。"
- alert: InletTempHigh
expr: cabinet_inlet_temp_c > 27
for: 5m
labels: {severity: warning}
annotations:
summary: "机柜进风温度偏高"
description: "进风>{{ $value }}°C,检查盲板、导风与通道隔离。"
9. 接线与配比落地(我用的“配电与端口分配表 2”)
| U位 | 设备 | PSU-A → PDU口 | PSU-B → PDU口 | 备注 |
|---|---|---|---|---|
| 42U | 顶部理线/空 | — | — | 顶部留散热空间 |
| 40U | SM-NVMe-2 | A-10(C19) | B-10(C19) | 高功耗设备尽量居中 |
| 38U | R740xd-4 | A-14(C13) | B-14(C13) | |
| 36U | R740xd-3 | A-13 | B-13 | |
| 34U | R740xd-2 | A-12 | B-12 | |
| 32U | R740xd-1 | A-11 | B-11 | |
| 29U | JBOD-1(单电源) | — | B-09(C19) | 单电源放 B 侧 |
| 27U | DL360-2 | A-08 | B-08 | |
| 25U | DL360-1 | A-07 | B-07 | |
| 22U | N3K3064 | A-06 | B-06 | 前进后出 |
| 20U | EX4300(侧送风) | A-05 | — | 装导风盒,单侧 A |
| 18U↓ | 空位+盲板 | — | — | 预留扩容 |
动作清单
- 先按表接线,再做单侧断电测试(拔掉 B 总输入或关掉 B PDU)观察 A 侧电流峰值。
- 把“单电源设备”尽量放到负载较轻的一侧(本例放 B 侧的是 JBOD)。
- 交换机若单电源,优先放在接入负载较低的一侧,且确保管理口/带外在另一侧 UPS 支路上(降低同时故障风险)。
10. 典型坑与现场解法
坑 1:额外两台 2U NVMe 节点“临时”插在 A 侧
现象:A 侧 PDU 从 4.1kW 爬到 6.1kW,热胀冷缩 + 晚高峰批处理直接跳。
解法:立刻把一台迁到 B 侧、临时限 PL1、夜里重平衡接线;次日补完整配比表。
坑 2:侧送风交换机没导风件
现象:冷通道温度正常,交换机却报 75°C 高温。
解法:加官方导风件/自制“前吸后排”风道盒;短期把交换机移至中下部位、减小与前门的间隙。
坑 3:盲板缺失导致冷风短路
现象:前门中部进风 23°C,顶/底 27–28°C,ΔT 失真。
解法:空 U 全补盲板,顶部缝隙加泡棉条,立刻恢复均匀进风。
坑 4:BMC 固件不一致
现象:同款机器风扇策略不同,某几台常年 60% 以上。
解法:统一固件,重设风扇靶温,风噪和功耗一起降。
11. 我的一页式上线检查清单(可直接复用)
- 资产表完善:名牌/实测功耗、风向、PDU口标注
- A/B 配比脚本跑过,单侧兜底 < 80% 容量
- 空 U 盲板与刷条到位;侧送风设备有导风件
- 接线完成后做单侧断电演练
- PDU 与 IPMI 采集上报 Prometheus,告警规则启用
- 24 小时功耗与温度曲线复核后,才移交业务流量
那次跳闸的一个月后,我在同一个冷通道里做巡检。风还是老样子从地板往上吹,门外是凌晨的港岛,空调机的白噪音像潮水。我把手机里的 PDU 电流曲线翻出来,A/B 两条线在 3.2kW 左右稳稳当当,夜里批处理的峰值也不过 4.6kW。交换机的导风盒看着有点“土”,但温度老老实实掉了 10°C。
电源和散热在香港机房里并不显山露水,可一旦出事,它们才是决定性因素。先算清、再量准、后改风、再监控——这些“繁琐”的操作,换来的是凌晨两点的心安。