找回密码
 加入我们
搜索
      
查看: 26614|回复: 67

[电脑] 宝藏盒Pro ALL-IN-ONE HomeLab Server

  [复制链接]
发表于 2023-9-15 15:22 | 显示全部楼层 |阅读模式
本帖最后由 NelsonCisco 于 2023-9-16 15:09 编辑

PP_1.jpg

前言

注册CHH十多年都没正经写过一篇完整的装机分享文, 趁这次有些时间我需要将家里原有的旧NAS和HomeLab Server 做一次升级整合, 希望改善一些痛点, 其实今次改造还是沿用大部分旧有的硬件, 以CHH标准不插满8块20TB的硬盘都不好意思贴出来吧... 但我个人还是以实用为主, 以后用到以后再换反正架构搞好了, 要换也很容易, 另外网络也还没升级, 以后有机会再搞, 这过程中也遇到很多坑, 当做是一个work log, 日后出意外要恢复有个文档参考, 以下过程很多都是网上找到的方法, 再经自己实践和测试, 需要参考的注意一下


旧机情况
首先这台已经用了7年的NAS, 很少清灰尘…但仍然运作正常…今次还是继续沿用旧有的几颗硬盘, 组的RAID5 实际可用8T, 存一些比较有价值的影片, 照片和文件, 才用了4T多,查S.M.A.R.T 硬盘实际运行了4万多小时, 健康度还是100%, 也没有坏区, 那就继续用吧, 再继续坚持一下, 撑到全闪方案成熟再来淘汰

Fractal Design Node 304 6盘位机箱
CPUE5 2683v3 2.0Ghz 14C28T
CPU散热超微 SNK-P0050AP4
內存Micron 8G ECC DDR4 2133 x 4
主板ASRock EPC612D4I
电源海韵 M12II-520 520W 铜牌全模
阵列卡LSI 9260-8i + BBU
硬盘WD RED 2TBx4 + WD GOLD 2TBx1
SSDIntel SSD 330 Series 60G MLC (CacheCade)
Micron M600 1TB SATA SSD
Tanyue 16G SATA DOM (黑群引导盘)
风扇猫扇 NF-A14 FLX
机箱Fractal Design Node 304

机箱是FD的Node 304, 机箱结构挺合理的, 以现在来看也不差, 这么久以来就曾经坏过一次硬盘(第四年坏), CPU我上了高塔散热加上线也是比较紧凑, 拆机换硬盘还是比较费劲的, 自始机箱带背板和热插拔变成我必须考虑的, 用的LSI 9260-8i 硬RAID 5 阵列, 这卡现在也是白菜价, 除了那次坏硬盘就没出过其他问题, 以我阵列容量重建用了大半天, 换上新硬盘就自动重建
PP_90.jpg
PP_2.jpg
PP_3.jpg

因为太久没打开过机箱, 又没方法监控阵列卡的情况(因为卡直通给黑群VM了, 一直没事就没碰过) 连BBU胀成这样了还不知道
PP_4.jpg

勤誠RM14300 1U服務器機箱 Home Lab Server
CPUE5 2686v4 2.3Ghz 18C36T x2
CPU散热政久 1U 2011/2066 VC均热板散热器 x2
內存镁光 64G 4Rx4 LRDIMM ECC DDR4 2400 x6
主板超微 x10DRL-i
电源极智猫 1U Flex 700W 金牌 (益衡7760B 方案)
SSDIntel DC P4500 2TB U.2 + PCIE 90度转向+ SSF-8643卡
Innodisk 64G SATA DOM (ESXi 引导盘)
机箱勤诚RM14300

这是一台给我做CCIE 实验的伺服器, 两年前组的, 当时为了想省位置加上家里的22U小机柜深度只有450mm, 看中了勤诚这个1U机箱能上ATX板又是短身板, 有一个坑点是因为主板铜柱位不匹配这机箱, 只有几个柱位能对上, 就用胶带封着不用的柱位防短路, 但就是这一举动导致其中一条DIMM槽针脚压歪了, 这是最近才知道的, 因为内存白菜价又加两条64G, 才发现其中一条DIMM死活不认内存, 幸好超微的售后不错, 经某宝店家申请RMA, 大概10天寄回来测试好告诉我故障点
PP_5.jpg

因为怕吵上了减速线, 不过后来证明没啥用, 该吵还是得吵, 每次做实验就是等家里没人在外面用**连回家做, 这也是今次整合计划想改善的其中一个目的, 另外为什么要配那么大的内存, 一个Cisco DNAC VM就吃掉200多G, 最少60个vCPU才能安装VM, 另外还要几十个G运行EVE-NG 实验拓扑, 那时还没大船,一条64 RDIMM就够买现在一块SN640 7.68T, CPU现在也是白菜价, 亏大了! 另外这个巨型VM 每次启动要差不多20分钟, 实在折磨人
PP_6.jpg PP_7.jpg


新机箱选择
看了一圈市场上能装ATX (而且我这块还比一般ATX略大, 一般的30.5cm x 24.5cm, 这块30.5cm x 25.4cm), 另外由于安装位置问题, 只能半高PCI不能全高, 其实可选只有几款

  • 半人马座8盘位
一开始看了这个觉得颜值不错, 但深入了解过后发现, 因为这机箱最大支持到24.5cm宽的主板, 强行安装可以, 但要拆掉上层的风扇支架, 而且前置最多三个8010, 进风或排气都有D 点不够力, 加上顶盖密封, 只能用2U 侧吹, 6CM风扇为了散热势必提转速, 那跟我原来1U 比也好不了多少, SFX电源位不错, 但我本来就有1U Flex 对我想说不是必须

  • X-NAS 10盘位
