HPC集群运维总结2-服务器维护

[TOC]

服务器硬件维护

集群配置的服务器主要有三种,刀片服务器、存储服务器、GPU服务器,其中刀片服务器最多,存储服务器硬盘最多,GPU服务器配置的GPGPU卡最多。

集群硬件主要包括了上述的三种服务器、H3C万兆以太网交换机、Mellanox InfniBand交换机、安全网关、PDU、PDM等设备。

而其中最容易出现故障的就是硬盘和刀片服务器了。存储服务器硬盘故障最多,其次是计算刀片服务器容易出现主板烧坏的情况。下面将简要介绍这两种故障的发现和处理。

硬盘故障发现

最常见的硬盘故障是存储服务器的故障,存储服务器型号是Sugon I640-G15,该存储服务器的存储配置信息为,有两块RAID卡,机箱前置面板和后置面板都有硬盘插槽,其中前面可以放24块SAS硬盘,后面可以放12块SAS硬盘,前置硬盘插槽由RAID0卡管理,后置硬盘插槽由RAID1卡管理,一定要记住顺序了,其实顺序非常好记忆的。

每周需要有时间进行机房巡视,查看存储服务器硬盘的健康状况,这是一种最直接的发现问题的方式。

另外一种发现故障的方式是采用软件的方式,而且软件方式更加方便、直观,最主要就是能够在磁盘亮红灯之前就发现故障盘,可以及早发现问题,因此推荐采用这种方式来进行故障盘的发现。

集群使用的RAID卡品牌好像是Mega,厂家提供了两个工具来进行RAID信息配置和管理,MegaCLI和Mega RAID Storage Manager两个软件,顾名思义,MegaCLI是命令行工具,Mega RAID Storage Manager是图形化管理工具,推荐使用后者,因为配置方便、更加直观、操作简单。但是需要使用VNC连接到集群入口节点node307或者node308,然后通过Mega RAID Storage Manager连接到具体的存储服务器查看RAID阵列信息和磁盘信息,具体使用方法确实挺简单的,百度上面很多文章,这里就不再重复描述了。MegaCLI的优势就是,可以通过Shell脚本来提取磁盘信息,发现磁盘故障,因此可以使用MegaCLI编写磁盘健康监控脚本,由于时间有限,脚本没编写,不过很简单的。上面两种软件,已经被安装到了所有存储服务器,直接使用即可,如果存在问题,可以重新安装。

硬盘故障处理

发现硬盘故障后,首先使用手机拍下存储服务器上面的序列号,直接拨打全国客服热线400-810-0466进行报修,我们是非专项客户,存储服务器产品报修,然后报序列号,他们会查产品是否在保修期内,如果在保,他们会发一块硬盘过来,大约3-5天过来更换。

如果同一个服务器的同一个阵列,如前置阵列或者后置阵列上面出现两块硬盘闪红灯的情况,那么,不能等售后发货了,如果下一块磁盘出现故障,整个集群的数据都有可能丢失,这个时候的处理方式是,从最后的2台没有闲置的存储服务器上面找到一块硬盘,并且从RAID卡管理界面将该硬盘的RAID信息删除(具体做法后面可能会提到,也可以参考网上的MegaRAID的配置教程),然后拔掉这块硬盘,把硬盘从硬盘托上拆下来,换到坏掉的硬盘的所在的硬盘托架上面,并将好的硬盘插入到故障存储服务器上面,刚刚插上服务器时,硬盘指示灯还是会一直亮红色,大概5-10秒过后,RAID卡检测到新的硬盘插入后,如果硬盘上面没有之前的RAID信息,那么RAID卡会进行回写工作。

这里稍微讲解一下RAID卡的工作原理,一般的RAID阵列都会配置1-2块热备盘,热备盘一般会选择ID号靠近最后的1-2块作为热备盘,具体情况可以通过RAID卡配置界面查看到。当阵列中的某一块磁盘(非热备盘)出现故障时,RAID卡根据RIAD级别以及阵列其他磁盘的信息,计算出坏掉的磁盘信息,并将信息写入到热备盘中,即RAID卡将坏掉的磁盘信息还原并写入到热备盘,这个过程可能会比较慢,通常由数据大小和磁盘大小来决定,一般也需要2-3个小时,热备盘写入完成后,阵列又可以正常工作了,其实在写热备盘的过程中,阵列还是可以工作,只是速度慢一些,因为缺少了一块磁盘信息,需要通过计算才能得到,因此在写热备盘的过程中,不能出现频繁I/O请求,否则可能导致RAID阵列崩溃,阵列数据完全丢失的情况,这一点可以通过关闭集群入口节点的登录功能或者限制用户计算来达到。

