在AIX环境下,因维护误操作、存储mapping错误等,不小心将LV误删除,这种损失通常是巨大的。删除后的不当保护及恢复操作可能使数据无法恢复,也可能增加处理的时间与算法复杂度。如何有效保护现场,并选择正确的数据恢复方案是非常重要的。

AIX的存储层有太多文章描述,做为铺垫,简要描述一下。PV相当于物理磁盘(对于存储,是存储映射过来的卷,对于操作系统而言,等同于物理硬盘),若干个PV组成一个VG,意味着可以将容量不同的存储空间合起来统一分配。为了实现这个目的,AIX把同一个VG的所有PV按相同大小的存储颗粒进行空间编排,这个存储颗粒就是PP。而分配空间时,以若干个PP(可能是不同PV上的),做为使用集合,这个集合就是LV。

AIX的LVM层VGDA区域有一个固定的PP到LV的映射表,称为PPMAP。每个PV的所有PP从第一个(PP#1)开始,以固定大小的32个字节记录本PP归属于哪个LV。删除AIX中VG的某个LV,底层上最根本的就是释放这个LV原先占用的PP,也就是清0之前所有占用PP的32字节PPMAP条目,另外还会做一些诸如LV名称的清理、LV设备摘要信息的清理等工作。

LV被删除后,不建议贸然尝试用mklv等操作试图进行灾难恢复。虽然mklv本质上不会清除pp内容区,但有些情况会损坏数据,比如:如果故障前后的PP分配表不相同,但前面PP表分配正确,这样,文件系统可能可以识别,甚至于可以挂上。不过,麻烦的是,挂上后某些结构可能会出现错误,以至于被系统自动修正,事情就会变得更糟。即便是只读方式mount,也不是最优选的做法。

如果时间允许,AIX LV删除后的恢复方案大致为:

1、保持VG状态,不新建任何LV。

2、使用备份手段,对VG中所有的PV做完整镜像。

3、在镜像中进行数据提取恢复。或保护镜像后以分析好的PPMAP,重建丢失的LV。

上述方案的宗旨为:所有操作尽可能可回溯。

【如何完整镜像故障卷】

来说说如何对AIX中的PV做完整镜像(从目前的数据恢复技术看,多数处理和分析过程首选是WINDOWS环境,所以,镜像方案尽量兼顾镜像出来的数据可以在WINDOWS下直接访问):

第一种方法:如果存储自身有卷镜像功能,可以尝试之。

第二种方法:如果AIX环境中有足够空间,放得下需要镜像的pv,可以将pv镜像成文件(或LV)。如果是文件,可以通过FTP等手段传出来。(不建议此方法)

第三种方法:另外构建一台NFS server,以nfs的方式用dd将pv镜像到nfs上。当然如果aix上可以挂载cifs,甚至于直接可以镜像到windows的共享文件夹下。但windows下如果生成大文件,有可能会越来越慢,可以尽量使用WINDOWS2008或选择其他方案。

第四种方法:建议的方案。具体为构建块设备mapping至aix环境,直接以块设备至块设备的方法进行镜像。可选择的块设备有fc lun,iscsi等。如果不具备fc环境的支撑,至少iscsi(可以是软iscsi)是足够好的方案。

以windows端做iscsi target,AIX环境做iscsi initiator为例,下面为详细过程:

1、在配置网络环境,保证AIX与WINDOWS网络可通。

2、在WINDOWS上搭建ISCSI TARGET,以 下图starwind为例,创建了一个名称为pv0的iscsi磁盘。

3、返回aix平台,确定是否安装iscsi initiator:

lsdev |grep iscsi,如果提示“iscsi0     Available              iSCSI Protocol Device” 表示ISCSI客户端已经安装,设备号是iscsi0。

也可以用lslpp -L|grep -i iscsi 确认是否已经安装了ISCSI软件包。

如未安装,先安装iscsi initiator。

4、修改aix环境中/etc/iscsi/targets文件,在最后增加一行(本例中windows iscsi target的ip是192.168.1.9,iqn见上图)

192.168.1.9 3260 iqn.2008-08.com.starwindsoftware:tel-pv0

5、在aix平台执行cfgmgr -l iscsi0 (见步骤3中的设备号),重新扫描iscsi设备。

6、lspv 查看是否识别到iscsi设备。本例结果如下:

可以看到hdisk3已经认到,可以使用lsattr -El hdisk3  查看设备详细情况,命令结果为:

可以看到明确的iscsi设备细节,还可以通过bootinfo -s hdisk3查看目标iscsi容量是否正确(单位为MB,本例为演示,仅创建了个大小为4GB的ISCSI存储卷)

7、使用dd命令对故障存储做完整镜像(建议使用块设备路径进行镜像):

dd if=/dev/rhdisk0 of=/dev/rhdisk3   bs=4096k   conv=noerror,sync

更详细部分,可参考之前的文章:<如何为IBM AIX的数据卷做完整镜像> 以及 <最全面的关于LINUX与UNIX下的dd命令详解>

【AIX LV误删除数据恢复方案】
    在完整备份故障PV后,就可以着手恢复数据了。大致有3种方案可对数据进行恢复

方案一:

分析得到原LV的PPMAP,之后通过mklv -m <指定的ppmap文件>的方式重建与原先LV相同的分配表,以激活原LV,从而恢复数据。

方案二:

分析得到原LV的PPMAP,直接通过第三方软件(北亚开发有WINDOWS端的JFS2文件系统解释软件)进行JFS2文件系统解释。如果是裸设备(RAW),可完整读出后再重新按块写回。

方案三:

如果原LV中存储的是ORACLE数据库,可以针对oracle数据文件的特征,以碎片的方式,从所有PP中提取并组合好所有的特定数据文件,再灾难方式恢复oracle系统。

转载于:https://blog.51cto.com/zhangyu/1103101

AIX下删除LV后的现场保护和数据恢复方案相关推荐

  1. aix查看lv_(摘抄)AIX下减小lv size

    AIX下减小lv size 1,计算逻辑卷(假设为lvkrnltest)中需要缩小的LP数量 这步不能出错,一旦多删了就麻烦了 这你已经计算好了,是最后20个LP. 2,获取lvkrnltest的LV ...

  2. aix oracle扩容裸lv,aix下扩展lv注意事项

    # lspv # lspv hdisk0 # lsvg rootvg # lsvg -l rootvg # lslv hd2 1.AIX下,扩展文件系统需要先收动扩展LV吗?还是只需要扩展文件系统就行 ...

  3. linux7删除lv后文件系统异常,使用c-spoc删除lv后出现怪异异常!(已解决)

    使用c-spoc删除一个并发卷组中的一个lv,删除后提示删除成功,进入c-spoc后list lv已经不存在,但是在rm lv菜单处还是能见到该lv,此时再删除,报ODM数据库中找不到该设备. Com ...

  4. AIX创建激活删除LV

    AIX创建激活删除LV 查看vg : lsvg -l datavg 查看PV lspv reducevg -d datavg hdisk4 AIX中没有删除VG的命令,欲删除一个VG,只要将此VG中的 ...

  5. android onresume 后控件不能获取焦点,1.基本控件和布局 + 基本适配器 + Activity生命周期及传值和现场保护...

    1.android的项目目录结构 Android学习首先要大致了解项目目录,有些看不懂的就先记下,等之后遇到了再回头来看,印象肯定会更加深刻. src     Java源码 gen    自动生成的j ...

  6. windows平台下删除注册表后应用程序无法使用的情况

    windows平台下删除注册表后应用程序无法使用的情况   相信大家都有在Windows系统下不小心删除注册表的经历,或者因为注册表出现问题从而导致某个应用程序不能使用.在很多情况下,大家所遇到的只是 ...

  7. Windows 10下删除鲁大师卸载后的残留文件夹

    Windows 10下删除鲁大师卸载后的残留文件夹 解决思路 打开鲁大师卸载后的残留文件夹(即名为LaDaShi的文件夹),尝试删除某个.dll文件后出现提示失败,其显示在Hardware Prote ...

  8. Linux下rm删除文件后,磁盘容量没有释放

    文章目录 0 现象 1 原因 2 解决 0 现象 使用rm删除文件后,内存并没有释放. 1 原因 rm命令只是把链接解除(unlink),进程仍然可以读取已删除的文件,所以并不释放磁盘空间. 2 解决 ...

  9. gitlab 删除分支_如何删除gitlab上默认受保护的master主分支

    今天开发在检查代码的时候,发现master分支有问题,现在准备删除此主分支,并且重新提交正确的代码,不过在删除时发现,master分支不能被删除. ps:主分支一般都是线上分支,需要开发确认后并且做好 ...

最新文章

  1. 学习笔记——XSLT转换器的使用(Xalan和Saxon) .(转)
  2. 【蓝桥杯】基础练习 十进制转十六进制
  3. php 安装pdo odbc,PHP PDO ODBC连接
  4. java-pdf转word,java开发面试笔试题
  5. 栈和递归---手动实现一个栈和蒜头君吃桃
  6. java基础数据类型包装类
  7. H5游戏开发框架排名
  8. 微信小程序在js中的data里定义对象
  9. 惠普打印机突然停止工作
  10. 无线网服务器连接不上什么原因,无线路由器连接不上是什么原因
  11. html 判断text相等,实用的28个js验证
  12. python基础知识集(三)
  13. Docker(14) docker-compose安装Grafana Loki日志聚合系统
  14. Windows环境配置
  15. 联想e470c怎么修改电脑语言,我联想e470c笔记本,重装系统把预装的win10改成win...-e470改win7,联想e470装win10bios...
  16. 风控系统案例:中国移动
  17. MVVM和MVC模型
  18. 1一10到时的英文单词_1到100的英语单词
  19. python 人工智能培训班(python的诠释)
  20. base href=%=basePath%的作用

热门文章

  1. 无意间看到Pure-Mvc记录下
  2. LeetCode Maximal Square(最大子矩阵)
  3. 网络编程学习笔记(gethostbyaddr函数)
  4. 电子白板,控件播放功能,屏幕分享
  5. 错误---获取Input的值为空字符串
  6. 【Python】学习笔记一:Hello world
  7. MySQL:创建、修改和删除表
  8. filter---用angularjs实现关键字高亮
  9. MSIL 教程(三):类和异常处理(转)
  10. 35. Search Insert Position