颜值真的顶, 三合一SATA/SAS/U.2 背板, 目前天花板配置, 夸张的价钱, 但是呢… 早在我写这篇的前一个月已经售光, 听说双11才有货, 但我等不了, 而且上盖跟半人马座一样的密封, 使用CPU功效高点的多核洋垃圾, 就容易积热, 要么提转速解决,但嘈音肯定受不了, 毕竟玩到这么高端又这么贵的机箱都肯买了, 肯定想一步到位, 以后考虑全闪方案时再来考虑

  • 宝藏盒Pro
最终我的选择, 颜值比较喜欢, 造工还可以而且可以安装副屏, 比较重要的是顶盖有开孔, 以我选用的CPU下压散热器来说很重要, 事实证明也没有选错, 比起2U 侧吹只能提风扇转速来解决散热问题, 用尽量大直径和深度的风扇平衡静音和散热的效果是比较理想的, 但这机箱也遇到不少坑, 下面详细说说各种灾难


装机篇
最终All-IN-ONE HomeLab Server 的硬件配置

CPUIntel E5 2686v4 2.3Ghz 18C36T x2
CPU散热政久 2U 2011/2066 VC均热板散热器 x2
內存镁光 64G 4Rx4 LRDIMM ECC DDR4 2400 x8
主板超微 x10DRL-i
电源极智猫 1U Flex 700W 金牌 (益衡7760B 方案)
显卡微星 GT 710 半高刀卡
网卡浪潮 X540-T2 双口 10Gbps
阵列卡LSI 9361-8i + 1GB CacheVault
硬盘WD RED 2TBx4 + WD GOLD 2TBx1
SSDIntel DC P4500 2TB U.2 + PCIE 90度转向 + SSF-8643接口卡
镁光M600 1TB SATA SSD
Innodisk 64G SATA DOM (ESXi 引导盘)
Tanyue16G SATA DOM (黑群引导盘)
副屏幽能BK PsiIndex 12.6吋 1920 x 515 驱动板分离 + Mini HDMI 航拍线
风扇追风者T30 x2
三洋 9G0812N1D03 8038 风扇 x2
三洋 9S0612P4S041 6025 风扇 x4
机箱宝藏盒Pro (白)
其他PCI 双6CM 风扇支架

先说一下, 安装这个机箱, 最好先把PCI 档片的固定架, 开关机按钮和USB 3.0延长线都先拆下来, 因为中间层板拿出来时很大机会被固定架顶着刮伤机箱! 这是我觉得这机箱做得最差的地方, 层板必须按照某个方向和角度拿出来或放回去, 否则很易刮到机箱
PP_8.jpg

先从下层说起, 背板PCB看起来质量很好, 总共4个大4P供电和2个SFF-8643接口, SAS 12Gbps, 硬盘顺序启动防上瞬时功耗过高
PP_9.jpg

为了好看用了镀银线, 但是真的硬
PP_10.jpg

首先安装T30 就遇到坑, 被横梁挡着装不进去, 目测大约差2mm左右, 没办法, 那就磨掉!
PP_11.jpg
PP_12.jpg

10分钟后手都麻了…这问题已经反映给店家, 希望以后有改善, 虽然下层硬盘笼是独立风道, 用普通硬盘不至于会很热, 但因为我的安装位置问题, 机箱背面贴着墙壁, 所以风扇方向是对着硬盘笼吹, 尽量把热风从硬盘笼排出防止积热
PP_13.jpg

阵列卡的缓存电池贴在硬盘笼旁边
PP_14.jpg

要说一下因为X10DRL-i 不是一般的ATX 板, 铜柱位很多都对不上, 好在主要承托的铜柱都能用, 为了没有铜柱位的位置都有一些承托力, 加了一些泡沫, 实际对得上的铜柱位如下
PP_15.jpg

然后安装主板和接线那些都没大问题, 但因为后续我要安装副屏的驱动板, 占用了一个2.5吋硬盘位, 装回USB3.0 延长接头遇到另一个坑, 因为X10DRL-i 比一般ATX 板宽了9mm, 从下图可以看出其中一组CPU 8PIN 的卡扣和机箱USB 3.0延长接头冲突, 那也只能削掉!
PP_16.jpg PP_17.jpg

但这个位置相当极限… 以后要拔这个卡扣也很麻烦
PP_18.jpg

驱动板从主板的USB取电, HDMI 航拍线沿着边沿走绕去后面PCI 档片位置
PP_19.jpg
PP_20.jpg
PP_93.jpg

EDP屏线贴在两个2.5吋硬盘位置的边上, 有预留开孔出去
PP_21.jpg

屏幕直接用3M不干胶贴在前铝面板上, 8个硬盘位, 插上2.5吋硬盘的话会有点漏光
PP_92.jpg

装机完成, 两个PCI 6CM风扇和左边的6CM 风扇主要尽量排走上层的热风避免积热, U.2 在这个位置也有点热, 直接贴一个6CM 风扇对着吹, 不然也没有更好的位置, PCIE 从右至左SFF-8643接口卡, GT 710显卡, LSI 9361-8i阵列卡, X540-T2 万兆网卡, 万兆网卡暂时用不到但先把它装上
PP_22.jpg
PP_23.jpg
PP_24.jpg

最后安装在假天花上
PP_25.jpg


