iwantcomputer
作者iwantcomputer·2019-06-28 12:47
系统工程师·dg

记一次批量装机过程中遇到的坑

字数 4336阅读 8726评论 3赞 9

近期需要上个大项目 POC ,由于新采购的机器还未到货,所以只能从现有的测试环境 ESXi 物理机里面抽出来 9 台临时用上,给它们装上 CentOS 7.2 ,然后交给阿里的专家们来部署。不曾想在这装机过程中,这里面遇到的坑真是一个接一个,下面容我一一道来。

01 服务器配置及背景介绍

此次需要用到的服务器,型号是华为 RH2288H V5 ,具体配置如下:

CPU : Intel Xeon Gold 5115 * 2
RAM : DDR4 ECC 384GB
HDD : 900G 2.5" SAS 12Gbps * 2 (front)
SSD : 240G M.2 SATA (rear)
Network : 10GB optical 2 , 1GB electrical 2 via Intel X722

由于服务器同时配备了机械盘和 M2 SSD ,所以必然要配备两块 RAID 卡,一块是 Avago SAS3108 用于管理前面板的 SAS 接口 2.5 的机械盘,另外一块是 Avago SAS3004-iMR 用于管理背面的 M2 SSD 。

原服务器已经将 M2 SSD 所在的 RAID 卡开启了 JBOD 模式,并把 M2 SSD 设为单盘 JBOD 模式,然后在 SSD 上安装 EFI 模式引导的 ESXi 。 前面板在之前机器作 ESXi 使用时,没有安装任何机械盘,所以 RAID 卡也是默认的 RAID 模式。

阿里的专家告诉我们,他们需要使用 CentOS 7.2 版本的操作系统,并且文件系统必须要使用 ext4 而非 CentOS7 默认的 xfs (原因猜测是 CentOS 7.2 的 xfs 内核驱动有问题,会在 docker 环境下触发内核 bug 造成 kernel panic ,这个是 7.2 系统内核的一个已知 BUG )。每台服务器都需要单独再插两块 900G 的 SAS 机械盘,然后把操作系统 CentOS 7.2 安装在第一块 HDD 上,第二块 HDD 和 M2 SSD 暂时留空,等装完系统后再分空间用于存放数据。

由于需要安装部署 CentOS 的机器有 9 台之多,所以我们计划此次实施的操作大概步骤如下:

1 、 为了防止原有的操作系统干扰 PXE 引导,拔掉 M2 SDD ,除了用于 PXE 引导的网线,其它网线也全部拔掉。这样就可以实现服务器按了电源开关开机之后无需任何人工操作即可自动进入 PXE 引导的 clonezilla 并配好 RAID 卡属性。
2 、使用 PXE 批量引导 clonezilla 并自动运行 storcli 脚本,将 9 台机的机械盘所在的 RAID 卡开启 JBOD 模式,并将两块硬盘也配置为 JBOD 模式。
3 、通过 PXE 批量引导 CentOS 并使用 kickstart 脚本实现全自动安装。
4 、批量安装完 CentOS 之后,再针对每台机做相应的配置。

02 关于网卡的坑

既然是要用 PXE 引导,那必须要用到网卡。当网络管理员帮我们拉好网线,我们开机之后就发现了网卡上的灯不亮??网管在交换机上看端口也是 down 状态。这个问题着实困扰了我们很久,为了验证到底是哪里出了问题,我们做了如下的测试:

1 、换了一条网线,灯不亮。
2 、换了旁边的一个网口,灯不亮。
3 、用笔记本电脑的网口直连服务器的网口,灯亮了。
4 、网管换了一台交换机,灯亮了。

当我们对比了两台交换机的区别,发现灯不亮的那台是百M交换机,亮的那台是千M交换机。一般来说网卡不都是应该是 100/1000M 自适应的吗?后面查了一下这个网卡的型号,我们才发现事情并不是我们想象的那样。

上面这个图是从华为官网关于 RH2288H V5 的页面截下来的,明确说明了千M口只支持 1000M 的速度,不支持10/100M ,万M光口只支持10000M ,不支持1000M 。后面进一步了解,原来这个是 Intel X722 网卡芯片的规格所限制的。这个 X722 同时能支持千M 和万M的速度,一般配这个芯片的服务器都是两个千M电口,两个万M光口。

在踩完 X722 不支持百 M 自动协商这个坑之后,我们开始尝试用 EFI 模式 PXE 引导 CentOS 7.2 的安装镜像,发现原来很快就能开始的加载内核的过程,似乎卡住了,到了五六分钟之后干脆就直接进入 emergency 了,这让我们很疑惑。

为了验证到底是哪里的问题,我们决定先用 U 盘引导一下 CentOS 7.2 的安装。在进入到安装界面之后,可以看到系统正确识别到了 X722 的网卡,但是在配上静态 IP 之后,直接报错了。我们怀疑可能是因为 CentOS 7.2 是 15 年发布的版本比较老,内置的 X722 网卡的驱动有问题,然后尝试用 CentOS 7.4 之后,配 IP 就没问题了,用 PXE 引导也没问题了。

03 关于 RAID 卡及硬盘遇到的坑

前面说到,在安装 CentOS 前我们需要先配一下机械盘所在的 RAID 卡的模式,把 Avago SAS3108 这个 RAID 卡启用 JBOD 模式,然后把上面的两块硬盘由 unconfigure good 改成 JBOD 。我们采用的方法是引导一个小的 Linux 发行版 clonezilla ,然后传入 storcli 和脚本,让它自动引导并执行修改 RAID 卡和盘的属性。相应的命令参考如下:

storcli64 /c0 set jbod=on; 
# 开启c0的RAID控制器的JBOD模式

storcli64 /c0 /fall delete;  
# 在c0控制器上删除所有外来的硬盘RAID信息

