




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
背景:一个关于数据丢失后的恢复问题,在LU中引起热烈的讨论,在相关的讨论帖中,qintl对LVM底层数据结构做了详细而精彩的演讲,受益匪浅。现将qintl主要讲稿内容整理如下,以便大家阅读。相关讨论帖地址:/viewthread.php?tid=76187&extra=page%3D5%26amp%3Bfilter%3Ddigest/viewthread.php?tid=75851&highlight=%B6%AA%CA%A7一个硬盘在AIX系统下系统保留区数据结构,AIX下的Block其实就是512Byte,编号从0开始,跟我们所说的扇区是一样的。以下是我机器上某块盘的信息想了解更多的东西,请阅读:/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.kernelext/doc/kernextc/logival_vol_subsys.htm硬盘物理位置,用扇区标记(sec)Readvgda结果(readvgda -s hdisk10)0 sec(开始)boot recordbad-block directoryLVM record(7 sec和70 sec)Readvgda会调用LVM record中的数据mirror write consistency (MWC) recordLVM record记录着lvmarea最基本的参数127 sec(结束)lvmid: 1598838349vgid: 0037521400004c00000000dc6ffba362lvmarea_len: 4212 - (vgda_len + vgsa_len) * 2vgda_len: 2098vgda_psn0: 136vgda_psn1: 2242reloc_psn: 286749223pv_num: 1pp_size: 28vgsa_len: 8vgsa_psn0: 128vgsa_psn1: 2234version: 8vg_type: -8739图片是7sec的十六进制视图,可以通过十六进制转换成上面某些参数的十进制数值。128 sec(开始)VGSA数据区135 sec(结束)*VGSA at block 128*vgsa beg: timestamp 946773107 (386e9c73), 314919315 (12c54993)vgsa beg: timestamp Sat Jan1 18:31:47 CST:2000vgsa.pv_missing: 0vgsa.stalepp0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0vgsa.stalepp1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0vgsa.stalepp2: ff 3f 0 ff ff ff ff ff 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0vgsa.factor: 1vgsa.pad2: 0 0 0vgsa end: timestamp 946773107 (386e9c73), 314919315 (12c54993)vgsa end: timestamp Sat Jan1 18:31:47 CST:2000*136 sec(开始)VGDA数据区LP/PP MAP2233 sec(结束)*VGDA at block 136*vgh.vg_id: 0037521400004c00000000dc6ffba362vgh.numlvs: 1vgh.maxlvs: 256vgh.pp_size: 28vgh.numpvs: 3vgh.total_vgdas: 3vgh.vgda_size: 2098vgh.quorum: 1vgh.auto_varyon: 1vgh.check_sum: 0vgda hdr: timestamp 946773107 (386e9c73), 352680539 (15057a5b)vgda hdr: timestamp Sat Jan1 18:31:47 CST:2000以上是从136扇区读取的*Logical Volume: datalv4*lve.lvname: 0lve.maxsize: 512lve.lv_state: 1lve.mirror: 3lve.mirror_policy: 2lve.num_lps: 10lve.permissions: 1lve.bb_relocation: 1lve.write_verify: 2lve.mirwrt_consist: 1lve.stripe_exp: 0lve.striping_width: 0lve.lv_avoid: 0lve.child_minor_num: 0*Physical Volume: 1*pvh.pv_num: 1pvh.pv_id: 003752146ff9501bpvh.pp_count: 546pvh.pv_state: 1pvh.pvnum_vgdas: 1pvh.psn_part1: 4352*pv_num:pp_num:pp_state lv_name:lp_num:pp_copy_val:pv_fst_mir:part_fst_mir:pv_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: 2pvh.pv_id: 003752146ff979f4pvh.pp_count: 15pvh.pv_state: 1pvh.pvnum_vgdas: 1pvh.psn_part1: 4352*pv_num:pp_num:pp_state lv_name:lp_num:pp_copy_val:pv_fst_mir:part_fst_mir:pv_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: 3pvh.pv_id: 003752146ff9a31bpvh.pp_count: 67pvh.pv_state: 1pvh.pvnum_vgdas: 1pvh.psn_part1: 4352*pv_num:pp_num:pp_state lv_name:lp_num:pp_copy_val:pv_fst_mir:part_fst_mir:pv_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: 0vgda trl: timestamp 946773107 (386e9c73), 352680539 (15057a5b)vgda trl: timestamp Sat Jan1 18:31:47 CST:20002234 sec(开始)VGSA数据区(备份)2241 sec(结束)2242 sec(开始)VGDA数据区(备份)LP/PP MAP4339 sec(结束)4340 sec(开始)4351 sec4352 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=yeschinadns的Blog有对PVID的详细介绍:/u/16252/showart_94788.html我们从底层观察chdev -l hdiskX -a pv=yes对硬盘0扇区的改动:# lspvhdisk0 003752149a0b2b91 rootvghdisk10 none Nonehdisk11 003752146ff979f4 Nonehdisk12 003752146ff9a31b Nonehdisk10没有分配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=yeshdisk10 changed# lspvhdisk0 003752149a0b2b91 rootvghdisk10 0037521474170251 Nonehdisk11 003752146ff979f4 Nonehdisk12 003752146ff9a31b None# lquerypv -h /dev/hdisk10 0 20000000000 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 02000 - 从硬盘哪个字节开始查看,是十六进制200 - 输出到屏幕上的字节数,十六进制,十六进制200转换成十进制,512,就是一个扇区的大小。假如我们要查看128扇区数据,命令应该是:lquerypv -h /dev/hdisk10 10000 20010000怎么换算来的? 128*512=65536(十进制),转换成十六进制是10000,因为我们要看一个扇区的数据,后面的参数就是512字节,转换成十六进制就是200。mkvg对硬盘的数据改动我们来看一下操作# lspvhdisk0 003752149a0b2b91 rootvghdisk13 003752147454a336 Nonehdisk14 003752147454c64c Nonehdisk15 003752147454e7cd None# mkvg-s 256-y testvg hdisk13 hdisk14 hdisk15# lspvhdisk0 003752149a0b2b91 rootvghdisk13 003752147454a336 testvghdisk14 003752147454c64c testvghdisk15 003752147454e7cd testvg*# readvgda -s hdisk13lvmid: 1598838349vgid: 0037521400004c00000000dc74595c25lvmarea_len: 4212vgda_len: 2098vgda_psn0: 136vgda_psn1: 2242reloc_psn: 286749223pv_num: 1pp_size: 28vgsa_len: 8vgsa_psn0: 128vgsa_psn1: 2234version: 8vg_type: -8739(这是LVM record,在硬盘前128个扇区,分别在7sec和70sec)*= 1ST VGDA-VGSA: hdisk13 =*VGSA at block 128*vgsa beg: timestamp 946844818 (386fb492), 357026209 (1547c9a1) -这个是时间戳,在128sec开头8个字节。vgsa beg: timestamp Sun Jan2 14:26:58 CST:2000vgsa.pv_missing: 0vgsa.stalepp0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0vgsa.stalepp1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0vgsa.stalepp2: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0vgsa.factor: 1vgsa.pad2: 0 0 0vgsa end: timestamp 946844818 (386fb492), 357026209 (1547c9a1)-这个是时间戳,在135sec结尾8个字节。vgsa end: timestamp Sun Jan2 14:26:58 CST:2000(从LVM record知道,VGSA大小是8sec。mkvg时VGSA只写入时间戳)*VGDA at block 136*vgh.vg_id: 0037521400004c00000000dc74595c25vgh.numlvs: 0vgh.maxlvs: 256vgh.pp_size: 28vgh.numpvs: 3vgh.total_vgdas: 3vgh.vgda_size: 2098vgh.quorum: 1vgh.auto_varyon: 1vgh.check_sum: 0vgda hdr: timestamp 946844818 (386fb492), 402158211 (17f87283)vgda hdr: timestamp Sun Jan2 14:26:58 CST:2000(这是真正的VGDA头部信息,在硬盘136sec)*Physical Volume: 1*pvh.pv_num: 1pvh.pv_id: 003752147454a336pvh.pp_count: 546pvh.pv_state: 1pvh.pvnum_vgdas: 1pvh.psn_part1: 4352(这是Physical Volume: 1的LP MAP表头部信息,在153sec)*Physical Volume: 2*pvh.pv_num: 2pvh.pv_id: 003752147454c64cpvh.pp_count: 15pvh.pv_state: 1pvh.pvnum_vgdas: 1pvh.psn_part1: 4352(这是Physical Volume: 2的LP MAP表头部信息,在188sec)*Physical Volume: 3*pvh.pv_num: 3pvh.pv_id: 003752147454e7cdpvh.pp_count: 67pvh.pv_state: 1pvh.pvnum_vgdas: 1pvh.psn_part1: 4352(这是Physical Volume: 3 的LP MAP表头部信息,在189sec)*vgt.concurrency: 0vgda trl: timestamp 946844818 (386fb492), 402158211 (17f87283)vgda trl: timestamp Sun Jan2 14:26:58 CST:2000*= 2ND VGDA-VGSA: hdisk13 =*VGSA at block 2234*vgsa beg: timestamp 946844818 (386fb492), 357026209 (1547c9a1)vgsa beg: timestamp Sun Jan2 14:26:58 CST:2000vgsa.pv_missing: 0vgsa.stalepp0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0vgsa.stalepp1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0vgsa.stalepp2: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0vgsa.factor: 1vgsa.pad2: 0 0 0vgsa end: timestamp 946844818 (386fb492), 357026209 (1547c9a1)vgsa end: timestamp Sun Jan2 14:26:58 CST:2000*VGDA at block 2242*vgh.vg_id: 0037521400004c00000000dc74595c25vgh.numlvs: 0vgh.maxlvs: 256vgh.pp_size: 28vgh.numpvs: 3vgh.total_vgdas: 3vgh.vgda_size: 2098vgh.quorum: 1vgh.auto_varyon: 1vgh.check_sum: 0vgda hdr: timestamp 946844818 (386fb492), 402158211 (17f87283)vgda hdr: timestamp Sun Jan2 14:26:58 CST:2000*Physical Volume: 1*pvh.pv_num: 1pvh.pv_id: 003752147454a336pvh.pp_count: 546pvh.pv_state: 1pvh.pvnum_vgdas: 1pvh.psn_part1: 4352*Physical Volume: 2*pvh.pv_num: 2pvh.pv_id: 003752147454c64cpvh.pp_count: 15pvh.pv_state: 1pvh.pvnum_vgdas: 1pvh.psn_part1: 4352*Physical Volume: 3*pvh.pv_num: 3pvh.pv_id: 003752147454e7cdpvh.pp_count
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年陶瓷材料3D打印增韧技术在电子元件的革新应用
- 年产工具箱30万个新建项目环评报告表
- 港口物流智能化发展对2025年港口产业布局影响报告
- 昀冢科技2025年度向特定对象发行A股股票方案的论证分析报告
- 试用期转正工作报告总结范文模板
- 金属加工技师焊接实操考核试卷及答案
- 2025年关于智能手机采购的合同范本
- 酒店工程部操作方案(3篇)
- 2025年汽贸行业迎来的变革:购车签订电子借款合同
- 脊柱保护课件
- 2025至2030中国电缸行业发展分析及投资风险预警与发展策略报告
- 子宫腺肌症术后护理查房
- 在制品生产车间管理制度
- 《机械制图》机械工业出版社 第一章 制图基本知识与技能 章节过关卷(原卷版)
- 安防监控设备维护保养手册
- 医疗美容手术管理制度
- 城市轨道交通工程测量技术培训课件
- 2025年数据分析师初级考试试题及答案
- 【KAWO科握】2025年中国社交媒体平台指南报告
- 资质借用合同 协议书
- 货物仓储托管合同协议
评论
0/150
提交评论