上个月冲动消费,入手了一台 HPE ProLiant MicroServer Gen8。其实我早想搞一台正经的服务器来玩了,因为群晖的魔改 Linux 总是玩的不那么爽。现在心愿实现,开始折腾。
本篇为二手 MicroServer Gen8 折腾记的第一篇,记录拿到服务器之后做的一些初始化的工作。
重置 iLO
到手之后,我发现我把事想简单了,服务器一般只给一个 VGA 口,而这台也不例外,然而,我这里没有一个能接 VGA 口的设备。是的,你没看错。不止显示器没有 VGA 口,连电视也没有。遂果断下单了一个 VGA 到 HDMI 转接器。第二天收到快递,兴冲冲的接上,却发现只能显示 POST 画面,之后无论是正常继续启动,还是进 RBSU(ROM based setup utility),电视上都是无信号。事到如此,接显示器这条路算是堵死了。别问我为什么不买个支持 VGA 的显示器,你自己想想这成本划得来么?
虽然接显示器不行,但是天无绝人之路啊,地球人都知道,正经服务器上都有一个带外管理系统,Gen 8 也不例外,带有惠普的 iLO(Integrated Lights-out)带外管理模块。iLO 的地址在 POST 界面左下角有显示,
但是这个地址跟我的网络不在一个网段啊?没办法,拎出来一台带网口的笔记本电脑,把电脑跟 iLO 直连,给电脑配置静态 IP 为 10.132.190.34
,子网掩码 255.0.0.0
,试一试,果然能 ping 通,问题解决。开玩笑,哥们可是网络工程专业的。
接下来就要重置 iLO,省得因为上任机主的配置引出什么别的麻烦。但是问题又出现了,不知道什么原因,iLO 的网页不是打不开,就是报错 Connection with iLO cannot be established
。一顿上网冲浪之后,发现还可以用 SSH 连接,果断掏出 putty
,好在上任没改 iLO 的默认管理员密码,不然我就真的抓瞎了。
登进去之后,反手就是一个 Reset /map1
来重置 iLO 的所有配置,过了一会 iLO 重启完毕,再次 SSH 登录,把 DHCP 打开,这样我就能给 iLO 分配一个我的内网的地址了。
1 | </>hpiLO-> cd /map1/dhcpendpt1 |
然后 iLO 会自动重启,过几分钟重启完成之后,就能在路由器里面看到 iLO 分配的地址了。
更新 iLO 固件
上面一顿操作重置 iLO 之后,很神奇地,iLO 的 web 端能正常打开了。那么接下来,我就要升级 iLO 固件的版本,因为自带的 iLO 版本太低,反正自己用着玩,用新不用旧。
到 HPE Integrated Lights-Out 4 (iLO 4)这里进入 Online ROM Flash Component for Windows x64 - HPE Integrated Lights-Out 4
下载最新的 iLO 4 固件。目前最新版是 2.81
。下载好安装程序之后,打开运行,选择 Extract
把安装包解压缩到一个地方。Install
是不能用的,因为只能在服务器上才能自动安装。解压后可以看到一个叫 ilo4_281.bin
的文件,这个就是 iLO 的固件。
进入 iLO 控制台的 Administration -> Firmware
页面,File
里面选择 ilo4_281.bin
这个文件。
然后点 Upload
,静等固件上传和更新完成即可。期间不要刷新页面或者关掉页面内的进度条弹窗,地球人都知道,刷机期间手贱就是找事。
修复 iLO 降级
iLO 重启之后,我看到一条报错说 iLO Self-Test reports a problem with: Embedded Flash/SD-CARD
,在网上一顿冲浪之后,说可以尝试在 Diagnostics
页面里 Reset iLO 来修复。
但是我在 Reset 之后,问题依旧存在,按照网上的说法来看,应该是硬件有问题,要更换板载 Flash 了。
更新:发现了另一篇博客 [Fix] ILO HP Error – Embedded Flash/SD-CARD: Embedded media manager failed initialization,说强制格式化 NAND 可以修复,我试了下,格式化并重启之后,一开始虽然显示正常,但几分钟后依旧会报同样错误。
此外根据 HPE 官方的 advisory:
Step 1) Upgrade the iLO 4 firmware to version 2.61
Step 2) Perform a NAND format
Step 3) Check the iLO status If the iLO status is normal, then skip to Step 6 If the iLO status is still degraded, continue to Step 4
Step 4) Schedule downtime; AC power-cycle and repeat the NAND format
Step 5) Check the iLO status If the iLO status is normal, continue to
Step 6 If the iLO status is still degraded, then skip to Step 7
Step 6) Perform these final steps if the system board does not need to be replaced: Reboot the server; reinstall IP; and refresh the server in OneView (if server is managed by OneView)
Step 7) If steps 1-4 did not resolve the degraded iLO, replace the system board.
确实走到了 Step 7
,只能 replace the system board
。╮(╯▽╰)╭
配置 RAID
这一部分因为不方便复现,故使用 HP MicroServer Gen8 不疼使用教程 - Eddie’s Blog的文章配图用作参考。向 Eddie 表示由衷的感谢!
我在 3 和 4 盘位插了两块 1TB 的固态硬盘,1 和 2 盘位暂时空下来。这么做的原因是,1 和 2 盘位是 SATA-3,3 和 4 盘位是 SATA-2,所以我打算把更快的接口留给日后拓展更大容量的机械硬盘,而固态硬盘本身读写速度就很快,插在一个慢点的接口上也不会造成很大的性能问题。
插硬盘之前要先关机,因为 Gen 8 的硬盘位是不支持热插拔的。插好硬盘后开机,在 POST 界面出现 HP Dynamic Smart Array B120i
的初始化信息时敲 F5 来进入 RAID 配置页面。这里可以多敲几次来保证成功率,就像进 BIOS 敲 del 那样。如果进入成功,就会看到一个写着 HP 的大球,这时候系统正在加载 RAID 卡的配置界面。
进来之后,就可以点 Dynamic Smart Array B120i RAID
页面的 Configure
按钮来配置 RAID 了。
装 ESXi
前面洋洋洒洒整了一大堆,但那都是前置任务。到这一步开始主线,装系统。Gen 8 主板上带了一个 TF 卡槽和一个 USB 2.0 接口。起初我打算把 ESXi 装在 TF 卡里面的,但是试了一张之前用过的老卡,安装慢的令人发指,又试了一张几个月前买的卡,结果 ESXi 安装程序发现不了,怀疑是系统没识别。我懒得折腾卡了,遂拿出一个闲置的 U 盘,插在了主板的 USB 口上。
至于 ESXi 系统,我选择了惠普定制的版本,毕竟不知道 VMWare 官方版跟定制版差别在哪,还不如直接选厂商定制的版本来的方便。镜像可以到这里下载,记得要选 Pre-Gen9 Custom Image
。下载好 Install CD 之后,进入 iLO 的远程控制台,HTML5 的就行,然后点击标题栏的光盘按钮,选 CD/DVD - Local *.iso file
,就可以把 ESXi 的安装盘插进服务器的虚拟光驱。
打开服务器电源之后,就会正常从光盘启动进入 ESXi 的安装程序。安装步骤很简单,这里就不再赘述了,唯一要注意的就是选对安装位置,因为安装程序会把一整块盘当作系统盘,所以我个人建议把它装在 TF 卡或者 U 盘里。也不用担心 TF 卡或者 U 盘会降低系统性能,我这里实测没有什么明显难忍的性能问题。
换阵列卡驱动,更新系统
这里参考了第三篇:虚拟化层 - MicroServer Gen8 + ESXi Server 6.5u3 部署踩坑记 - 天一先生的游牧生活,这里向作者表示感谢!
装好 ESXi 之后,我先装上了 Ubuntu Server 22.10
和 Windows Server 2019 Datacenter
。用了一段时间,总感觉有点奇怪,尽管说这是好多年前的机器,性能不强我是有心理准备的,但也不至于点个开始菜单都要好几秒,打开资源管理器也要将近半分钟。今天等待程序载入的时候看了眼任务管理器,发现磁盘占用率竟然 100%,要知道我这是两块固态硬盘组的阵列诶!既然有问题,就上网搜一搜呗,这不冲浪不知道,一冲浪吓一跳,惠普给 ESXi 6.x
打包的 B120i
板载阵列卡驱动有性能问题,会导致磁盘读写异常缓慢。针对这个问题,网上最普遍的一个解决方案就是把阵列卡驱动退回到 ESXi 5.x
中的最后一个版本 5.5.0-88
。
那话不多说,搞它!
首先,把所有虚拟机关机,全部关机后,在 ESXi 的主机
页面里,点击操作
菜单中的进入维护模式
;在点击操作
菜单,进入服务
,选择启用 Secure Shell(SSH)
,因为后面要 SSH 进 ESXi 里面安装驱动。
下载 http://downloads.hpe.com/pub/softlib2/software1/pubsw-linux/p1749737361/v98767/hpvsa-5.5.0-88.zip
,完成后,解压这个 ZIP 包,得到驱动本体 scsi-hpvsa-5.5.0-88OEM.550.0.0.1331820.x86_64.vib
。将这个 vib
文件上传到 ESXi 的 /var/log/vmware
目录下。上传成功后,SSH 进入 ESXi,执行如下命令:
1 | # 卸载当前版本的驱动 |
重启完了,进 ESXi 看了眼驱动,发现 RAID 也没认出来,驱动也变成 vmw_achi
了,这是没认出来阵列卡驱动啊。搜了一下,发现可以强制禁用 vmw_ahci
,于是再进 SSH,执行 esxcli system module set --enabled=false --module=vmw_ahci
这条命令,再重启之后,RAID 回来了,驱动也变成 hpvsa
了。
如果你在禁用 vmw_ahci
之后还不能成功加载 hpvsa
驱动,那么就得先执行 esxcli software vib remove -n scsi-hpvsa -f
来卸掉它,重启之后再重装。这时候千万不能操作硬盘,否则可能造成数据损毁。
换驱动的时候了解到,VMWare 也会给 ESXi 推出一些系统修正补丁,那有补丁当然要打啊。一开始我想着参照 ESXi 6.5 - VMware ESXi Patch Tracker这个网站给的命令在线更新,但是一直报 Got no data from process
这个错误,VMWare Communities上面也有人遇到同样的错误,解决方法是下载补丁然后手动安装。
关于
Got no data from process
这个错误,根据 How to Upgrade from VMware vSphere ESXi 6.7 to 7.0中的描述:If you see the error message:
Got no data from process: LANG=en_US.UTF-8 /usr/lib/vmware/esxcli-software profile.update -d “https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml“ -p “ESXi-7.0.0-15843807-standard”,
check whether there is a persistent scratch partition. There may not be a persistent scratch partition if you’re running ESXi from a USB flash drive.
而根据 How to Run ESXi from a USB Flash Drive所说:
If ESXi is installed on a USB flash drive or SD card whose size is 8 GB or more, partitions #2 and #3 are not created. The Scratch directory used to store logs is linked to the /tmp/scratch directory that is located on the RAM drive.也就是说,如果把 ESXi 装在大于等于 8GB 的 TF 卡或者 U 盘里面的话,就会缺少一个
scratch
分区。另外根据这个分区图,我还发现,如果把 ESXi 装在硬盘里的话,它会把剩余空间作为数据存储,而不是像网上一些文章说的只用来装系统,这个我后面有时间会再测试一下。
那么,首先到 Product Patches这里,Product 选 ESXi (Embeeded and Installable)
,Version 选 6.5.0
(如果你装的不一样,以你为准),点 Search 后会列出一堆补丁,选最新那个,点 Download Now 来下载补丁的 ZIP 包。然后点 View Details
,我们要在详细信息页面找到 Image Profile 的名字。
关于什么是 Image Profile:
VMWare 文档说:Image profiles define the set of VIBs that an ESXi installation or update process uses.
也就是说,Image Profile 定义了包里的哪些 VIB 会被安装。
每个补丁包中都会带有 2~4 个 Image Profile,根据 VMware ESXi Image Profiles的描述,各个 Image Profile 的含义是:
- ESXi-5.5.0-20140704001-standard - 包含全部补丁
- ESXi-5.5.0-20140704001-no-tools - 包含除了 VMware Tools 之外的全部补丁
- ESXi-5.5.0-20140701001s-standard - 只包含安全补丁
- ESXi-5.5.0-20140701001s-no-tools - 只包含安全补丁,同时没有 VMware Tools
因为我要更新所有的 VIB,所以我将要用 ESXi-6.5.0-20221004001-standard
这个 Image Profile。SSH 进 ESXi,执行 esxcli software profile update -p ESXi-6.5.0-20221004001-standard -d /vmfs/volumes/63a1b271-3340b157-711e-d0bf9c4694d8/ESXi650-202210001.zip
开始安装(记得把 -d
参数指定的绝对路径改为你的机器上面的路径)。安装过程比较耗时间,这期间可以 tail -f /var/log/esxupdate.log
来看 ESXi 正在干什么,毕竟看着日志在跑,心里也有底,不然总害怕系统是不是死掉了。
更新成功后,esxcli
会打出来哪些包被更新了,但是实在是太多,我根本懒得看,直接重启。重启之后,ESXi 能正常进系统,存储和虚拟机都正常载入,说明没出啥毛病。这时候就可以退出维护模式,给虚拟机开机。有一说一,现在不管是开机还是打开什么东西,反应确实快了不少,看来驱动导致的硬盘性能问题已经成功解决。