环境配置篇
首先超微的主板对于风扇的转速策略有点问题, 当插上PWM风扇时, 预设的风扇策略当转速低于设定的阈值时会触发警报,同时提升风扇转速, 造成风扇会在全速和低速之间循环转换, 可以通过ipmitool 手动调整适当的转速解决, 但当ESXi host 重启ipmitool 的命令就会失效, 也不可能每次重启都要手动再输入一次, 那自然要令ESXi host 每次开机时都自动执行ipmitool 的风扇转速命令

  • ESXi 安装 IPMITool
  • 先下载 ipmitool vib for ESXi
  • 解压缩后得到ipmitool-1.8.11-2.x86_64.vib, 用SCP上传vib 到/tmp/ 目录, 另外的ipmitool-1.8.11-2-offline_bundle.zip不用理会 PP_26.jpg
  • 登入至ESXi Host Client 管理页面开启SSH
    PP_27.png
  • SSH用root帐户登入并更改software acceptance level 成 CommunitySupported, 不然没有VMware 签名的vib 是不能安装的
    1. esxcli software acceptance set --level=CommunitySupported
    复制代码

  • 再安装vib
    1. esxcli software vib install -v /tmp/ipmitool-1.8.11-2.x86_64.vib
    复制代码

  • 安装成功
    PP_28.png
  • 现在就可以用ipmitool 控制风速的转速, 首先测试一下命令有没有效果, 命令输入后会立即生效, 留意一下风扇声音就知道生效没有, 因为是在ESXi 本地主机, 不用加-H -U -P 等参数指定IP和帐密
    1. /opt/ipmitool/ipmitool raw 0x30 0x45 0x01 0x01 (这句修改风速模式, 最后的0x01表示全速, 只有先改成全速才不会覆盖手动设定的转速)
    复制代码

  • 如果上面的命令能使风扇都全速运行, 再输入下面的, 超微的风扇分两个区, FAN1, FAN2, FAN3等属于0x00, FANA, FANB等属于0x01, 我这块x10DRL-i 只有FAN1- 6和FANA-B共8个PWM风扇接口, 几经测试, 在我的安装环境, 以下风扇转速能达到比较理想的散热静音平衡, 命令最后的16进位数字就是风扇转速, 0x28 化成10进位就是40,代表40%转速, 根据实际情况调整, 以我的情况上层所有风扇都设成40%, 下层两个T30 设成80%, 天气冷了再调更低一点的转速
    1. /opt/ipmitool/ipmitool raw 0x30 0x70 0x66 0x01 0x00 0x28 (将0x00区的风扇固定在40%转速)

    2. /opt/ipmitool/ipmitool raw 0x30 0x70 0x66 0x01 0x01 0x50 (将0x01区的风扇固定在80%转速)
    复制代码

  • 測試沒問題之後, 將以上命令寫進ESXi 的啟動腳本令它每次重啟都自動執行, 加在exit 0之前就行, sleep 1 為了在每個命令之間停頓1秒避免執行過快, 這樣風扇的問題就都解決了
    1. vi /etc/rc.local.d/local.sh
    复制代码
    1. #!/bin/sh

    2. #!/bin/sh

    3. # local configuration options

    4. # Note: modify at your own risk!  If you do/use anything in this
    5. # script that is not part of a stable API (relying on files to be in
    6. # specific places, specific tools, specific output, etc) there is a
    7. # possibility you will end up with a broken system after patching or
    8. # upgrading.  Changes are not supported unless under direction of
    9. # VMware support.

    10. # Note: This script will not be run when UEFI secure boot is enabled.


    11. /opt/ipmitool/ipmitool raw 0x30 0x45 0x01 0x01
    12. sleep 1
    13. /opt/ipmitool/ipmitool raw 0x30 0x70 0x66 0x01 0x00 0x28
    14. sleep 1
    15. /opt/ipmitool/ipmitool raw 0x30 0x70 0x66 0x01 0x01 0x50

    16. exit 0
    复制代码



  • Windows 10 虚拟机直通阵列卡
今次整改想把原本阵列卡直通给黑群的方案改成直通给Win 虚拟机, 数据源是Win 比较简单方便, 但是安装最新版本MegaRAID Storage Manager 发现安装不上, 国外论坛也有反映这问题,不过没关系反正能管理RAID 的方法很多, 今次改用由SAS3XXX 系列HBA卡开始有的LSI Storage Authority (LSA), 使用Web管理和更加美观的介面, 支持的HBA/RAID卡如下

- 9600 Family eHBA Adapters
- 9660 Family RAID Adapters
- 9670 Family RAID Adapters
- MegaRAID 12Gb/s SAS RAID controllers and Integrated MegaRAID 12Gb/s SAS RAID controllers
    - SAS3916 based MegaRAID and iMR
    - SAS3908 based MegaRAID and iMR
    - SAS3816 based IOC and iMR
    - SAS3808 based IOC and iMR
    - SAS3516 based MegaRAID and iMR
    - SAS3108 based MegaRAID and iMR
    - SAS3008 based HBAs

  • 先准备好一个Windows 10 虚拟机
  • 登入ESXi Web Console, Manage > Hardware >PCI Devices, 把Broadcom MegaRAID SAS Invader Controller 勾选然后按Taggle passthrough 设成直通, Passthrough 状态变成Active 代表成功
    PP_29.png
  • 回到VM设定加入PCI Device MegaRAID SAS Invader Controller
    PP_30.png
  • Broadcom 官网下载最新版LSA, 安装好后桌面多了一个Launch LSA 图示, 点击进入
    PP_31.png
  • 用Windows 本机admin帐户登入, 就可以看到9361-8i 控制器, 组RAID等操作跟以前用MegaRAID Storage Manager 差不多, 就不详述
    PP_32.png


  • ESXI 直通显卡
因为增加了副屏, 而超微的X10DRL-i 本身并没有板载HDMI输出, 虽然可以将ASPEED 2400直通给VM, 再用HDMI转VGA接头插板载VGA, 但这样就不能通过IPMI 显示EXSi Console , 比较不便, 所以另外咸鱼了一张成色几乎全新的微星GT 710, 直通给Windows 10 虚拟机, 另外, 因为屏幕并不需要一直开着, 在Windows 设定闲置5分钟就关闭屏幕, 需要看的时候才用滑鼠动一下唤醒屏幕, ESXi 直通显卡和USB设备给虚拟机需要以下步骤

