免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3218 | 回复: 0
打印 上一主题 下一主题

[高级应用] AIX LVM底层数据结构剖析(上)(根据qintl讲稿整理) [复制链接]

招聘 : 系统集成
论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-16 14:41 |只看该作者 |倒序浏览
背景:一个关于数据丢失后的恢复问题,在LU中引起热烈的讨论,在相关的讨论帖中,qintl对LVM底层数据结构做了详细而精彩的演讲,受益匪浅。现将qintl主要讲稿内容整理如下,以便大家阅读。

相关讨论帖地址:

http://www.loveunix.com/viewthread.php?tid=76187&extra=page%3D5%26amp%3Bfilter%3Ddigest

http://www.loveunix.com/viewthread.php?tid=75851&highlight=%B6%AA%CA%A7





一个硬盘在AIX系统下系统保留区数据结构,AIX下的Block其实就是512Byte,编号从0开始,跟我们所说的扇区是一样的。以下是我机器上某块盘的信息
想了解更多的东西,请阅读:
http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.kernelext/doc/kernextc/logival_vol_subsys.htm
硬盘物理位置,用扇区标记(sec)
Readvgda结果(readvgda -s hdisk10)
0 sec(开始)
boot record
bad-block directory
LVM record7 sec70 sec
Readvgda会调用LVM record中的数据
mirror write consistency (MWC) record
LVM record记录着lvmarea最基本的参数
127 sec(结束)
lvmid:       1598838349
vgid:     0037521400004c00000000dc6ffba362
lvmarea_len: 4212   --> (vgda_len + vgsa_len) * 2
vgda_len:    2098
vgda_psn[0]: 136
vgda_psn[1]: 2242
reloc_psn:   286749223
pv_num:      1
pp_size:     28
vgsa_len:    8
vgsa_psn[0]: 128
vgsa_psn[1]: 2234
version:     8
vg_type:     -8739
图片是7sec的十六进制视图,可以通过十六进制转换成上面某些参数的十进制数值。
128 sec(开始)
VGSA数据区
135 sec(结束)
*****************************************
VGSA at block 128
*****************************************
*****************************************
vgsa beg: timestamp 946773107 (386e9c73), 314919315 (12c54993)
vgsa beg: timestamp Sat Jan  1 18:31:47 CST:2000
vgsa.pv_missing:        0
vgsa.stalepp[0]:        0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
vgsa.stalepp[1]:        0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
vgsa.stalepp[2]:        ff 3f 0 ff ff ff ff ff 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
vgsa.factor:    1
vgsa.pad2:      0 0 0
vgsa end: timestamp 946773107 (386e9c73), 314919315 (12c54993)
vgsa end: timestamp Sat Jan  1 18:31:47 CST:2000
*****************************************
136 sec(开始)
VGDA数据区
LP/PP MAP
2233 sec(结束)
*****************************************
VGDA at block 136
*****************************************
*****************************************
vgh.vg_id:    0037521400004c00000000dc6ffba362
vgh.numlvs:      1
vgh.maxlvs:      256
vgh.pp_size:     28
vgh.numpvs:      3
vgh.total_vgdas: 3
vgh.vgda_size:   2098
vgh.quorum:      1
vgh.auto_varyon: 1
vgh.check_sum:   0
vgda hdr: timestamp 946773107 (386e9c73), 352680539 (15057a5b)
vgda hdr: timestamp Sat Jan  1 18:31:47 CST:2000
以上是从136扇区读取的
**********  Logical Volume: datalv4  ***********
lve.lvname:             0
lve.maxsize:            512
lve.lv_state:           1
lve.mirror:             3
lve.mirror_policy:      2
lve.num_lps:            10
lve.permissions:        1
lve.bb_relocation:      1
lve.write_verify:       2
lve.mirwrt_consist:     1
lve.stripe_exp:         0
lve.striping_width:     0
lve.lv_avoid:           0
lve.child_minor_num:    0
**********  Physical Volume: 1  ***********
pvh.pv_num:      1
pvh.pv_id:       003752146ff9501b
pvh.pp_count:    546
pvh.pv_state:    1
pvh.pvnum_vgdas: 1
pvh.psn_part1:   4352
*  pv_num:pp_num:pp_state   lv_name:lp_num:pp_copy_val:pv_fst_mir:part_fst_mir:p
v_snd_mir:part_snd_mir
*  pv1:111:1   datalv4:1:1:3:15:2:4
*  pv1:112:1   datalv4:2:1:3:16:2:5
*  pv1:113:1   datalv4:3:1:3:17:2:6
*  pv1:114:1   datalv4:4:1:3:18:2:7
*  pv1:115:1   datalv4:5:1:3:19:2:8
*  pv1:116:1   datalv4:6:1:3:20:2:9
*  pv1:117:1   datalv4:7:1:3:21:2:10
*  pv1:118:1   datalv4:8:1:3:22:2:11
*  pv1:119:1   datalv4:9:1:3:23:2:12
*  pv1:120:1   datalv4:10:1:3:24:2:13
第一个PV的Map表,MAP表的开头是某个PV的pvh.pv_id
**********  Physical Volume: 2  ***********
pvh.pv_num:      2
pvh.pv_id:       003752146ff979f4
pvh.pp_count:    15
pvh.pv_state:    1
pvh.pvnum_vgdas: 1
pvh.psn_part1:   4352
*  pv_num:pp_num:pp_state   lv_name:lp_num:pp_copy_val:pv_fst_mir:part_fst_mir:p
v_snd_mir:part_snd_mir
*  pv2:  4:1   datalv4:1:3:1:111:3:15
*  pv2:  5:1   datalv4:2:3:1:112:3:16
*  pv2:  6:1   datalv4:3:3:1:113:3:17
*  pv2:  7:1   datalv4:4:3:1:114:3:18
*  pv2:  8:1   datalv4:5:3:1:115:3:19
*  pv2:  9:1   datalv4:6:3:1:116:3:20
*  pv2: 10:1   datalv4:7:3:1:117:3:21
*  pv2: 11:1   datalv4:8:3:1:118:3:22
*  pv2: 12:1   datalv4:9:3:1:119:3:23
*  pv2: 13:1   datalv4:10:3:1:120:3:24
**********  Physical Volume: 3  ***********
pvh.pv_num:      3
pvh.pv_id:       003752146ff9a31b
pvh.pp_count:    67
pvh.pv_state:    1
pvh.pvnum_vgdas: 1
pvh.psn_part1:   4352
*  pv_num:pp_num:pp_state   lv_name:lp_num:pp_copy_val:pv_fst_mir:part_fst_mir:p
v_snd_mir:part_snd_mir
*  pv3: 15:1   datalv4:1:2:1:111:2:4
*  pv3: 16:1   datalv4:2:2:1:112:2:5
*  pv3: 17:1   datalv4:3:2:1:113:2:6
*  pv3: 18:1   datalv4:4:2:1:114:2:7
*  pv3: 19:1   datalv4:5:2:1:115:2:8
*  pv3: 20:1   datalv4:6:2:1:116:2:9
*  pv3: 21:1   datalv4:7:2:1:117:2:10
*  pv3: 22:1   datalv4:8:2:1:118:2:11
*  pv3: 23:1   datalv4:9:2:1:119:2:12
*  pv3: 24:1   datalv4:10:2:1:120:2:13
*****************************************
vgt.concurrency:        0
vgda trl: timestamp 946773107 (386e9c73), 352680539 (15057a5b)
vgda trl: timestamp Sat Jan  1 18:31:47 CST:2000
2234 sec(开始)
VGSA数据区(备份)
2241 sec(结束)