storcli64 /c0 /e252 /s0 set jbod;
storcli64 /c0 /e252 /s1 set jbod;
# 把c0控制器的e252-s0/s1号槽位硬盘设为JBOD模式
# 硬盘具体槽位,可以用 storcli64 /c0 show看到到

我们用上面的脚本拿第一台服务器做了测试,达到了预期的效果,所以我们将剩余的 8 台机都开机,准备用网络引导并配置 RAID 。


预计 RAID 都修改完了之后,重新修改了 dhcpd 的配置,把 tftp 引导的 EFI 文件指向 CentOS 7.4 的 grubx64.efi ,重启 dhcpd 之后,服务器就应该能自动引导 CentOS 并通过 kickstart 自动进行安装了。

安装部署的进度似乎正在朝我们预期的方向进行中,但当我们逐台机接显示器查看安装进度时,发现 9 台机中只有 7 台显示正在安装,另外 2 台机居然是在 ESXi 的 DCUI 主界面,而且两台机显示的 IP 地址居然是一样的???

于是我们手动重启了这两台机,进入 BIOS 看了一下 RAID 配置,发现两台机都有一个 RAID VD ,而且状态都是 degraded 降级。再结合在 ESXi DCUI 界面看到显示的 IP 地址一样,我们怀疑可能这两块盘正好是用在以前另外一台服务器上而且做过 RAID1 ,而且正好被我们把这个 RAID 组的两块盘无意中分开了而且装在了这两台服务器上。

我们来还原一下整个服务器启动的过程。这两块盘为 A 和 B ,当它们分别装到服务器 C 和 D 上去之后,会被 RAID 卡识别到盘上有 RAID 信息,然后 RAID 信息就被自动导入了,于是服务器C和D上就存在了两个一样的 RAID 组,由于各少了一块盘所以 RAID 卡会显示 VD 处于 Degraded 降级状态,但是此时 RAID1 还是能正常提供服务的,所以 BIOS 就识别到了硬盘A和B上的 ESXi 的 EFI 分区,并自动启动到 ESXi 系统里面去了。

所以当我们第一次通过 clonezilla+PXE 批量修改 RAID 卡的属性启用 JBOD 时,由于这两台机的盘上有操作系统,它们根本就没有从 PXE 启动而是直接启动到盘上的 ESXi 里面去了,这就是我们接上显示器之后看到了 ESXi DCUI 的原因。

找到了原因,就很容易解决了,把这两台机手动选一下 PXE 引导,再次用 PXE 引导一下 clonezilla 的自动 storcli 脚本,终于能正常引导到 CentOS 的安装界面了。

04 关于 Legacy 模式不识别第二块 RAID 卡的坑

在装完了几台机之后,阿里的专家们告诉我们需要另外 4 台机用 legacy 模式安装他们自己定制的系统,本来我们以为这是个很简单的问题,无非就是在 BIOS 里面设置把 UEFI 模式改成 legacy 模式的事情。

使用 PXE 引导安装都正常,但是在重启之后死活无法启动。 Legacy 传统模式引导在初始化了第一块 RAID 卡之后,没看到初始化第二块 RAID 卡在屏幕上打印的日志信息。但是奇怪的是用 PXE 引导到 CentOS 安装界面之后,系统里面又可以识别到,这个就非常奇怪了。

我们当时怀疑是不是 RAID 卡坏了,不过在切到 UEFI 模式之后,一切又正常。修改了 BIOS 里面可能的各种配置都无用,最后正当我们已经准备放弃时,无意间在翻到华为的官方文档里面,找到了这么一段话:

当服务器配置了较多的可启动设备时,在 Legacy 模式下可能出现部分设备无法正常启动,建议使用 UEFI 模式启动, UEFI 模式较 Legacy 模式可以支持更多可启动设备;如需要使用 Legacy 模式,建议根据实际业务场景禁用串口重定向或网卡 PXE 等 。

于是尝试了一下,把串口重定向关闭之后,终于能正常识别到两块 RAID 卡并能正常安装引导操作系统了。这个真的是个天坑啊。

05 结语

通过本次装机,总结一下有如下的经验教训:

1 、系统正常识别到了网卡,也未必就是能正常使用,尤其是在 Linux 中。
2 、比较新的硬件,一定要用比较新的操作系统,不然很可能会有驱动问题。
3 、 RAID1 的两块盘,内容完全一样,任意拿一块插到别的机器上也能正常使用。
4 、机器数量越多,(比起手动安装) PXE 引导批量安装系统的效率就越高。
5 、 UEFI 模式极大地简化了系统的安装,无论是使用 U 盘安装,还是通过 PXE 安装。
6 、 RAID 卡有命令行界面的管理工具非常重要。
7 、比较新的服务器,引导还是用 UEFI 模式吧, Legacy 模式没准就遇到各种千奇百怪的坑。

文章作者:zhufeng

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

9

添加新评论3 条评论

Danniel_gongDanniel_gong存储工程师DATA
2019-07-01 22:38
谢谢分享,好的实战经验。
a520520168a520520168系统工程师索菲亚
2019-06-28 16:55
首先感谢分享。 然后吐槽一下,看你们服务器的配置也不低,数量也多,还用着阿里的技术。。。怎么机房里居然允许有百兆交换机的存在呢??

noxudu@a520520168 哈哈哈同问

2019-07-02 07:09

iwantcomputer@a520520168 因为网络(设备)不是我们组管的。。。

2019-06-28 20:40
yellow_finyellow_fin项目经理浙江兰德纵横网络技术有限公司
2019-06-28 16:43
写得很详细,可惜没有机会实践。。

iwantcomputer@yellow_fin 会有机会的

2019-06-28 20:40
Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广