handout-联谊会
数据恢复需求
2.1
Linux IO
存储栈
图(
1
)<
/p>
Linux IO
存储栈
Linux
的存储相关的栈包括
如图
1
所示,最下方为各种硬件存储器,例
如
SATA
,
SAS
,
SSD
等硬盘和磁带库等。
2.2
存储故障
2.2.1
介质故障
?
磁盘消失,例如由于线缆或者网络问题造成的磁盘丢失或者
IS
CSI
磁
盘链接失败
磁盘坏道
偶发的硬件错误
?
?
2.2.2
错误操作
包括误删除,格式化,重新分区等操作。
2.2.3
RAID
故障
服务器上的硬盘比较多的应用了
RAID(
冗余磁盘阵列
p>
)
来实现数据保护。
以多块硬盘环境下常使
用的
RAID 5
为例,当损坏一块硬盘时数据不会受到
影响,而这种情况下如果第二块硬盘再损坏
(
或者更换硬盘时拔错
)
就会丢失
数据。
此时要注意硬盘掉线的先后顺序,如果将
2
块硬盘同时上线则会
导致
部分数据访问出错,正确的方法是先上线最后出问题的硬盘,看数据是不是
我们想要的,再尝试之前掉线的硬盘进行比较。
有些
RAID
卡在插入掉线的硬盘时会自动尝试
Rebuild(
重建
)
,
这样就会
损坏我们需要的数据,
因此企业级数据恢复最好还是找
专业的公司
/
人士来进
行。有的
RAID
卡还会出现硬盘完好,而
RAID<
/p>
信息丢失的问题。如果用户
在运输服务器
/
磁盘阵列时,将硬盘拆出来单独运输,没有记录安装的顺序,
也可能会导致数据无法访问。
2.2.4
文件或者文件系统故障
这部分属于高
端的数据恢复技术,比如
ext2
、
e
xt3
、
reiserfs
、
XFS…
文
件系统。
L
inux/Unix
的数据恢复难度较大一方面是由于这些文件系统结构复
杂,另一方面则是有些厂商的相关资料不公开,比如
IBM
< br>的
AIX
系统。这
样我们只能通
过不断的摸索,积累经验来
“
破解
”<
/p>
它们的结构,最终能够恢复
上面的数据,或者提取出修改文件
p>
(
属性
)
的访问记
录等。
2.3
存储部署对数据丢失的考虑
?
?
p>
通常需要引入冗余(
REDUNDANT
)
和备份(
BAKUP
)两种机制。
<
/p>
RAID
和
MIRROR
和最常见的存储冗余的实现方式,可以容忍介质故
障等问题。
< br>
备份测试可以在错误操作或者文件系统故障时,很容易的恢复数据。
?
3
数据恢复策略
3.1
数据恢复基本步骤
由于存储故障是无
法完全避免的,在出现故障的时候,需要考虑如下的
几个基本策略和步骤:
?
分析故障,通过分析
用户手册,分析系统
LOG
,检查系统状态等方式
定位和分析问题
在问题没有定位之前,不可以对存储系统作更改操作
在分析问题之后,必须通过模拟系统测试恢复策略的可行性和风险
寻求专业帮助,通过
mail list
,
BBS
,付费支持等方式获取专业的指导
< br>
?
?
?
3.2
数据恢复方法
3.2.1
硬件故障处理
?
?
?
检查硬盘,数据线,连接部位,电源等问题
< br>检查
Fimware
版本,分析对应的
< br>Changelog
磁盘坏扇区,使用二进制的操作执行备份,例如
dd
命令
3.2.2
磁盘分区故障
?
?
?
检查驱动和内核版本
通过
fdisk ,diskpart,
partprobe,gpart
等工具分析分区信息
检查磁盘和分区大小,
blockdev,fdisk,sysfs<
/p>
等工具
3.2.3
RAID
故障
?
?
?
分析
RA
ID
中
device,raidset
和
volume
的信息
查看
RAID
的配置文件的信息
尽可能的分析
RAID
的元数据
信息
3.2.4
元数据
元数据是指数据的组织结构。通常,有两种方式存储:
)在磁盘上,通常在硬盘的最前面或者最后面预留扇区用于存储元数据
)在配置文件中保存必要的信息
在执行数据恢复的时候,通常需要先修复元数据再修复数据。
4
LVM
数据恢复
4.1
LVM
基础
4.1.1
LVM
的架构
图(
2
)<
/p>
LVM
基础架构
如果所示为
Linux
Volume Management
系统的基础架构,由
PV
,
VG
和
LV
组成。
4.1.2
LVM
的
on-disk
PV
结构
PV
的基本结构如下:
)标签,占用一个
sector,
包括签名,
UUID
,元数据的位置指针
)元数据:占用多个
sector
)
真正元数据的指针
)
循环缓存,文本格式
)
原子更新操作
)
序列号
)
校验码,冗余信息,自动修复信息等
图(
3
)
LVM
的
P
V
结构
4.1.3
LVM
的文本元数据配置
如下为一个
/etc/lvm/backup/pool
< br>的配置实例:
# Generated by
LVM2 version 2.02.42 (2008-10-26): Sat Sep 25
17:36:30 2010
contents =
version = 1
description =
creation_host =
#
Linux zhuweiR30 2.6.28-storix #1 SMP Thu Dec 24
17:25:02 CST 2009 i686
creation_time = 1285407390
#
Sat Sep 25 17:36:30 2010
pool {
id
=
seqno = 2
status =
[
flags = []
extent_size =
8192
# 4 Megabytes
max_lv = 0
max_pv = 0
physical_volumes
{
pv0
{
id =
device =
#
Hint only
status = [
flags = []
dev_size = 21484367872
# 10.0044
Terabytes
pe_start =
384
pe_count = 2622603
#
10.0044
Terabytes
}
}
logical_volumes {
block {
id =
status = [
flags = []
segment_count =
1
segment1
{
start_extent = 0
extent_count =
76800
# 300
Gigabytes
type =
stripe_count =
1
#
linear
stripes = [
0
]
}
}
}
}
4.1.4
LVM
元数据备份
< br>LVM
元数据通过默认备份在
/etc/lvm
目录下,
可以通过工具
vgcfgbackup
和
vgcfgrestore
命令备份
和恢复元数据。
4.2
LVM PV
故障的修复实例
4.2.1
部分修复
?
检查系统的所有的
LVM
的
VG
信息
#
vgscan
Reading all physical volumes.
This may take a while...
Couldn't find
device with uuid
'DHmMDP-bqQy-
TalG-2GLa-sh6o-fyVW-3XQ3gp'.
Found
volume group
?
检查丢失的设备上的信息
#pvs
-o +uuid
Couldn't find device with
uuid
'DhmMDP-bqQy-TalG-2GLa-
sh6o-fyVW-3XQ3gp'.
PV
VG
Fmt Attr PSize
PFree PV UUID
/dev/sdb
vg_test lvm2
a-
200.00m
0 5KjGmZ-
vhc6-u62q-YcSZ-aKX0-bCYP-EXtbzd
unknown device vg_test lvm2
a-
200.00m
0 DHmMDP-bqQy-
TalG-2GLa-sh6o-fyVW-3XQ3gp
# lvs -o
+devices
Couldn't find device with
uuid
'DHmMDP-bqQy-TalG-2GLa-
sh6o-fyVW-3XQ3gp'.
LV
VG
Attr
LSize
Devices
lv1 vg_test -wi---
100.00m /dev/sdb(0)
lv2 vg_test -wi---
100.00m unknown device(0)
lv3 vg_test
-wi--- 200.00m /dev/sdb(25)
lv3
vg_test -wi--- 200.00m unknown device(25)
< br>在这种情况下,
lv1
正常,
l
v2
丢失
,lv3
部分丢失
?
激活
# vgchange -a
y vg_test
Couldn't 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
对应
—
partial
参数,丢失的部分使用配置
/etc/
中的
Missing_stripe_filler=”error”
指定的设备来补充
?
尝试部分修复
准备
< br>zero
设备
#
dmsetup create zero_missing --table
?
修复配置文件
missing_stripe_filler =
#
vgchange -a y vg_test --partial
...
3 logical volume(s) in volume group
?
移除丢失硬盘上的所有的
LV
#
vgreduce --removemissing vg_test
Couldn't 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
--force
Couldn't find device with uuid
handout-联谊会
handout-联谊会
handout-联谊会
handout-联谊会
handout-联谊会
handout-联谊会
handout-联谊会
handout-联谊会
-
上一篇:红警中的各种英语
下一篇:关于回顾过去展望未来的句子