背景:
新集群 Datanode 使用两个 SSD 做 raid 1 作为根磁盘,12 个 SAS 单独做 raid 0 作为数据盘,在机器部署完毕后,缺发现 PD slot 4 和 slot 5 丢失了 VD,然后挂载目录默认使用了VD初始化,但是挂载目录和 PD 对应不上,这样将会给后续维护集群磁盘带来不少麻烦。
处理手段:
修改 Linux lable, 使挂载目录和 PD 再对应上
具体命令(python 代码展示):
""" tune2fs -L /%s /dev/sd%s1 """ %( label , device )
然后使用 mount -L 将修改了的 lable 挂载到挂载目录上
具体原理是 : PD <--使用 Mega --> VD <--操作系统--> device 分区 <--对应--> lable <--挂载--> 目录 <--规范对应--> PD
好吧,单盘做 raid 0 ,转了一个圈重新回来。。。
做操作的使用要相当注意:
1. 确实服务完全停止了,不要被 puppet 之类的服务带起
2. 修复好了后不要急着启动 服务,否则 datanode 的 Threads Waiting 会大量增加
3. 在 jobtracker 和 nn 的 web 界面时刻观察修复后的 dn 的情况,有任何不对停止服务
但愿剩下的 39 台修复能顺利......
嗯,手动和自动修复下,所有的机器缺失 VD 已经修复成功
过程中做的一些事情,给 新集群的磁盘自动化完善还是很有帮助的
下面这条命令可以用于新集群的 自动 repair
tune2fs -l /dev/sdl1