PP_33.jpg

  • 登入ESXi Web Console, Manage > Hardware >PCI Devices, 把显卡相关的设备包括HDMI Audio勾选然后按Taggle passthrough 设成直通, Passthrough 状态变成Active 代表成功
    PP_34.png
  • 然后SSH进ESXi, 输入lspci -v | grep NVIDIA -A1
    PP_35.png
  • 记下显卡的 ID, 以我的为例:
    0000:05:00.0 和 10de:128b
  • 输入以下命令, 改成自己设备的 ID
    1. echo '/device/0000:05:00.0/owner = "passthru"' >> /etc/vmware/esx.conf
    2. echo '10de  128b  bridge   false' >> /etc/vmware/passthru.map
    3. echo '10de  128b  link     false' >> /etc/vmware/passthru.map
    4. echo '10de  128b  d3d0     false' >> /etc/vmware/passthru.map
    复制代码

  • 回到VM设定, 勾选所有guess memory 预留
    PP_36.png
  • VM Options > Advanced > Edit Configuration, 新增参数 Key = hypervisor.cpuid.v0, Value = FALSE
    PP_37.png
  • Add Other Device > PCI Device, 加入显卡两个相关的PCI设备
    PP_38.png
  • Win10 虚拟机开机, 正常安装显卡驱动
    PP_39.png
  • 最后在显示设置那边, 选择”Only show on 2”, 正常一般屏幕1会是VMware的虚拟display


  • ESXi 直通USB设备
  • 一样先SSH进ESXi Host
  • 输入lsusb 找到USB 设备的ID, 可能一下子确认不到哪个ID 是想要直通的设备, 可以通过拔插设备USB来比较确认, 以我的为例, lea7:0066 是希望直通的鼠标,看名字还以为是键盘…
    PP_40.png
  • 再输入vi /etc/vmware/config, 最后一行加usb.quirks.device0 = “0xlea7:0x0066 allow”
    PP_41.png
  • 再vi /bootbank/boot.cfg , 令VMKernel内核启动时不控制该HID设备, 入加CONFIG./USB/quirks=0xlea7:0x0066::0xffff:UQ_KBD_IGNORE 插入在kernellopt=autoPartition=FALSE 后面
    PP_42.png
    如果有多个设备可以一直加在UQ_KBD_IGNORE 后面, 用冒号隔开, 像这样
    PP_43.png
  • VM Options > Advanced > Edit Configuration, 新增两个参数
    - usb.generic.allowHID = TRUE
    - usb.quirks.device0 = 0xlea7:0x0066 allow, 如果有多个设备要直通, device1, device2 加下去
    PP_44.png
  • 最后重启一次ESXi Host, 回到Win 虚拟机设定, 加入新USB设备就看到直通的设备
    PP_45.png


  • ESXI 安装黑群
今次重组NAS 其中一个主要目的是想摆脱之前因为把LSI 9260-8i 阵列卡直通给黑群VM, 从而令到所有硬盘都不能休眠( 一旦把硬盘交给DSM 管理, 不论是SHR/Basic/JBOD哪种, 都会给每块硬盘分一部分分区放置系统和设置, 只要有一块硬盘启动其他都跟着启动), 而且又不能查看S.M.A.R.T, 所以今次打算将新买的LSI 9361-8i 直通给Win10, 再通过NFS 给黑群挂载, 原本计划是这样的… 但后来测试发现当中很多问题, 而且最重要的, 用这方法实现不知道是什么原因导致数据写入RAID5 阵列非常慢, 慢到大概只有几MB/s, 通过iperf 测试由客户端去到黑群是正常千兆速度, 最终放弃了这方案, 改而去研究另一个也是很有名的NAS 牌子, QNAP


  • ESXI 安装QutsCloud
在网上找到破解安装黑QNAP的方法, 但目前来说还不算完美, 不能连QNAP ID和更新固件版本, 而且只能特定版本(我只试了2044版本), 有些APP因为缺授权即使能安装了也不能用, 但我的需求很简单, QNAP 只是充当一个前台介面, 在手机端有APP 可存取我的文件就行, 其他一概不用


  • 直接官网找到那个特定版本OVA,  汇入即可
    PP_46.png
  • 除了安装引导的的48G硬盘空间, 另外需要再加一个VMDK 用来安装QNAP的APP, 但是必须200G或以上, 不然不能被正常格式化, 勾选记忆体全部锁定
    PP_47.png
  • VM开机一直跑到画面出现MAC和IP 地址 (DHCP Server 要先准备好, 让网卡能拿到IP能上网), 这时就可以SSH 进QNAP或直接ESXi 下web console
    PP_48.png
  • 默认用户名admin, 密码是MAC地址去掉冒号全大写, 然后执行
    1. sudo curl -k https://jxcn.org/file/active2.sh | bash
    复制代码

  • 重启VM 默认第一项启动
    PP_49.png
  • 开启http://qnap-ip:8080 就可以按启动智能安装, 设定admin帐户和时间
    PP_50.png
  • 等待安装完成
    PP_51.png
  • 进去后不要更新固件, 先去创建存储池, 把200G 虚拟硬盘格式化, 硬盘容量超过200G 这里才能被勾选
    PP_52.png
    PP_53.png
  • 再下载最新版本的HybridMount, 这样QNAP 才可能远程挂载Windows 分享出来的SMB, 创建远程挂载
    PP_54.png
    PP_55.png
  • 输入SMB Server 即是Win10虚拟机 IP地址, 登入帐号就可以看到分享出来的文件夹
    PP_56.png
    PP_57.png
  • 设定好文件夹存取权限, 我另外把QNAP整合Windows Server 2019 AD控制器, 用AD帐户存取
    PP_58.png
    PP_59.png
    PP_60.png
  • 因为家中有Fortigate 防火墙做DDNS, 加一条从WAN口进入对应子网的ACL 就可以从internet 访问
    PP_61.png
  • 手机端安装Qfile Pro, 登录后就能看到经SMB 远程挂载的文件夹, 而且UI 速度比DSM 顺畅很多! 美中不足的是相片之类因为远程挂载的文件夹不能做索引, 所以没有缩图
    PP_62.jpg



  • 小屏幕显示IPMI 读数