2242 sec(开始)
VGDA数据区(备份)
LP/PP MAP
4339 sec(结束)

4340 sec(开始)
4351 sec

4352 sec (物理硬盘第1PP开始
LV开始
N sec(结束)(硬盘总扇区数)




硬盘的PVID
一个硬盘要被操作系统正常使用,必须先分配PVID,硬盘的PVID在以后加入某个VG、LV都是要用到的。
分配PVID的过程就像windows下的初始化硬盘操作,就是把硬盘0扇区改写成符合操作系统使用的格式,只改写0扇区,别的地方没有任何改变。
用lspv命令就可以知道哪些硬盘还没有分配PVID,用#chdev -l hdiskX -a pv=yes就可以给硬盘分配PVID,当一个硬盘在操作系统中已经有了PVID,#chdev -l hdiskX -a pv=yes命令不会改变原来的PVID。
如果要修改某块盘的PVID,我们要先清除掉原先的PVID,然后再生成,可以用以下命令:
#chdev -l hdiskX -a pv=clear
#chdev -l hdiskX -a pv=yes
chinadns的Blog有对PVID的详细介绍:
http://blog.chinaunix.net/u/16252/showart_94788.html
我们从底层观察chdev -l hdiskX -a pv=yes对硬盘0扇区的改动:
# lspv
hdisk0          003752149a0b2b91                    rootvg
hdisk10         none                                None
hdisk11         003752146ff979f4                    None
hdisk12         003752146ff9a31b                    None
hdisk10没有分配PVID,我们看看0扇区的十六进制代码:
# lquerypv -h /dev/hdisk10 0 200 (结果:第一列是序号,后4列是十六进制数据)
00000000   C9C2D4C1 00000000 00000000 00000000  |................|
00000010   00000000 00000000 00000000 00000000  |................|
00000020   00000000 00000000 00000000 00000000  |................|
00000030   00000000 00000000 00000000 00000000  |................|
00000040   00000000 00000000 00000000 00000000  |................|
00000050   00000000 00000000 00000000 00000000  |................|
00000060   00000000 00000000 00000000 00000000  |................|
00000070   00000000 00000000 00000000 00000000  |................|
00000080   00000000 00000000 00000000 00000000  |................|
00000090   00000000 00000000 00000000 00000000  |................|
000000A0   00000000 00000000 00000000 00000000  |................|
000000B0   00000000 00000000 00000000 00000000  |................|
000000C0   00000000 00000000 00000000 00000000  |................|
000000D0   00000000 00000000 00000000 00000000  |................|
000000E0   00000000 00000000 00000000 00000000  |................|
000000F0   00000000 00000000 00000000 00000000  |................|
00000100   00000000 00000000 00000000 00000000  |................|
00000110   00000000 00000000 00000000 00000000  |................|
00000120   00000000 00000000 00000000 00000000  |................|
00000130   00000000 00000000 00000000 00000000  |................|
00000140   00000000 00000000 00000000 00000000  |................|
00000150   00000000 00000000 00000000 00000000  |................|
00000160   00000000 00000000 00000000 00000000  |................|
00000170   00000000 00000000 00000000 00000000  |................|
00000180   00000000 00000000 00000000 00000000  |................|
00000190   00000000 00000000 00000000 00000000  |................|
000001A0   00000000 00000000 00000000 00000000  |................|
000001B0   00000000 00000000 00000000 00000000  |................|
000001C0   00000000 00000000 00000000 00000000  |................|
000001D0   00000000 00000000 00000000 00000000  |................|
000001E0   00000000 00000000 00000000 00000000  |................|
000001F0   00000000 00000000 00000000 00000000  |................|
# chdev -l hdisk10 -a pv=yes
hdisk10 changed
# lspv
hdisk0          003752149a0b2b91                    rootvg
hdisk10         0037521474170251                    None
hdisk11         003752146ff979f4                    None
hdisk12         003752146ff9a31b                    None
# lquerypv -h /dev/hdisk10 0 200
00000000   C9C2D4C1 00000000 00000000 00000000  |................|
00000010   00000000 00000000 00000000 00000000  |................|
00000020   00000000 00000000 00000000 00000000  |................|
00000030   00000000 00000000 00000000 00000000  |................|
00000040   00000000 00000000 00000000 00000000  |................|
00000050   00000000 00000000 00000000 00000000  |................|
00000060   00000000 00000000 00000000 00000000  |................|
00000070   00000000 00000000 00000000 00000000  |................|
00000080   00375214 74170251 00000000 00000000  |.7R.t..Q........|
00000090   00000000 00000000 00000000 00000000  |................|
000000A0   00000000 00000000 00000000 00000000  |................|
000000B0   00000000 00000000 00000000 00000000  |................|
000000C0   00000000 00000000 00000000 00000000  |................|
000000D0   00000000 00000000 00000000 00000000  |................|
000000E0   00000000 00000000 00000000 00000000  |................|
000000F0   00000000 00000000 00000000 00000000  |................|
00000100   00000000 00000000 00000000 00000000  |................|
00000110   00000000 00000000 00000000 00000000  |................|
00000120   00000000 00000000 00000000 00000000  |................|
00000130   00000000 00000000 00000000 00000000  |................|
00000140   00000000 00000000 00000000 00000000  |................|
00000150   00000000 00000000 00000000 00000000  |................|
00000160   00000000 00000000 00000000 00000000  |................|
00000170   00000000 00000000 00000000 00000000  |................|
00000180   00000000 00000000 00000000 00000000  |................|
00000190   00000000 00000000 00000000 00000000  |................|
000001A0   00000000 00000000 00000000 00000000  |................|
000001B0   00000000 00000000 00000000 00000000  |................|
000001C0   00000000 00000000 00000000 00000000  |................|
000001D0   00000000 00000000 00000000 00000000  |................|
000001E0   00000000 00000000 00000000 00000000  |................|
000001F0   00000000 00000000 00000000 00000000  |................|
这样我们就知道chdev -l hdisk10 -a pv=yes更改了哪些数据了。
lquerypv -h /dev/hdisk10 0 200 这个命令行很有用,你可以查看硬盘中任何一个扇区的内容,后面两个参数的具体意思:
lquerypv -h /dev/hdisk10 0 200
0 -- 从硬盘哪个字节开始查看,是十六进制
200 -- 输出到屏幕上的字节数,十六进制,十六进制200转换成十进制,512,就是一个扇区的大小。
假如我们要查看128扇区数据,命令应该是:
lquerypv -h /dev/hdisk10 10000 200
10000怎么换算来的? 128*512=65536(十进制),转换成十六进制是10000,因为我们要看一个扇区的数据,后面的参数就是512字节,转换成十六进制就是200。


mkvg对硬盘的数据改动
我们来看一下操作
# lspv
hdisk0          003752149a0b2b91                    rootvg
hdisk13         003752147454a336                    None
hdisk14         003752147454c64c                    None
hdisk15         003752147454e7cd                    None
# mkvg  -s 256  -y testvg hdisk13 hdisk14 hdisk15
# lspv
hdisk0          003752149a0b2b91                    rootvg
hdisk13         003752147454a336                    testvg
hdisk14         003752147454c64c                    testvg
hdisk15         003752147454e7cd                    testvg
***************************************************************************
# readvgda -s hdisk13
lvmid:       1598838349
vgid:     0037521400004c00000000dc74595c25
lvmarea_len: 4212
vgda_len:    2098
vgda_psn[0]: 136
vgda_psn[1]: 2242
reloc_psn:   286749223
pv_num:      1
pp_size:     28
vgsa_len:    8
vgsa_psn[0]: 128
vgsa_psn[1]: 2234
version:     8
vg_type:     -8739
(这是LVM record,在硬盘前128个扇区,分别在7sec70sec
*=============== 1ST VGDA-VGSA: hdisk13 ===============*
*****************************************
VGSA at block 128
*****************************************
*****************************************
vgsa beg: timestamp 946844818 (386fb492), 357026209 (1547c9a1) --这个是时间戳,在128sec开头8个字节。
vgsa beg: timestamp Sun Jan  2 14:26:58 CST:2000
vgsa.pv_missing:        0
vgsa.stalepp[0]:        0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
vgsa.stalepp[1]:        0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
vgsa.stalepp[2]:        0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
vgsa.factor:    1
vgsa.pad2:      0 0 0
vgsa end: timestamp 946844818 (386fb492), 357026209 (1547c9a1)--这个是时间戳,在135sec结尾8个字节。
vgsa end: timestamp Sun Jan  2 14:26:58 CST:2000
(从LVM record知道,VGSA大小是8secmkvgVGSA只写入时间戳)
*****************************************
VGDA at block 136
*****************************************
*****************************************
vgh.vg_id:    0037521400004c00000000dc74595c25
vgh.numlvs:      0
vgh.maxlvs:      256
vgh.pp_size:     28
vgh.numpvs:      3
vgh.total_vgdas: 3
vgh.vgda_size:   2098
vgh.quorum:      1
vgh.auto_varyon: 1
vgh.check_sum:   0
vgda hdr: timestamp 946844818 (386fb492), 402158211 (17f87283)
vgda hdr: timestamp Sun Jan  2 14:26:58 CST:2000
(这是真正的VGDA头部信息,在硬盘136sec
**********  Physical Volume: 1  ***********
pvh.pv_num:      1
pvh.pv_id:       003752147454a336
pvh.pp_count:    546
pvh.pv_state:    1
pvh.pvnum_vgdas: 1
pvh.psn_part1:   4352
(这是Physical Volume: 1的LP MAP表头部信息,在153sec
**********  Physical Volume: 2  ***********
pvh.pv_num:      2
pvh.pv_id:       003752147454c64c
pvh.pp_count:    15
pvh.pv_state:    1
pvh.pvnum_vgdas: 1
pvh.psn_part1:   4352
(这是Physical Volume: 2的LP MAP表头部信息,在188sec
**********  Physical Volume: 3  ***********
pvh.pv_num:      3
pvh.pv_id:       003752147454e7cd
pvh.pp_count:    67
pvh.pv_state:    1
pvh.pvnum_vgdas: 1
pvh.psn_part1:   4352
(这是Physical Volume: 3 的LP MAP表头部信息,在189sec
*****************************************
vgt.concurrency:        0
vgda trl: timestamp 946844818 (386fb492), 402158211 (17f87283)
vgda trl: timestamp Sun Jan  2 14:26:58 CST:2000
*=============== 2ND VGDA-VGSA: hdisk13 ===============*
*****************************************
VGSA at block 2234
*****************************************
*****************************************
vgsa beg: timestamp 946844818 (386fb492), 357026209 (1547c9a1)
vgsa beg: timestamp Sun Jan  2 14:26:58 CST:2000
vgsa.pv_missing:        0
vgsa.stalepp[0]:        0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
vgsa.stalepp[1]:        0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
vgsa.stalepp[2]:        0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
vgsa.factor:    1
vgsa.pad2:      0 0 0
vgsa end: timestamp 946844818 (386fb492), 357026209 (1547c9a1)
vgsa end: timestamp Sun Jan  2 14:26:58 CST:2000
*****************************************
VGDA at block 2242
*****************************************
*****************************************
vgh.vg_id:    0037521400004c00000000dc74595c25
vgh.numlvs:      0
vgh.maxlvs:      256
vgh.pp_size:     28
vgh.numpvs:      3
vgh.total_vgdas: 3
vgh.vgda_size:   2098
vgh.quorum:      1
vgh.auto_varyon: 1
vgh.check_sum:   0
vgda hdr: timestamp 946844818 (386fb492), 402158211 (17f87283)
vgda hdr: timestamp Sun Jan  2 14:26:58 CST:2000
**********  Physical Volume: 1  ***********
pvh.pv_num:      1
pvh.pv_id:       003752147454a336
pvh.pp_count:    546
pvh.pv_state:    1
pvh.pvnum_vgdas: 1
pvh.psn_part1:   4352
**********  Physical Volume: 2  ***********
pvh.pv_num:      2
pvh.pv_id:       003752147454c64c
pvh.pp_count:    15
pvh.pv_state:    1
pvh.pvnum_vgdas: 1
pvh.psn_part1:   4352
**********  Physical Volume: 3  ***********
pvh.pv_num:      3
pvh.pv_id:       003752147454e7cd
pvh.pp_count:    67
pvh.pv_state:    1
pvh.pvnum_vgdas: 1
pvh.psn_part1:   4352
*****************************************
vgt.concurrency:        0
vgda trl: timestamp 946844818 (386fb492), 402158211 (17f87283)
vgda trl: timestamp Sun Jan  2 14:26:58 CST:2000
从readvgda 得到的信息,当mkvg的时候,对硬盘的写操作范围是128sec+lvmarea_len: 4212sec,即4340个扇区
其中128sec以前的LVM record很重要,从128-4339扇区,可以说是原先的数据全部被破坏,相当于先全部清0每个扇区,然后写入vgsa、vgda信息。
重新mkvg过的的VG,原来每个硬盘的LP/PP MAP信息全部被破坏。
下面我们来看一下7sec十六进制数据(为了对比我把硬盘先每个字节都填上DD,然后才mkvg):
7sec
#lquerypv -h /dev/hdisk13 E00 200
00000E00   5F4C564D 00375214 00004C00 000000DC  |_LVM.7R...L.....|
00000E10   74595C25 00001074 00000832 00000088  |tY\%...t...2....|
00000E20   000008C2 11177227 00000100 0001001C  |......r'........|
00000E30   00000008 00000080 000008BA 0008DDDD  |................|
00000E40   00000000 DDDDDDDD DDDDDDDD DDDDDDDD  |................|
00000E50   DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD  |................|
00000E60   DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD  |................|
00000E70   DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD  |................|
00000E80   DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD  |................|
00000E90   DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD  |................|
00000EA0   DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD  |................|
00000EB0   DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD  |................|
00000EC0   DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD  |................|
00000ED0   DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD  |................|
00000EE0   DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD  |................|
00000EF0   DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD  |................|
00000F00   DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD  |................|
00000F10   DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD  |................|
00000F20   DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD  |................|
00000F30   DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD  |................|
00000F40   DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD  |................|
00000F50   DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD  |................|
00000F60   DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD  |................|
00000F70   DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD  |................|
00000F80   DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD  |................|
00000F90   DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD  |................|
00000FA0   DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD  |................|
00000FB0   DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD  |................|
00000FC0   DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD  |................|
00000FD0   DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD  |................|
00000FE0   DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD  |................|
00000FF0   DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD  |................|
对照:
lvmid:       1598838349   
vgid:     0037521400004c00000000dc74595c25
lvmarea_len: 4212
vgda_len:    2098
vgda_psn[0]: 136
vgda_psn[1]: 2242
reloc_psn:   286749223
pv_num:      1
pp_size:     28
vgsa_len:    8
vgsa_psn[0]: 128
vgsa_psn[1]: 2234
version:     8
vg_type:     -8739
如果熟悉了这种对照方式,哪些地方出错还可以重新填写构造出来。
以上是VG创建过程中的一些数据改动细节,让我们知道其实mkvg不会造成用户数据区的丢失,只是改动硬盘系统保留区的数据。




本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/23610/showart_443562.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP