




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据恢复需求2.1Linux IO存储栈图(1)Linux IO 存储栈Linux 的存储相关的栈包括如图1所示,最下方为各种硬件存储器,例如SATA,SAS,SSD等硬盘和磁带库等。2.2存储故障2.2.1介质故障 磁盘消失,例如由于线缆或者网络问题造成的磁盘丢失或者ISCSI磁盘链接失败 磁盘坏道 偶发的硬件错误2.2.2错误操作包括误删除,格式化,重新分区等操作。2.2.3RAID故障服务器上的硬盘比较多的应用了RAID(冗余磁盘阵列)来实现数据保护。以多块硬盘环境下常使用的RAID 5为例,当损坏一块硬盘时数据不会受到影响,而这种情况下如果第二块硬盘再损坏(或者更换硬盘时拔错)就会丢失数据。此时要注意硬盘掉线的先后顺序,如果将2块硬盘同时上线则会导致部分数据访问出错,正确的方法是先上线最后出问题的硬盘,看数据是不是我们想要的,再尝试之前掉线的硬盘进行比较。有些RAID卡在插入掉线的硬盘时会自动尝试Rebuild(重建),这样就会损坏我们需要的数据,因此企业级数据恢复最好还是找专业的公司/人士来进行。有的RAID卡还会出现硬盘完好,而RAID信息丢失的问题。如果用户在运输服务器/磁盘阵列时,将硬盘拆出来单独运输,没有记录安装的顺序,也可能会导致数据无法访问。2.2.4文件或者文件系统故障这部分属于高端的数据恢复技术,比如ext2、ext3、reiserfs、XFS文件系统。Linux/Unix的数据恢复难度较大一方面是由于这些文件系统结构复杂,另一方面则是有些厂商的相关资料不公开,比如IBM的AIX系统。这样我们只能通过不断的摸索,积累经验来“破解”它们的结构,最终能够恢复上面的数据,或者提取出修改文件(属性)的访问记录等。2.3存储部署对数据丢失的考虑 通常需要引入冗余(REDUNDANT)和备份(BAKUP)两种机制。 RAID和MIRROR和最常见的存储冗余的实现方式,可以容忍介质故障等问题。 备份测试可以在错误操作或者文件系统故障时,很容易的恢复数据。3数据恢复策略3.1数据恢复基本步骤由于存储故障是无法完全避免的,在出现故障的时候,需要考虑如下的几个基本策略和步骤: 分析故障,通过分析用户手册,分析系统LOG,检查系统状态等方式定位和分析问题 在问题没有定位之前,不可以对存储系统作更改操作 在分析问题之后,必须通过模拟系统测试恢复策略的可行性和风险 寻求专业帮助,通过mail list,BBS,付费支持等方式获取专业的指导3.2数据恢复方法3.2.1硬件故障处理 检查硬盘,数据线,连接部位,电源等问题 检查Fimware版本,分析对应的Changelog 磁盘坏扇区,使用二进制的操作执行备份,例如dd命令3.2.2磁盘分区故障 检查驱动和内核版本 通过fdisk ,diskpart, partprobe,gpart等工具分析分区信息 检查磁盘和分区大小,blockdev,fdisk,sysfs等工具3.2.3RAID故障 分析RAID中device,raidset和volume的信息 查看RAID的配置文件的信息 尽可能的分析RAID的元数据信息3.2.4元数据元数据是指数据的组织结构。通常,有两种方式存储:(1)在磁盘上,通常在硬盘的最前面或者最后面预留扇区用于存储元数据(2)在配置文件中保存必要的信息在执行数据恢复的时候,通常需要先修复元数据再修复数据。4LVM数据恢复4.1LVM基础4.1.1LVM的架构图(2)LVM基础架构如果所示为Linux Volume Management系统的基础架构,由PV,VG和LV组成。4.1.2LVM的on-disk PV结构PV的基本结构如下:(1)标签,占用一个sector,包括签名,UUID,元数据的位置指针(2)元数据:占用多个sectora)真正元数据的指针b)循环缓存,文本格式c)原子更新操作d)序列号e)校验码,冗余信息,自动修复信息等图(3)LVM的PV结构4.1.3LVM的文本元数据配置如下为一个/etc/lvm/backup/pool的配置实例:# Generated by LVM2 version 2.02.42 (2008-10-26): Sat Sep 25 17:36:30 2010contents = Text Format Volume Groupversion = 1description = Created *after* executing lvcreate -name block -size 300G poolcreation_host = zhuweiR30 # Linux zhuweiR30 2.6.28-storix #1 SMP Thu Dec 24 17:25:02 CST 2009 i686creation_time = 1285407390 # Sat Sep 25 17:36:30 2010pool id = 0Lm9dz-sIeu-t2Ho-qIBR-lD2P-dcbK-K1U4zW seqno = 2 status = RESIZEABLE, READ, WRITE flags = extent_size = 8192 # 4 Megabytes max_lv = 0 max_pv = 0 physical_volumes pv0 id = rewaTQ-vKaK-PzWs-H14L-a2Qz-hV62-CcIHqT device = /dev/sdb # Hint only status = ALLOCATABLE flags = dev_size = 21484367872# 10.0044 Terabytes pe_start = 384 pe_count = 2622603 # 10.0044 Terabytes logical_volumes block id = ryg1Or-e1C3-ooKV-0XMM-jKSN-g0EM-dXky7G status = READ, WRITE, VISIBLE flags = segment_count = 1 segment1 start_extent = 0 extent_count = 76800 # 300 Gigabytes type = striped stripe_count = 1 # linear stripes = pv0, 0 4.1.4LVM元数据备份LVM元数据通过默认备份在/etc/lvm目录下,可以通过工具vgcfgbackup和vgcfgrestore命令备份和恢复元数据。4.2LVM PV故障的修复实例4.2.1部分修复 检查系统的所有的LVM的VG信息# vgscanReading all physical volumes.This may take a while.Couldnt find device with uuid DHmMDP-bqQy-TalG-2GLa-sh6o-fyVW-3XQ3gp.Found volume group vg_test using metadata type lvm2 检查丢失的设备上的信息#pvs -o +uuidCouldnt find device with uuid DhmMDP-bqQy-TalG-2GLa-sh6o-fyVW-3XQ3gp.PV VG FmtAttr PSize PFree PV UUID/dev/sdb vg_test lvm2 a- 200.00m 05KjGmZ-vhc6-u62q-YcSZ-aKX0-bCYP-EXtbzdunknown device vg_test lvm2 a- 200.00m 0DHmMDP-bqQy-TalG-2GLa-sh6o-fyVW-3XQ3gp# lvs -o +devicesCouldnt find device with uuid DHmMDP-bqQy-TalG-2GLa-sh6o-fyVW-3XQ3gp.LV VG Attr LSize Deviceslv1vg_test -wi- 100.00m /dev/sdb(0)lv2vg_test -wi- 100.00m unknown device(0)lv3vg_test -wi- 200.00m /dev/sdb(25)lv3vg_test -wi- 200.00m unknown device(25)在这种情况下,lv1正常,lv2丢失,lv3部分丢失 激活# vgchange -a y vg_testCouldnt find device with uuid DHmMDP-bqQy-TalG-2GLa-sh6o-fyVW-3XQ3gp.Refusing activation of partial LV lv2. Use -partial to override.Refusing activation of partial LV lv3. Use -partial to override.1 logical volume(s) in volume group vg_test now active对应partial 参数,丢失的部分使用配置/etc/lvm.conf中的Missing_stripe_filler=”error” 指定的设备来补充 尝试部分修复准备zero设备# dmsetup create zero_missing -table 0 10000000 zero 修复配置文件missing_stripe_filler = /dev/mapper/zero_missing# vgchange -a y vg_test -partial.3 logical volume(s) in volume group vg_test now active 移除丢失硬盘上的所有的LV# vgreduce -removemissing vg_testCouldnt find device with uuid DHmMDP-bqQy-TalG-2GLa-sh6o-fyVW-3XQ3gp.WARNING: Partial LV lv2 needs to be repaired or removed.WARNING: Partial LV lv3 needs to be repaired or removed.WARNING: There are still partial LVs in VG vg_test.To remove them unconditionally use: vgreduce -removemissing -force.Proceeding to remove empty missing PVs.# vgreduce -removemissing vg_test -forceCouldnt find device with uuid DhmMDP-bqQy-TalG-2GLa-sh6o-fyVW-3XQ3gp.Wrote out consistent volume group vg_test 完成数据修复# pvsPV VG FmtAttr PSize PFree/dev/sdb vg_test lvm2 a- 200.00m 100.00m# lvs -o +devicesLV VG Attr LSize Deviceslv1vg_test -wi- 100.00m /dev/sdb(0)4.2.2通过备份恢复如果在某些情况下, 提示“操作错误”的情况# vgscanReading all physical volumes.This may take a while.WARNING: Inconsistent metadata found for VG vg_test - updating to use version 18Removing PV /dev/sdc (DHmMDP-bqQy-TalG-2GLa-sh6o-fyVW-3XQ3gp) that no longer belongsto VG vg_testFound volume group vg_test using metadata type lvm2# pvsPV VG FmtAttr PSize PFree/dev/sdb vg_test lvm2 a- 200.00m 100.00m/dev/sdc lvm2 - 204.00m 204.00m 通过恢复配置还原# vgcfgrestore -f /etc/lvm/archive/vg_test_01564.vg vg_testCannot restore Volume Group vg_test with 1 PVs marked as missing.Restore failed.手工修改配置. pv1 id = DHmMDP-bqQy-TalG-2GLa-sh6o-fyVW-3XQ3gp device = unknown deviceflags = MISSING. 再次恢复# vgcfgrestore -f vg_test_edited.vg vg_testRestored volume group vg_test5小结本文分析了存储故障参数的原因,提出了数据恢复的测试和实施步骤,并且针对常见的LVM的故障,分析了LVM的架构和元数据的组织结构,最后给出了LVM故障的常见修复方法和实例分析。但是,数据恢复本身只是在出现存储故障之后的修补措施,修复成功的可能性也不是100%。因此,在部署存储系统的时候,考虑冗余和备份是提高数据安全性的更好的版本。LVM 移機備忘其實工廠主機又變快了.好像常常看到我再給他加速.以前一直傳聞說一台爛爛的linux主機跑個apache都可以很順暢,前幾天換了主機才知道這傳聞根本.,主機的效能明顯還是受到CPU和硬碟讀取速度的影響。感覺前一句好像廢話一樣,但是我是在舊主機一直調整下,相信傳聞是真實的狀態下一直調,還是調不出一個好結果,常常被裕藍的老闆吐槽網站那麼慢.其實移機基本不難,檔案形式的複製一下就好,我比較擔心的是三顆硬碟組成的LVM,因為沒有其他空間把160G的檔案移出了,只好硬著頭皮嘗試直接把三顆硬碟直接移到另一台主機,依靠著一個小小的config檔,沒有過的經驗的確令人緊張,深怕轉移失敗資料都消失哩。產生LVM的conf檔其實很簡單# vgcfgbackup Volume group homeVG successfully backed up.設定檔會產生出來在/etc/lvm/backup/homeVG,就依靠著個檔案定生死哩,來還原囉!# vgcfgrestore -f /etc/lvm/backup/homeVG -n homeVG homeVG結果當然是成功有哩經驗之後,以後就會大膽的作哩!备份每次修改lvm会自动在/etc/lvm/backup下备份lvm的元数据信息某个pv损坏:pvcreate -restorefile /etc/lvm/backup/test -uuid 2QI12V-AhFi-hd0r-Nn2e-LCrm-b3Of-leI0Nv /dev/hda6vgcfgrestore -file /etc/lvm/backup/test test分区表备份:sfdisk -d /dev/sdd sdd-table = 导出正常的分区表sfdisk /dev/sdb 恢复丢失的分区表系统情况:Red Hat Enterprise Linux Server release 6.0,lvm2,ext4原来有一个lvm分区/dev/data/ftproot挂载到/work目录下的。 周一的时候由于调休,不知道那个BT直接关机造成data_ftproot的lvm丢失下是记录下的处理过程:1. rootlocalhost lvm#vgcfgrestore-f/etc/lvm/backup/data-t/dev/sda32. Test mode:Metadata willNOTbe updated.3. Couldnt find device with uuid h6t9V2-Oi08-F5kw-U2G5-vRDW-1WdJ-1awgnU.4. /etc/lvm/backup/datadoesnotcontain volume groupsda3.5. Restore failed.6.7. rootlocalhost lvm#pvcreate-u h6t9V2-Oi08-F5kw-U2G5-vRDW-1WdJ-1awgnU-restorefile/etc/lvm/archive/data_00002.vg/dev/sda38. Couldnt find device with uuid h6t9V2-Oi08-F5kw-U2G5-vRDW-1WdJ-1awgnU.9. Physical volume/dev/sda3successfully created10.11. rootlocalhost lvm#vgcfgrestore data12. Restored volume group data13. rootlocalhost lvm#vgscan&vgscan&lvscan14. Reading all physical volumes.This may take awhile.15. Found volume groupdatausing metadata type lvm216. Found volume groupvg_localhostusing metadata type lvm217. Reading all physical volumes.This may take awhile.18. Found volume groupdatausing metadata type lvm219. Found volume groupvg_localhostusing metadata type lvm220. inactive/dev/data/ftproot70.00 GiBinherit21. ACTIVE/dev/vg_localhost/lv_root21.55 GiBinherit22. ACTIVE/dev/vg_localhost/lv_swap1.97 GiBinherit23.24.25. You cannowdisplay the logical volumes.26.27. rootlocalhost#lvs-a-o+devices28. LV VG Attr LSize Origin Snap%MoveLogCopy%Convert Devices29. ftproot data-wi-70.00g/dev/sda3(0)30. lv_root vg_localhost-wi-ao 21.55g/dev/sda2(0)31. lv_swap vg_localhost-wi-ao 1.97g/dev/sda2(5518)32.33.34. rootlink-07 backup#lvchange-ay/dev/VG/stripe35. rootlocalhost#lvchange-ay/dev/data/ftproot36. rootlocalhost#lvs-a-o+devices37. LV VG Attr LSize Origin Snap%MoveLogCopy%Convert Devices38. ftproot data-wi-a-70.00g/dev/sda3(0)39. lv_root vg_localhost-wi-ao 21.55g/dev/sda2(0)40. lv_swap vg_localhost-wi-ao 1.97g/dev/sda2(5518)41.42.43. rootlocalhost#mount-t ext4/dev/data/ftproot/work/44. mount:wrong fs type,badoption,bad superblockon/dev/mapper/data-ftproot,45. missing codepageorhelper program,orothererror46. Insome cases useful infoisfoundinsyslog-try47. dmesg|tailorso48.49. rootlocalhost#dmesg|tail-1050. RPC:Registered tcp transport module.51. RPC:Registered tcp NFSv4.1 backchannel transport module.52. SELinux:initialized(dev rpc_pipefs,type rpc_pipefs),uses genfs_contexts53. SELinux:initialized(dev autofs,type autofs),uses genfs_contexts54. SELinux:initialized(dev autofs,type autofs),uses genfs_contexts55. SELinux:initialized(dev autofs,type autofs),uses genfs_contexts56. eth3:no IPv6 routers present57. eth1:no IPv6 routers present58. EXT4-fs(dm-2):VFS:Cant find ext4 filesystem至此,lvm是恢复了,但文件系统看样子是没有办法恢复了。参考“ext3 文件系统超级块损坏的修复”对ext4不起作用,我觉得对ext3/ext2估计都差不多。事打电话询问LVM故障的处理办法,其实我对LVM也是一知半解,只是恰好在用户现场解决过几次有关LVM的故障。这次故障的发生是因为不小心,把grub的信息写入到了阵列设备上,而阵列设备是用来做LVM的,导致的结果是pvscan可以得到pv信息,lvscan也能得到lv信息,但是 vgscan却不能。 使用vgcfgrestore命令恢复后,正常了。为了重现用户的现象,我做了另外一个实验,不是vg信息找不到,而是找不到对应 uuid号的设备,过程如下:创建pv,vg,lv rootlancy # pvcreate /dev/mdp0 Physical volume /dev/mdp0 successfully created rootlancy # vgcreate vg01 /dev/mdp0 Volume group vg01 successfully created rootlancy # lvcreate -n lv01 -L+200M vg01 Logical volume lv01 created rootlancy # mkfs.ext3 /dev/mapper/vg01-lv01 -m 0 rootlancy # mount /dev/mapper/vg01-lv01 /misc rootlancy # cp mdadm-2.5.2-1.i386.rpm /misc/ rootlancy # umount /misc 2)做一个破坏者 rootlancy # dd if=/dev/zero of=/dev/mdp0 bs=512 count=3 3+0 records in 3+0 records out 1536 bytes (1.5 kB) copied,7.6469e-05 秒,20.1 MB/秒 rootlancy # pvscan No matching physical volumes found rootlancy # vgscan Reading all physical volumes. This may take a while. No volume groups found pv,vg,lv都找不到了,但是vg01-lv01这个设备还是存在的,而且也能mount。不过估计重启后就找不到了。于是恢复。 尝试老办法 rootlancy # vgcfgrestore -f /etc/lvm/backup/vg01 -n vg01 -t /dev/mdp0 Test mode: Metadata will NOT be updated. Couldnt find device with uuid fPsp4D-aaxu-YMGZ-gqG
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年校结业考试试题及答案
- 2025福建省晋江圳源环境科技有限责任公司招聘6人考前自测高频考点模拟试题及答案详解(网校专用)
- 2025-2030工业设计服务产业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030工业自动化设备行业供需状况及投资战略规划报告
- 2025-2030工业自动化控制系统应用现状及市场增长潜力分析报告
- 2025-2030工业级无人机续航能力突破与特种作业场景商业化验证报告
- 工程管理专业生产试题及答案
- 智能公交创新创业项目商业计划书
- 智慧农业精准灌溉与施肥大模型创新创业项目商业计划书
- 继电保护技术课程知识点汇编
- 乐乐课堂版奥数三年级
- 口腔疾病的预防与治疗措施
- 中医护理操作并发症预防及处理
- 《混凝土结构耐久性电化学修复技术规程》
- 桥式起重机Q2练习测试题附答案
- 哈里伯顿Sperry定向钻井介绍专题培训课件
- 2021年江苏省徐州市中考生物试卷(附详解)
- JJF 1704-2018 望远镜式测距仪校准规范
- 石油化工设备维护检修规程通用设备12
- 《三角形的面积》教学设计方案
- GB/T 14667.1-1993粉末冶金铁基结构材料第一部分烧结铁、烧结碳钢、烧结铜钢、烧结铜钼钢
评论
0/150
提交评论