需要注意的是,如果磁盘出现了故障,最好等到热备盘写完成之后,再插入新的硬盘,新的硬盘插上后,就开始回写过程,回写就是把热备盘的信息复制到新换上的硬盘当中,相当于原来的磁盘信息复制到新的磁盘上,当回写完成后,磁盘阵列又恢复了原来的状态,即原来的数据盘还是数据盘,热备盘还是热备盘,热备盘就不提供数据的读写服务了,只有当其他的磁盘坏掉是,热备盘才会开始工作,用于存储RAID计算出来的坏掉的磁盘的数据。

这其中存在一个情况就是,如果新插入的磁盘上面含有其他RAID卡的信息,很可能就是我们集群的情况,因为最后两台存储服务器node325和node326节点上面本身就有RAID信息,所以将这两块RAID卡上面的硬盘拔下,插入到其他存储服务器时,其他服务器RAID卡会认为他们是外部存储设备,无法正常使用。因此插上带有RAID信息的磁盘时,红灯会一直亮起,无法进行回写工作。那么我们可以通过在好硬盘所在的存储服务器上面,打开RAID卡配置界面,将需要取出来的硬盘从原有的RAID阵列中删除,这样磁盘上面就不包含RAID信息了,插入到存在坏盘的存储服务器上面,就可以马上自动开始回写工作了。

计算刀片故障发现与处理

首先简单介绍一下刀片服务器的构造。实验室的刀片类型是CB60-G15类型的,刀片服务器不能够独立存在,很多刀片同时排列在一起,统一有一个刀片机箱blade来进行管理。刀片机箱型号为TC4600,每个刀箱中可以放置14块CB60-G15刀片。

刀箱一般包含有4个冗余电源模块、散热模块、交换模块、直通模块、控制模块等,电源模块每个最大功率是2000w,支持热插拔,散热模块提供刀箱内部热量的排出,交换模块负责刀箱内部多个刀片的网络互通以及整个刀箱与外部的网络连通,直通模块提供了每个刀片直接与外部网络连通的功能,控制模块提供了刀箱的页面化配置管理、刀片物理状态的获取等、电源、散热模块的功率、转速配置等。

本集群的刀片机箱值安装了交换模块,没有安装直通模块,也就是只有一个以太网卡可以使用。

计算刀片的故障发现非常容易,但是需要一定的耐心。计算刀片出现故障的前兆是,刀片经常出现死机的情况,有时候负载不是很高就开卡住或者反映特别慢,出现这种现象时,可以首先重新启动计算刀片的操作系统,然后再观察一段时间,如果情况依旧,很有可能是主板出现故障,老化或者有电容坏掉了。这个时候,最后进一步做判断,将计算刀片关机,并把另外一块好的计算刀片的硬盘拔下来,插入到怀疑有故障的刀片上面,启动,如果发现故障依旧,那么基本可以断定,该计算刀片的主板出问题了。

计算刀片出现问题的时候,首先在前置面板几下刀片上面的一个数字,这个数字是刀片插槽的编号,然后到刀片所在刀箱的机柜后面,将对应编号的InfiniBand网线拔出来,直接拉那个蓝色的塑料圈圈就可以拔出来。然后返回到刀片正面,有个蓝色的小铁杆,直接往外拨,刀片就出来了一些,然后就可以把刀片整个拔出来了。但是这里不需要把刀片全部拔出来,只需要拔出一些,看到刀片前面的一个序列号标签,拿出手机拍照,记下序列号,然后拨打售后全国客服热线400-810-0466进行报修。大概3-5天之后,会有售后过来进行维修,一般而言就是更换刀片的主板,CPU、内存什么的的还是不会更换的。由于集群保修期大概到2017年12月份,因此需要早点发现故障刀片,尽快更换一批有故障的刀片服务器。

计算节点OS维护

集群所有节点,管理节点、存储节点、计算节点、GPU节点上面默认安装的操作系统是Redhat Enterprise Linux6.2,RHEL6.2 for short,内核版本2.6.32,有非常少部分节点由于用户的需求安装了CentOS7.0或者CentOS7.3版本的操作系统。

由于集群文件系统Lustre是与操作系统相关联的,导致升级计算节点操作系统是一件非常苦难的事情。尽管作为管理员,已经多次提过要升级全部节点的操作系统版本,以满足用户实验需要。但是由于此事真的是难上加上,包括需要一笔费用以及其中牵扯到的利益纠纷问题,因此一直没有升级。

由于很多同学的实验可能需要Linux3.0以上版本的内核,甚至有些同学可能需要Linux4.0以上版本的内核,因此可以考虑给这些用户root权限,让用户自己升级内核,这样用户可以在升级后的内核里面进行自己的科研实验,但是升级完内核之后,用户将无法使用Lustre文件系统。可以考虑挂载NFS文件系统来进行文件的读取,NFS文件系统也是每台机器都进行了挂载,用户可以通过集群入口服务器上传文件到NFS文件系统,然后升级后的内核中可以读取到相应的文件。