最后就是要在这个12.6呎1920x515 分办率的显示屏显示各种IPMI 监控数据, 基本上没有简单的现成方案能实现, AIDA64 也不能监控IPMI 读数, 网上研究一番用了以下组合实现,
  • Hard Disk Sentinel Pro – 在桌面以Widget 形式显示阵列中硬盘的温度和健康状况, 同时也能查看S.M.A.R.T, 主要用来显示硬盘的温度
  • Prometheus – 一个开源监控系统和日志数据库, 我只用到很简单的功能, 负责收集从IPMI Exporter 收到的传感器数据然后传给Grafana 显示
  • IPMI Exporter – 一个中间件, 负责收集IPMI 各种读数如CPU温度, 风扇转速等
  • Grafana – 一个开源数据可视化工具, 自定义形式显示Prometheus 收集到的IPMI 读数

为了管理方便, Prometheus, IPMI Exporter, Grafana 服务都是安装在同一台VM 里, 先sudo -i 登入root 再做以下所有操作


  • Prometheus 安装和配置
对docker 不太熟悉, 就用Ubuntu Server 20.04 做为Guest OS, 在上面安装Prometheus

  • 下载适合的Prometheus 版本复制下载路径, https://github.com/prometheus/prometheus/releases, 我直接下载最新的版本
    1. root@prometheus-server:~# wget https://github.com/prometheus/prometheus/releases/download/v2.47.0-rc.0/prometheus-2.47.0-rc.0.linux-amd64.tar.gz
    复制代码

  • 解压缩
    1. root@prometheus-server:~# tar -zxvf prometheus-2.47.0-rc.0.linux-amd64.tar.gz
    复制代码

  • 改个短一点的名字方便使用
    1. root@prometheus-server:~# mv prometheus-2.47.0-rc.0.linux-amd64 prometheus
    复制代码

  • 进去prometheus 文件夹
    1. root@prometheus-server:~# cd prometheus
    复制代码

  • 启动prometheus 服务测试一下
    1. root@prometheus-server:/prometheus# ./prometheus --config.file=prometheus.yml
    复制代码

  • 查看一下当前prometheus 的IP 地址
    1. root@prometheus-server:/prometheus# ip addr show
    复制代码

  • 打开http://prometheus-ip:9090 能进去表示成功
  • 在Status > Targets 那边可以查看IPMI Expoter的状态, State 是UP代表正常连作
    PP_63.png
  • 好像找不到prometheus 官方有配置成service 的文件, 那自己写一个文件install_prometheus_service.sh
    1. root@prometheus-server:~# vim install_prometheus_service.sh
    复制代码

  • 內容如下
    1. echo '[Unit]
    2. Description=Prometheus
    3. Wants=network-online.target
    4. After=network-online.target
    5. [Service]
    6. User=root
    7. Group=root
    8. Type=simple
    9. ExecStart=./prometheus --config.file=prometheus.yml
    10. [Install]
    11. WantedBy=multi-user.target' > /etc/systemd/system/prometheus.service

    12. # enable prometheus in systemctl
    13. systemctl daemon-reload
    14. systemctl start prometheus
    15. systemctl enable prometheus
    复制代码

  • 最后安装就能开机自动启动
    1. root@prometheus-server:~# bash install_prometheus_service.sh
    复制代码



  • IPMI Exporter 安装和配置
