天天看点

AIX下删除LV后的现场保护方法和数据恢复方案

在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磁盘。

图一:

AIX下删除LV后的现场保护方法和数据恢复方案

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设备。本例结果如下:

图二:

AIX下删除LV后的现场保护方法和数据恢复方案

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

图三:

AIX下删除LV后的现场保护方法和数据恢复方案

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

图四:

AIX下删除LV后的现场保护方法和数据恢复方案

7、使用dd命令对故障存储做完整镜像(建议使用块设备路径进行镜像):ddif=/dev/rhdisk0 of=/dev/rhdisk3 bs=4096k conv=noerror,sync。

【aix lv误删除数据恢复方案】

在完整备份故障pv后,就可以着手恢复数据了。大致有3种方案可对数据进行恢复

方案一:

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

方案二:

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

方案三:

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