一、背景
①因HDFS特点之一:容忍硬件故障——将硬件故障视为常态,所以我们在维护大数据集群时,需要及时解决硬件故障,保障底层的稳定。
②使用产品华为FusionInsight HD 6.5.1。
③目标:后台定位坏盘IP、位置、具体原因,并实现修复。
一、如何获取坏盘位置?
①登录FI前台界面,进入集群主NameNode节点的原生web UI页面 (集群节点较多,使用联邦机制,有三个NameNode节点。经过测试,三个节点的原生页面反馈的“Datanode Volume Failures”信息均相同)
②查看异常数据节点及具体信息(主要关注IP信息和Failed Storage Locations:故障存储位置)
问题一:如何在主机上获取这些信息呢?
③登录客户端主机,执行 curl -s -k --negotiate -u : "https://10.78.152.14:25003/jmx" 命令,并将执行结果输出到txt文本,以便后续分析。
通过搜索关键字"failedStorageIDs",可定位具体IP信息和坏盘位置(匹配到 "failedStorageIDs" 关键字9次,与前台页面数量一致)
问题二:如何通过切割出我们想要的信息?
①通过jq命令
②通过python
三、如何自动化定位异常原因?
" /opt/MegaRAID/storcli/storcli64 /CALL SHOW "这条命令的含义是什么?
使用 storcli64
工具来显示 MegaRAID 存储控制器上所有虚拟磁盘(Virtual Disk)的详细信息。每个部分的含义:
-
/opt/MegaRAID/storcli/storcli64
: 这是storcli64
工具的路径,通常在/opt/MegaRAID/storcli/
目录下。这是存储管理工具的可执行文件。 -
/cALL
:/c
是控制器(Controller)的缩写,ALL
表示对所有控制器执行操作。如果系统有多个存储控制器,这样的命令会对它们全部生效。 -
SHOW
: 这个参数表示执行SHOW
操作,用于显示相关信息
执行结果如下:
1.查看Physical Drives的数量是否为12/14,判断为“掉盘”(根据实际情况改变)
2.若没有掉盘,则查看每块盘的状态,正常为Onln,若异常状态为faild或ubad,把异常盘的EID:SIt和State抛出即可,ugood,则表示"未做raid”
"空挂"情况如下所示:
上图为sda1未挂载
将上述结果告知主机组,选择业务低峰期(夜晚)进行维修
白天需要停止数据节点DN和NM实例,注意:停止DN实例会导致HDFS副本迁移,需逐台停止,待副本数完全迁移完成后,停止下一台。
四、修复过程经验分享
1.掉盘情况,在厂商现场换好盘后,新盘插上后要做raid0,使用storcli64工具,做好时候lsblk可以看到/dev/sdx。
2.使用parted创建分区,创建好后lsblk可以看到/dev/sdx1,blkid可以看到sdx的uuid。
3.合理选择文件系统格式,格式化/dev/sdx1。
4.写入fstab。
5.mount -a 挂载
6.使用chown和chmod,修改数据目录权限、所属人、所属组,检查无误后启动主机DN和NM实例。
若磁盘为是LVM逻辑卷管理,类似于下图所示
1.pvcreate /dev/sdx
2.vgexcreate vgname /dev/sdx
3.lvcreate -l +100%FREE vgname -n lvname
4.格式化mkfs.xfs/mkfs.ext3 /dev/mapper/vgname-lvname
5.fstab使用/dev/mapper/vgname-lvname挂载