由于Prometheus 不能直接收到IPMI 的读数, 需要安装IPMI Exporter 来配合Prometheus 使用

  • 先下载ipmi_remote.yml 文件至prometheus 家目录并编辑
    1. root@prometheus-server:~# wget https://github.com/srkaviani/prometheus_exporters/blob/main/ipmi_exporter/ipmi_remote.yml
    2. root@prometheus-server:~# vim ipmi_remote.yml
    复制代码

  • 把default modules 的用户名和密码改成IPMI Server 登入的用户名和密码, 使IPMI Exporter 能登入要监控的IPMI Server 读取数据, 也可以在exclude_sensor_ids加入不想监控的传感器读数, 减少数据量, 注意YAML 有严格的段落缩排要求, 失败大多是格式不对引起
    1. # Configuration file for ipmi_exporter

    2. # This is an example config for scraping remote hosts via IPMI.
    3. # Information required to access remote IPMI interfaces can be supplied in the
    4. # 'modules' section. A scrape can request the usage of a given config by
    5. # setting the `module` URL parameter.

    6. modules:
    7.               default:
    8.                            # These settings are used if no module is specified, the
    9.                            # specified module doesn't exist, or of course if
    10.                            # module=default is specified.
    11.                            user: "IPMI Server admin username"   #改这里
    12.                            pass: "IPMI Server admin password"   #改这里
    13.                            # The below settings correspond to driver-type, privilege-level, and
    14.                            # session-timeout respectively, see `man 5 freeipmi.conf` (and e.g.
    15.                            # `man 8 ipmi-sensors` for a list of driver types).
    16.                            driver: "LAN_2_0"
    17.                            privilege: "admin"
    18.                            # The session timeout is in milliseconds. Note that a scrape can take up
    19.                            # to (session-timeout * #-of-collectors) milliseconds, so set the scrape
    20.                            # timeout in Prometheus accordingly.
    21.                            # Must be larger than the retransmission timeout, which defaults to 1000.
    22.                            timeout: 10000
    23.                            # Available collectors are bmc, ipmi, chassis, dcmi, sel, and sm-lan-mode
    24.                            # If _not_ specified, bmc, ipmi, chassis, and dcmi are used
    25.                            collectors:
    26.                            - bmc
    27.                            - ipmi
    28.                            - chassis
    29.                            # Got any sensors you don't care about? Add them here.
    30.                            exclude_sensor_ids:
    31.                            - 2
    32.                            - 29
    33.                            - 32
    34.                            - 50
    35.                            - 52
    36.                            - 55
    37.               dcmi:
    38.                            # Use these settings when scraped with module=dcmi.
    39.                            user: "admin_user"
    40.                            pass: "another_pw"
    41.                            privilege: "admin"
    42.                            driver: "LAN_2_0"
    43.                            collectors:
    44.                            - dcmi
    45.               thatspecialhost:
    46.                            # Use these settings when scraped with module=thatspecialhost.
    47.                            user: "some_user"
    48.                            pass: "secret_pw"
    49.                            privilege: "admin"
    50.                            driver: "LAN"
    51.                            collectors:
    52.                            - ipmi
    53.                            - sel
    54.                            # Need any special workaround flags set? Add them here.
    55.                            # Workaround flags might be needed to address issues with specific vendor implementations
    56.                            # e.g. https://www.gnu.org/software/freeipmi/freeipmi-faq.html#Why-is-the-output-from-FreeIPMI-different-than-another-software_003f
    57.                            # For a full list of flags, refer to:
    58.                            # https://www.gnu.org/software/freeipmi/manpages/man8/ipmi-sensors.8.html#lbAL
    59.                            workaround_flags:
    60.                            - discretereading
    61.                            # If you require additional command line arguments (e.g. --bridge-sensors for ipmimonitoring),
    62.                            # you can specify them per collector - BE CAREFUL, you can easily break the exporter with this!
    63.                            custom_args:
    64.                                           ipmi:
    65.                                           - "--bridge-sensors"
    66.               advanced:
    67.                            # Use these settings when scraped with module=advanced.
    68.                            user: "some_user"
    69.                            pass: "secret_pw"
    70.                            privilege: "admin"
    71.                            driver: "LAN"
    72.                            collectors:
    73.                            - ipmi
    74.                            - sel
    75.                            # USING ANY OF THE BELOW VOIDS YOUR WARRANTY! YOU MAY GET BITTEN BY SHARKS!
    76.                            # You can override the command to be executed for a collector. Paired with
    77.                            # custom_args, this can be used to e.g. execute the IPMI tools with sudo:
    78.                            collector_cmd:
    79.                                           ipmi: sudo
    80.                                           sel: sudo
    81.                            custom_args:
    82.                                           ipmi:
    83.                                           - "ipmimonitoring"
    84.                                           sel:
    85.                                           - "ipmi-sel"
    复制代码

  • 把ipmi_remote.yml 搬到路径/opt/ipmi_exporter/ipmi_remote.yml
    1. root@prometheus-server:~# mv ipmi_remote.yml /opt/ipmi_exporter/ipmi_remote.yml
    复制代码

  • 下载install_ipmi_exporter.sh 并安装
    1. root@prometheus-server:~# wget https://github.com/srkaviani/prometheus_exporters/blob/main/ipmi_exporter/install_ipmi_exporter.sh
    2. root@prometheus-server:~# bash install_ipmi_exporter.sh
    复制代码

  • 在/etc/prometheus 创建一个ipmi_targets.yml 文件
    1. root@prometheus-server:~# cd /etc
    2. root@prometheus-server:/etc# mkdir prometheus
    3. root@prometheus-server:/etc# cd prometheus
    4. root@prometheus-server:/etc/prometheus# vim ipmi_targets.yml
    复制代码

  • 加入要监控的IPMI Server IP地址, 我的是10.10.222.223
    1. - targets:
    2.    - 10.10.222.223
    3.    labels:
    4.       jobs: ipmi_exporter
    复制代码

  • 然后回到prometheus 文件夹, 修改prometheus.yml
    1. root@prometheus-server:~# vim prometheus.yml
    复制代码

  • 以下code 加到最后一行
    1. - job_name: ipmi_exporter
    2.       params:
    3.           module: ['default']
    4.       scrape_interval: 1m
    5.       scrape_timeout: 30s
    6.       metrics_path: /ipmi
    7.       scheme: http
    8.       file_sd_configs:
    9.       - files:
    10.          - /etc/prometheus/ipmi_targets.yml
    11.          refresh_interval: 5m
    12.       relabel_configs:
    13.       - source_labels: [__address__]
    14.          separator: ;
    15.          regex: (.*)
    16.          target_label: __param_target
    17.          replacement: ${1}
    18.          action: replace
    19.       - source_labels: [__param_target]
    20.          separator: ;
    21.          regex: (.*)
    22.          target_label: instance
    23.          replacement: ${1}
    24.          action: replace
    25.       - separator: ;
    26.          regex: .*
    27.          target_label: __address__
    28.          replacement: localhost:9290
    29.          action: replace
    复制代码

  • 安装完成, 可以打开http://prometheus-ip:9290 测试一下, 把target 改成IPMI Server IP地址按Submit 就可以看到能读取到IPMI 的各种读数, 宿主机的风扇转速, 温度等
    PP_64.png
    PP_65.png
  • IPMI Export 在安装时就已经配置成service, 开机就会自动启动, 不需再另行设定


  • Grafana 安装和配置
  • 依照Grafana 官方的方法从Repository 下载和安装最新稳定版本, 我下载的是OSS版, 也有Enterprise版不过入面的功能用不上
    1. root@prometheus-server:~# apt-get install -y apt-transport-https
    2. root@prometheus-server:~# apt-get install -y software-properties-common wget
    3. root@prometheus-server:~# wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key
    4. root@prometheus-server:~# echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
    5. root@prometheus-server:~# apt-get update
    6. root@prometheus-server:~# apt-get install grafana
    复制代码

  • 启动Grafana, 默认端口3000
    1. root@prometheus-server:~# systemctl start grafana-server.service
    复制代码

  • 打开http://prometheus-ip:3000 就可以进入Grafana 介面, 默认用户名admin, 密码admin, 第一次登入要求修改密码
  • 先去Connections > Data sources, Add new data source 创建新的数据源
    PP_66.png
  • 名字随意, 填入Prometheus server URL就行, 勾选Default, 其他一些安全参数也可以加, 例如要求用户名和密码登入等等
    PP_67.png
  • 然后到Dashboards, New>Import 汇入
    PP_68.png
  • 两种方法汇入
    PP_69.png
    - 离线可以先去下载IPMI Exporter Dashboard 的JSON文件, 上传后再按Load
    - 联网可以直接输入IPMI Exporter Dashboard ID, 15765 再按Load
    PP_70.png
  • 成功的话在Dashboard > IPMI Exporter 就会见到差不多以下的画面
    PP_71.png
  • 但这里资讯太多, 在小小的12.6吋画面不能全部都显示(即使可以字体也很小看不清), 我只选择了风扇转速, CPU和内存温度进行监控, 我把没用的区块移除, 再加以修改后就有以下完成画面, HDD Temperatures 区块是预留给Hard Disk Sentinal Pro 来显示硬盘温度的区块
    PP_72.png



  • Dashboard 详细配置
  • 点选风扇转速的区块右上角的Edit 修改
    PP_73.png
  • 图像风格改成Stat
    PP_74.png
  • Title 是区块的标题, 我改成了Fan Speed
  • Stat Styles > Graph mode > Text ailgnment 改成Center 置中
    PP_75.png
  • Gauge 开启Show threshold markers, 这样仪表板外圈会多显示当前数值和thresholds的比例
    PP_76.png    PP_77.png    PP_78.png
  • Text Size 改字体大小
    PP_79.png
  • Thresholds 改数值范围自动变色, 我这里小于50%绿色, 大于等于50%和少于80%黄色, 大于等于80%红色, Thresholds mode 改成Percentage 根据百分比
    PP_80.png
  • 另外因为默认IPMI 传感器收到的名字是FAN1, FAN2, FAN3 等等的名字, 不好识别, 可以用Overrides 修改, Add Field Override > Field with name
    PP_81.png
  • 选取要修改的传感器, 例如FAN1, 对应的是我U.2 的风扇, Add override property, 选Standard options > Display name, 输入U.2 FAN, 这只是显示的文字, 改成什么都可以
    PP_82.png
  • 最后都改好后, 按Apply 保存
  • 然后温度传感器, 也是因为资讯太多, 我过滤掉一些温度传感器, 在下面Transforms 选Filter by name, 把不想显示的传感器取消打勾就行
    PP_83.png
    PP_83_2.png
  • 图像风格是Gauge, 字体大小也改一改
    PP_84.png
  • Thresholds 我改成小于50绿色, 大于等于50和少于80黄色, 大于等于80红色, Thresholds mode 改成Absolute 根据绝对值
    PP_85.png
  • 加入Override 修改成自己想显示的传感器标题(上面已有演示), 最后都改好后, 按Apply 保存
    PP_86.png
  • 另外不要忘了Dashboard 也要按一下Save 保存
    PP_87.png



  • Windows 10 下开机自动启动Grafana 面板和Hard Disk Sential

  • 先把Windows 设定成自动登入
  • 执行regedit , 把HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device 中的DevicePasswordLessBuildVersion 由2 改成 0
  • 再执行netplwiz, 取消勾选 Users must enter a user name and password to use this computer, 按OK 会要求你输入一次用户的密码
    PP_88.png
  • 为了实现Grafana 自动启动并且自动登入全屏显示, 先从Github 下载Grafana Kiosk, 找到自己系统的版本, 我是用的 windows 版
  • 解压至任意位置, 我是C:\ 另外要注意一点Grafana Kiosk 必须用Chrome 来打开
  • 先准备脚本, 新建一个名为Grafana_AutoStartup.bat 的文件, 内容如下, Grafana Kiosk 安装路径改成自己的, URL那边改成自己Grafana 的Dashboard路径, admin不用改, 密码改成自己的
    1. C:\grafana-kiosk-v1.0.6\grafana-kiosk.windows.amd64 -URL=http://10.10.222.210:3000/d/UKjaSZf7z/ipmi-exporter -login-method=local -username=admin -password=xxxxxxxxx -kiosk-mode=kiosk
    复制代码

  • 在Task Scheduler 创建一个新基本任务, Create Basic Task.. 名字随意, 我改成Grafana AutoStartup
  • Trigger 选 When I log on
  • Action 选 Start a program, 选取刚才准备的Grafana_AutoStartup.bat 文件, Finish 完成
  • 再创建一个新的基本任务, 名字随意, 我改成 HDSentinel AutoStartup
  • Trigger 选When I log on
  • Action 选 Start a program, 选HardDiskSentinel 安装目录里的 HDSentinel.exe
  • 创建完注意一定要回到一般设定那边, 把Run with highest privileges打勾, Configure for 改成Windows 10, 我试了不改不能被正常执行
    PP_89.png
  • 重启VM试测一下效果, 作业完成