当集群的操作系统被破坏后,其他用户使用时存在问题,因此需要进行还原工作,鉴于集群经常存在这样的用户,他们会需要root权限进行一些操作,之后操作系统做了很多修改,再次分配给其他用户使用时会存在很多问题,因此需要进行系统重装。直接安装系统不仅要安装软件还要编译Lustre内核,非常复杂,一个比较好的办法是直接拷贝其他磁盘的系统,修改几个简单的配置文件,系统就搞定了,因此下面介绍两种方法进行系统快速还原。

使用再生龙进行系统备份和还原工作

再生龙工具非常的强大,如果集群需要恢复的系统特别多,那么可以采用这种方式,下面附上再生龙使用教程,百度上面也可以搜索到,参考文档进行使用。

再生龙官网
再生龙详细使用文档

我们需要将再生龙服务器版本刻录到U盘或者光盘上面,然后启动到再生龙进行操作。

系统包括克隆和还原两个步骤,首先需要将一个计算节点的系统使用再生龙克隆到NFS文件系统或者另外一个大的磁盘上面,然后切换到再生龙的还原模式,启动需要还原的计算节点,从网络启动,然后进行还原工作。

需要说明的是设置网卡的时候,只需要设置一个网卡eth0即可,因为eth1是直通模块。eth0的IP地址建议设置为11.11.4.100,子网掩码设置为255.255.0.0,NFS文件系统的IP地址是11.11.2.18,路径是/public/vpublic02,这个目录里面已经备份过几个计算节点的磁盘了,可以暂时使用,或者自己选择一个重新备份。

使用硬盘对拷进行重装系统

数据无价,拷贝之前一定要确定磁盘的用户数据备份了。

首先将需要重装的节点上面的硬盘卸载下来,插入到一个负载不是很大的节点的备用硬盘仓中,然后使用fdisk -l来查看新插入的硬盘的编号,由于本集群的计算节点只有两个硬盘仓,所以后插入的硬盘的编号就是/dev/sdb了。

卸载Lustre和NFS挂载点
1
2
3
4
for i in {'/public','/home','/vpublic01','/vpublic02'};
do
umount $i;
done;
执行dd命令
1
dd if=/dev/sda of=/dev/sdb bs=32256 conv=notrunc,noerror &

后面的&表示以后台形式运行,运行之后会返回一个编号,就是这个进程的PID。

执行如下命令来查看拷贝的进度。

1
2
3
4
5
while kill -USR1 2643;
do
echo;
sleep 10;
done

把2643替换为你自己的进程PID就可以了。
这里的300GB的硬盘,大概拷贝需要40分钟左右,因为是Serial SCSI硬盘,速度稍微快一点。

修改IP地址

修改Ethernet和IB网IP地址,通过修改/etc/sysconfig/network-scripts/中的ifcfg-ib0和ifcfg-br0两个文件中的IP地址即可。

删除rules文件

查看/etc/udev/rules.d/70-persistent-net.rules文件,修改对应参数,我一般比较懒,直接删除,重启会重建。

修改主机名

修改/etc/sysconfig/network文件,在RHEL6中该文件存储的是系统主机名。RHEL7系统中,请使用hostnamectl sethostname hostname命令设置主机名,请将最后的hostname替换为你想设置的主机名。

磁盘检查

很多时候,母机器上面有一些inode信息不一致或者坏掉的磁盘块,因此需要进行一下简单的修复工作。请依次执行一下命令,检查和修复磁盘。

1
2
fsck -y /dev/sdb1
fsck -y /dev/sdb2

其中dev/sdb1和/dev/sdb2为需要还原系统的磁盘的分区编号,根据具体情况进行替换即可。

放回磁盘,启动系统

将硬盘取回,放到原节点,启动节点,则会进入一个初始化的过程,有时会由于存在磁盘中的块与索引信息不一致的情况,尽管之前做过检查,但是在插入到新机器上后,还会出现,它会提示你输入root密码进行修复或者按Ctrl-D取消,这时需要输入root密码,因为是拷贝的其他节点的数据,因此root密码也是被拷贝节点的密码。如果root密码忘记,可以将磁盘重新插入到一台机器,将那台机器的/etc/shadow文件拷贝到磁盘中,这样就相当于重置了root密码。输入root密码之后,有可能提示你磁盘有问题。这个时候需要进行修复。此时一般会提示你哪个分区有问题,例如/dev/sda1有问题或者是/dev/sda2有问题,那么需要我们进行修复,输入一下命令,建议将所有分区一次性修复。

1
2
3
4
5
#修复第一个分区,这个分区一般是引导分区
fsck -y /dev/sda1

#修复第二个分区,这个分区一般是主文件分区
fsck -y /dev/sda2

有时会提示你是/dev/sda2有问题,但是建议也修复一下/dev/sda1,这样重启之后不会因为文件系统有小故障导致重新修复再次重启。

输入reboot重启即可。

被拷贝机还原

将被拷贝的机器的文件系统挂载还原。或者直接重启也可以。

再次强调,数据无价,拷贝之前一定要确定磁盘的用户数据已经备份了。

ZHANGCHI wechat
关注微信号进一步交流