-4006-505-646

一、AIX存储层面相关的知识&AIX环境下LV误删除后的恢复方案。


对于AIX而言,PV相当于物理磁盘,一个VG由若干个PV组成,这让我们可以将容量不同的存储空间组合起来进行统一分配。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,也就是清零之前所有占用PP的32字节PPMAP条目,另外还会做一些诸如LV名称的清理、LV设备摘要信息的清理等工作。


在AIX环境下LV被删除后,不建议贸然使用mklv命令进行恢复。虽然mklv操作在理论上不会清除pp内容区,但在某些情况下还是会损坏数据,比如这种情况:故障前后的PP分配表不相同但前面的PP表分配正确,这样即使文件系统可以识别甚至于可以挂上,但是挂上后某些结构可能会出现错误,然后被系统自动修正,这种情况更糟糕。当然只读方式mount也不是很好的办法。


北亚数据恢复中心给出的AIX环境下LV误删除后的恢复方案:

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

2、对VG中所有的PV做完整镜像。

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

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


二、完整镜像故障卷。


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


方法二:如果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文件,在文件内容最后增加一行。


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


6、lspv查看是否识别到iscsi设备。hdisk3已经识别到,lsattr -El hdisk3查看设备详细情况。可以通过bootinfo -s hdisk3查看目标iscsi容量是否正确(单位为MB,本例仅为演示,只创建了个大小为4GB的ISCSI存储卷)。


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数据库的灾难恢复方法恢复oracle数据库系统。