功耗測試
双路E5 的功耗还是很可观的, 9台虚拟机占整机CPU 7%的轻度负载, 已经需要近240W的功耗
PP_91.jpg

噪音主要来源于风扇的高转速, 得益于VC 均热板和机盖上部开孔, 空调室温28度环境而且我放在天花板位置, 轻负载CPU 也只有不到50多没到60度已经很满意, 硬盘区温度也很凉快, 两个T30 在1500转基本上很静音




评分

参与人数 8邪恶指数 +305 门户文章 +1 收起 理由
strongtan + 20 支持一下
张家村老张 + 10
ilas + 200
梵谷的左耳 + 20
nApoleon + 1
Wolverine + 5
kirl2010 + 10 懒惰的我...
李一族 + 40

查看全部评分

发表于 2023-9-15 15:37 | 显示全部楼层
厉害了,太专业了
 楼主| 发表于 2023-9-15 15:53 | 显示全部楼层
我想问如何改封面图...? 我都对着图片按了"设成封面", 还是没改过来
发表于 2023-9-15 16:26 | 显示全部楼层
马克学习
发表于 2023-9-15 17:18 | 显示全部楼层
显示屏真惊艳
 楼主| 发表于 2023-9-15 17:38 | 显示全部楼层

是的, 整篇长篇大论都是为了实现显示屏的功能, 而且连官方都还没出来就先给我实现了
 楼主| 发表于 2023-9-15 17:39 | 显示全部楼层
