[问题]
当AIX 系统上的数据出现丢失,或VG结构损坏后,最安全地做法是对AIX损坏数据区镜像后,用镜像进行数据恢复操作。在数据恢复工作开展之前,如何安全的做AIX系统下的数据镜像?
[回答]
使用的工具是AIX下的dd命令,关于dd命令的详解,请参考:
http://zhangyu.blog.51cto.com/197148/137069
1、先将出故障的lv 文件系统umount下来。
2、检查/etc/secuity/limits里面是否对root用户设置了传输大小的限制,默认是1G,类似于这样:fsize = 2097151的把他改成(建议先备份原来的):
fsize = -1
core = -1
cpu = -1
data = -1
rss = -1
stack = -1
nofiles = -1
fsize_hard = -1
core_hard = -1
cpu_hard = -1
data_hard = -1
rss_hard = -1
stack_hard = -1
nofiles_hard = -1
当然,为了资源的均衡,dd之后可以改回原来的limits 。
改动后,需要root用户重新登陆才能生效。
3、如果因本地磁盘空间不足,可以将目标dd到NFS空间上(这样就可以直接备份到PC的WINDOWS或LINUX上了)。将NFS服务器MOUNT上来,大致命令为:
mount 10.10.0.1:/nfs /tmp (其中10.10.0.1改为目标NFS的IP,/nfs为NFS服务器上的共享名称)
可以在mount之前用showmount -e 10.10.0.1 来查看10.10.0.1上的NFS共享资源及其权限。
4、执行dd命令:
dd if=/dev/lv01 of=/tmp/data.img bs=1024k (其中/dev/lv01为出错的lv的设备名称,/tmp/data.img为生成的目标文件,其他参数全部用默认即可)
5、查看IO速度,估计一下时间即可。最好等它做几十G没问题,再离开。
6、感谢soway提供建议:可在dd时加入conv参数,以处理坏道。修正命令如下:dd if=/dev/lv01 of=/tmp/data.img bs=1024k conv=noerror,sync
soway提供参考,conv中参数的作用:
noerror
拷贝时遇到错误,则跳过,并继续执行
sync
拷贝时遇到错误,跳过此块可能导致后面的数据整体位置改变,加此参数可以用空数据填充目标文件中与错误块位置相同的部分,保证文件系统结构稳定。