一次棘手的rootvg更换硬盘处理过程

原文:http://www.talkwithtrend.com/Article/160857

事件起因

下午接到现场工程师电话,一台双系统抽屉IBM P570一个笼子掉了,经过排查电源坏了,经过各种折腾最后修复好了,但是发现rootvg的hdisk1掉了。经过检查,这台小机共有两块本地盘,每个系统抽屉1个,做了rootvg的镜像,现在来看,下面系统抽屉的硬盘损坏,连故障灯都不亮了。工程师反馈,损坏的硬盘无法删除。

事件处理

初次处理

  1. 当时第一反应,直接按PVID删除,告知工程师闪存命令,反馈依然无法删除。
  2. 远程登陆系统,经查询,存在大量的stale pp 
  3. 执行lsvg –p rootvg,提示odm里找不到旧磁盘了 
  4. 尝试通过rmlvcopy做了一下删除镜像的操作,估计没啥希望,结果提示报空间故障 
  5. 检查/tmp空间,发现不足,清理空间  删除多余空间后正常 
  6. 再次尝试rmlvcopy,依然报错,看报错,还是odm里已经没有了旧pv的信息,无法删除成功 
  7. 执行synclvodm 命令,同步信息,提示同步成功 
  8. 但再次执行查询命令,依然报错,抓狂啊 
  9. unmirror和reducevg当然也不行了 又回到了起点

再次分析

反推一下:
更换磁盘需要先解镜像---解镜像提示旧pv不在odm---synclvodm无法同步信息到odm

也就是说,必须要先解决0516-304的报错才可以往下走,但老pvid的信息又回不去,那怎么办?
自己创造一个吧

再次处理

  1. 告知工程师将坏盘拔了,换上新硬盘,扫描识别

  1. 确认坏盘的信息

  1. 通过bc命令,解构出坏盘PVID的八进制格式。

  1. 将坏盘的PVID数值强制写入新盘,发现暂时没变化

  1. 删除hdisk1重新识别后,pvid变成了以前的pvid

  1. 再次执行umirrorvg依然会失败,但是odm中已经有了旧pvid信息,这就好办了


  2. 查看rootvg的相关信息,虽然也异常,但已经不报0536-304的报错了

  1. 重新将hdisk1加入rootvg,可以看到,会出现2个hdisk1并存的情况,不用管它

  1. 执行unmirrorvg解镜像,报着错成功了,hdisk1的分布发生了变化,lv的镜像也解除了,虽然还是出现了2个hdisk1,不过暂时可以不用管他。

  1. 直接执行reducevg,报着错成功了,根据我们的操作,可以忽略报错。最后可以看到删除成功了。

  1. 后面就比较简单了,加盘,做镜像,生成引导,改引导顺序,一起都做了,不截图了。 bosboot -ad hdisk0 chdev -l hdisk1 -a pv=clear extendvg rootvg hdisk1 mirrorvg -c 2 rootvg hdisk0 hdisk1 bosboot -ad hdisk1 bootlist -m normal hdisk0 hdisk1

总结

每次问题的处理都是对基础知识的考验。只要坚信“问题总是可以解决的”,找到合适的切入点,终归会找到合适的解决方法。