xpfmo 发表于 2023-9-15 15:37
厉害了,太专业了

不算太专业, 很多网上都有教学, 只是步骤较多
发表于 2023-9-15 17:48 | 显示全部楼层
NelsonCisco 发表于 2023-9-15 17:39
不算太专业, 很多网上都有教学, 只是步骤较多

之前我也想搞这个,不过还是嫌弃麻烦,买了DX4600,家用也可以了。
 楼主| 发表于 2023-9-15 18:20 | 显示全部楼层
xpfmo 发表于 2023-9-15 17:48
之前我也想搞这个,不过还是嫌弃麻烦,买了DX4600,家用也可以了。

只需要NAS 功能的话成品也不错
发表于 2023-9-15 18:28 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2023-9-15 18:37 | 显示全部楼层
goldensquall 发表于 2023-9-15 18:28
宿主系统用windows是不是有点儿麻烦
UNRAID其实就很好用了
这个屏幕是楼主自己DIY的?我记得官网好像还没正 ...

HOST OS用的是ESXi 7.0.3
UNRAID 没用过, 主要ESXi 太成熟了, 基本什么问题都能找到答案, 就一直用了
屏幕是某宝买再自行DIY, 我也觉得如果造宽多25MM, 侧面能放下两颗9CM 风扇就更好了, 不过已经比顶盖没开孔的好不少了, 我听买了X-NAS或半人马的说上层太热了
T30 我就用ipmi 命令固定在1500 转, 没用哪种模式
发表于 2023-9-15 19:00 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2023-9-15 19:25 | 显示全部楼层
狠货!!!
发表于 2023-9-16 10:01 | 显示全部楼层
晚上刚看到UP发这个盒子的新版本
发表于 2023-9-16 10:19 | 显示全部楼层
nas越来越骚了
发表于 2023-9-16 10:25 | 显示全部楼层
机箱结构挺合理的
发表于 2023-9-16 13:08 | 显示全部楼层
这个监控样式好看,收藏一下,找时间用AIDA64仿一下
发表于 2023-9-16 13:10 | 显示全部楼层
厉害,收藏有空研究下状态监控部分。
发表于 2023-9-16 13:11 | 显示全部楼层
老哥牛!
发表于 2023-9-16 14:13 | 显示全部楼层
题主,你之前的机箱是不是不能装新的大容量硬盘,我有个仿造的款,硬盘位是拧硬盘底部,但是现在有的硬盘底部螺丝孔和这个不太一样了
发表于 2023-9-16 14:30 | 显示全部楼层
文章写的真好,必须收藏
 楼主| 发表于 2023-9-16 14:56 | 显示全部楼层
zhangjun2610 发表于 2023-9-16 14:13
题主,你之前的机箱是不是不能装新的大容量硬盘,我有个仿造的款,硬盘位是拧硬盘底部,但是现在有的硬盘底 ...

不是,一直都没有换硬盘的想法…大容量硬盘不清楚螺丝孔位有没有不同,不过Node 304从下面而不是两侧锁螺丝的确有可能
发表于 2023-9-16 15:08 | 显示全部楼层
8盘位。。。4盘位我都很开心。其实自己想想,组nas我也用不上啊。顺带,这个真的颜值高。。。
发表于 2023-9-16 15:43 | 显示全部楼层
厉害,后面的都没看懂,更不知道怎么玩了
发表于 2023-9-16 17:47 | 显示全部楼层
这个机箱我也看中好久了 就是一直没有信心玩下。等吧
发表于 2023-9-16 17:56 | 显示全部楼层
这个机箱的结构稳定性比上一个宝藏盒好,但是安装便捷,硬件替换方便性非常差,硬盘风扇无法安装T30等超过25mm的风扇,导风板安装会卡线材,1U线材安装不如sfx电源方便,上层板安装或拿出容易划伤机箱,2.5硬盘安装需从内部拆前置屏幕所在位置的背板
发表于 2023-9-16 18:26 | 显示全部楼层
真的帅,软硬都自己动手
发表于 2023-9-16 21:24 | 显示全部楼层
给还有志向考CCIE的人点赞。。。
发表于 2023-9-16 21:34 | 显示全部楼层
本帖最后由 chowen 于 2023-9-16 21:37 编辑

屏幕很赞,同用的ESXI和IPMI方案,当年机箱选的node804,这几年确实多了很多新锐机箱可以选择。另外风扇问题我记得可以在IPMI后台修改阈值,把下限阈值再改小一点就好了,重启也不会失效,这样还能保留风扇的自适应调速。
发表于 2023-9-16 22:34 | 显示全部楼层
NelsonCisco 发表于 2023-9-16 14:56
不是,一直都没有换硬盘的想法…大容量硬盘不清楚螺丝孔位有没有不同,不过Node 304从下面而不是两侧锁螺 ...

我看过我NAS的硬盘,底部孔位有点像SAS盘的布局了。
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

Archiver|手机版|小黑屋|Chiphell ( 沪ICP备12027953号-5 )沪公网备310112100042806 上海市互联网违法与不良信息举报中心

GMT+8, 2024-11-24 01:03 , Processed in 0.027196 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2007-2024 Chiphell.com All rights reserved.

快速回复 返回顶部 返回列表