[問題]
當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
拷貝時遇到錯誤,跳過此塊可能導致後面的數據整體位置改變,加此參數可以用空數據填充目標文件中與錯誤塊位置相同的部分,保證文件系統結構穩定。