(转)一次棘手的rootvg更换硬盘处理过程的更多相关文章

  1. (转)AIX下镜像制作与取消,更换硬盘问题

    AIX下镜像制作与取消,更换硬盘问题 ROOTVG做镜像问题: 下面命令全部在AIX5.4上运行通过 # lspv hdisk0      000a1ddc7f36a2f0      rootvg   ...

  2. 由于更换硬盘没有删除系统自启动读取挂载硬盘导致系统报错:fsck.ext4 unable to resolve 'UUID=a4a7a0f7-b54f-4774-9fb1'

    由于更换硬盘没有删除系统自启动读取挂载硬盘导致系统报错:fsck.ext4 unable to resolve 'UUID=a4a7a0f7-b54f-4774-9fb1' 此时进入系统已root模式 ...

  3. hadoop更换硬盘

    hadoop服务器更换硬盘操作步骤(datanode hadoop目录${HADOOP_HOME}/bin    日志位置:/var/log/hadoop)1.登陆服务器,切换到mapred用户,执行 ...

  4. [ Linux ] 服务器更换硬盘

    服务器型号:ThinkServer RD650操作系统:Red Hat 6.7业务用途:生产环境监控机 接到机房邮件通知,告知某台服务器硬盘告警,并提供了设备SN号和机柜位置.根据提供想相关信息找到对 ...

  5. Ubuntu更换硬盘

    0x00 背景: 目前ubuntu用的是一个80g的硬盘( 一开始没买硬盘,直接拆了一个老老老老的机子来用),系统16.04, 只有一个/分区 ( /dev/sdb1 ) . 新的硬盘是一块256G的 ...

  6. LVM更换硬盘

    #检测坏道 smartctl -a /dev/sdd #硬盘检测 e2fsck -f /dev/mapper/vg_root-lv_data #重新定义空间大小,将原来的大小上减去要移走的硬盘 res ...

  7. DELLR720服务器更换硬盘,启动系统报错:there are offline or missing virtual drivers with preserved cache

    linux系统启动过程中给出错误: There are offline or missing virtual drives with preserved cache. Please check the ...

  8. EXSI宿主机更换硬盘后虚机启动有问题

    环境说明: 最近EXSI主机磁盘坏掉了,重新换掉磁盘以后启动虚机有问题. 虚机的报错信息如下: 找了下修复方法,操作过程为: 尝试修复 (以下是百度的方法) ls -l /dev/mapper mkd ...

  9. 搭建RAID10(5块硬盘)过程并模拟其中一块硬盘损坏

    首先:RAID 10,实际是将RAID 0和RAID 1标准结合的产物,在连续地以位或字节为单位分割数据并且并行读/写多个磁盘的同时,为每一块磁盘作磁盘镜像进行冗余.它的优点是同时拥有RAID 0的超 ...

随机推荐

  1. JMS规范简介

    一.JMS规范 Java消息服务定义: Java消息服务(Java Message Service)即JMS,是一个Java平台中面向消息中间件的API,用于在两个应用程序之间或分布式系统中发送/接受 ...

  2. Swift:使用CAShapeLayer打造一个ProgresssBar

    ProgressBar是一个很小却在很多地方都会用到的东西.也许是网络连接,也许APP本身有很多东西需要加载的.默认的只有一个旋转的菊花,对于打造一款个性的APP这显然是不够的.这里就使用CAShap ...

  3. swift的可选值(optional)

    苹果那文档写了一大堆也没有好好的写一下可选值(optional)这个东西.就是在有一个“Optional Chaining”的章节,但是也不是很充分的说明.最后找了半天在“the basics”里墨迹 ...

  4. mysql - json串新增字段

    1.建表 -- 建表 drop table if exists ta_product2; CREATE TABLE ta_product2( id int primary key auto_incre ...

  5. mysql 统计一个字符在字符串中出现的次数

    CREATE  FUNCTION `str_pcount`(str varchar(255),p varchar(255)) RETURNS int(11)BEGIN    #统计一个字符在字符串中出 ...

  6. handsontable-developer guide-cell type

    单元格类型:这里有很多没见过的用法,得好好总结一下 //预定义的类型Text Numeric Checkbox Date Select Dropdown Autocomplete Password H ...

  7. 咏南中间件新增SQL日志

    为了方便开发时跟踪调试SQL语句的执行情况,咏南中间件新增SQL日志,所有执行过的SQL都会写入SQL日志文件中. SQLDEBUG设为1,启用:设为0,停止写SQL日志.

  8. C#动态编译引擎-CS-Script 简单使用

    Technorati 标记: cs-script 介绍可以参看  http://www.cnblogs.com/shanyou/p/3413585.html 还可以参看 这个  项目介绍 性能测试 c ...

  9. Hibernate 之HQL数据查询

    1. HQL简介 HQL是面向对象的查询语言,与SQL查询语言相比,虽然在语法上类似,都是运行时进行解析,但HQL并不像SQL那样操作的是数据表,列等数据库对象,HQL所操作的对象是类,对象,属性等. ...

  10. 自己从0开始学习Unity的笔记 II (C#条件语句基础练习)

    首先,自己用了下三目表达式,来做了一个闰年的判断,也就是能被400整除,或者是能够被4整除,但是不能被100整除的年份. int year; //输入的年 bool fourHunderd; //能被 ...