[BACK]Return to xfs_lab_10_dmapi.doc CVS log [TXT][DIR] Up to [Development] / xfs-website / training / docs

File: [Development] / xfs-website / training / docs / xfs_lab_10_dmapi.doc (download)

Revision 1.2, Wed Jan 17 07:01:30 2007 UTC (10 years, 9 months ago) by chatz
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +28 -26 lines

Initial XFS training course that was presented in Nov 06.

ࡱ>	`	A/bjbjss	En%zzzzR;R;R;f;VzVzVz8z4zf;{{{{{*".$hV
R;^zz{{eeez*{:R{eee*/:0;"#{{EhVzR0
q
#;8
R;s|6Z@eЉ4666d666f;$;$;:rvf;;;rvf;f;f;zzzzzz
XFS
Practical Exercises


10 - DMAPI




Overview
HSM is a data storage application that automatically moves data between high speed/high cost and low speed/low cost storage media. To make the HSM application independent of the underlying filesystem implementation, the services of DMAPI (Data Management API) are used. DMAPI is an implementation layer siting between the HSM and the filesystem.
The HSM lab demonstrates a sample HSM implementation over a DMAPI XFS filesystem. The source code and the binary programs of the sample HSM implementation are located in
xfs-cmds/xfstests/dmapi/src/sample_hsm
The sample HSM:
Migrates selected files from a DMAPI filesystem to a tertiary storage. The file selection criteria is file size bigger than a given threshold. The tertiary storage is a staging directory on a DMAPI filesystem.
Sets up DMAPI managed regions on the files that have been migrated.
Releases (frees) the data blocks on the files that have been migrated.
Creates a DMAPI session and sets read/write/truncate event disposition of the managed region events.
Waits for events on a migrated file. On read event restores the file. On write/truncate event invalidates the file (assumes the whole file contents will be changed/renewed).
migfind, migout, migin and wbee are the programs implementing the sample HSM. mrmean and mls are utility tools.
Goals
The goal of these exercises is to understand the principles of operation of a HSM and its interactions with DMAPI. This knowledge could be used for new custom HSM development or analysing and triaging DMAPI problems with third party HSM implementations.
Prerequisites
Access to DMAPI standard for reference to the functions used in the sample HSM.
Setup
Recent Linux kernel with XFS
SLES10
2.6.18 or later kernel using  HYPERLINK "http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.6-xfs/" http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.6-xfs/
In addition to a standard build environment, the following packages are installed
xfsprogs-devel 2.7.11-18 or later
dmapi-devel 2.2.3-12 or later
Build the dmapi tools
# cd xfs-cmds/dmapi
# autoconf
# ./configure
# make
Build the dmapi test tools
# cd xfs-cmfs/xfstests/dmapi
# autoconf
# ./configure
# make

SGI XFS user space commands xfs-cmds version 2.8.14 or later. Note this is a more recent version of xfs-cmds than is included in SLES10.
Empty XFS DMAPI filesystem on the machine used by the sample HSM (no important data should be kept on this filesystem).
Empty staging directory on the DMAPI filesystem to store copies of the files migrated by HSM.
Create two text files on the dmapi filesystem
# dmesg | dd of=/mnt/dmapi_filesystem/small_file.txt ibs=4k count=1
# dmesg | dd of=/mnt/dmapi_filesystem/big_file.txt ibs=4k count=3
Build the dmapi test programs
# cd xfs-cmds/xfstests/dmapi
# ./configure
# make
For the purpose of this lab all programs should be run as root.
The following paths are used in the exercises:
PathDescription/mnt/dmapi_filesystemName of DMAPI filesystem/mnt/dmapi_filesystem/stagedirStaging directory/mnt/dmapi_filesystem/small_file.txtSmall test file/mnt/dmapi_filesystem/big_file.txtLarge test filexfs-cmds/xfstests/dmapi/src/sample_hsmLocation of sample HSM
Exercises
Exercise 1
List the implemented DMAPI events on this filesystem:
# cd xfs-cmds/xfstests/dmapi/src/suite1/cmd
# ./path_to_fshandle /mnt/dmapi_filesystem
fc88828964790000
# ./get_config_events fc88828964790000
Exercise 2
Create a list of files to be migrated by the HSM. A real HSM selects the files to be migrated using criteria, like a large file that hasnt been accessed recently.
In this exercise the sample HSM program migfind creates a list of files with size bigger than a threshold value. The file list contains one line (with three fields) per DMAPI file. The three fields are:
DMAPI handle length
DMAPI handle converted to an ASCII string
file size
In the next exercise the file list will be used by migout program.
To create the list of files bigger than 10Kb run:
# cd xfs-cmds/xfstests/dmapi/src/sample_hsm
# ./migfind -s 10k /mnt/dmapi_filesystem >& /tmp/cand_file
Check the contents of the list file cand_file
# cat /tmp/cand_file
24      5d1111a90e4800000e000000000000000103c00100000000        12288 
It contains one line with three fields. These three fields are the handle length, handle and the file size of /mnt/dmapi_filesystem/big_file.txt.
Exercise 3
Migrate files to the stage directory. The migration performs the following tasks:
Creates and opens files in the staging directory. The file names are the ASCII representation of the original file DMAPI handle.
Copies the original file data to the corresponding file in the staging directory. It uses dm_read_invis() to preserve the a_time of the original file.
Saves the location of the staging file for future file restoration. The location is saved (in the form of DMAPI attributes) in the original file via dm_set_dmattr() interface. The location is stored as two attributes - "DMAPI handle" and "length of handle" instead of using a full path name to the staging file.
Sets up managed regions on the original file via dm_set_region() interface.
Releases/removes all but the first 8Kb of the original file data via dm_punch_hole() interface.
The list of files to be migrated (cand_file) was created in Exercise 1.  Check that we do not have a DMAPI event mask for this file:
# cd xfs-cmds/xfstests/dmapi/src/suite1/cmd
# ./get_eventlist /mnt/dmapi_filesystem/big_file.txt
To migrate the files in the list run:
# cd xfs-cmds/xfstests/dmapi/sample_hsm
# ./migout /mnt/dmapi_filesystem/stagedir < /tmp/cand_file
Check a copy of big_file.txt has been created:
# ls -al /mnt/dmapi_filesystem/stagedir
# head /mnt/dmapi_filesystem/stagedir/5d1111a90e4800000e000000000000000103c00100000000
Do not try to read from or write to /mnt/dmapi_filesystem/big_file.txt at this time, but we can see that a DMAPI event mask is not set on this file:
# cd xfs-cmds/xfstests/dmapi/src/suite1/cmd
# ./get_eventlist /mnt/dmapi_filesystem/big_file.txt
Exercise 4
Restore a migrated file by opening it in vi text editor. The file restoration triggered by vi is actually done by the HSM program migin running as a daemon and the helper program wbee.
The functions migin performs are:
Creates a DMAPI session.
Sets read/write/truncate event disposition for the DMAPI filesystem via dm_set_disp() interface.
Waits for DMAPI events via dm_get_events() interface.
On DMAPI event spawns a child process with arguments event type, event token and the DMAPI session id. The span process is the wbee program described next.
The functions wbee performs are:
It is started by the migin program (described above) when a DMAPI event is
generated.
Retrieves the DMAPI event message via dm_find_eventmsg() interface.
On read DMAPI event:
Retrieves the DMAPI handle and the handle length of the original file from the event message.
Retrieves the DMAPI handle and handle length of the staging file via dm_get_fileattr() interface using the handle from 2a.
Reads chunks of data from the staging file via dm_read_invis() interface using the handle from 2b.
Writes the chunks of data to the original file via dm_write_invis() interface using the handle from 2a.
Removes the original file DMAPI managed regions via dm_get_region()/dm_set_region() interfaces.
Responds to the DMAPI event via dm_respond_event() interface. At this point all data has been restored to the original file. The application that generated the DMAPI read event will be unblocked and finish its read.
On write/truncate DMAPI event invalidates the DMAPI file data by: 
Removing the original file DMAPI managed regions via dm_get_region()/dm_set_region() interfaces.
Responding to the DMAPI event via dm_respond_event() interface. At this point the application that generated the DMAPI write/truncate event will be unblocked and finish its operation.
To restore the /mnt/dmapi_filesystem/big_file.txt perform the following steps:
Check the file map shows only 8Kb resident data:
# ./mls aehm /mnt/dmapi_filesystem/big_file.txt     
Note that /mnt/dmapi_filesystem/big_file.txt has only one resident extent. 
In another window open the file with vi:
# vi /mnt/dmapi_filesystem/big_file.txt
At this point vi hangs and no text is displayed because there is no DMAPI session to handle the read DMAPI event.
In another terminal window run:
# ./migin -v /mnt/dmapi_filesystem
Received read, token 1453
execl(wbee, wbee, -r, -s, 37, -t, 1453, 0)
migin creates a DMAPI session (37), receives notification of the read DMAPI event (token 1453) and uses wbee to process the event.
In the first terminal window, vi is unblocked and displays the /mnt/dmapi_filesystem/big_file.txt contents. Now exit vi and run:
# ./mls -aehm /mnt/dmapi_filesystem/big_file.txt
A proper HSM will have a process waiting for event notifications at all times so the only delay the user will observe is the time it takes for the HSM to migrate the data back to the filesystem.
Questions
What is the primary goal of a HSM application?
What is the primary goal of DMAPI?
Why does wbee program use dm_write_invis() instead of write() to restore the original file?
Answers
To migrate less active data off primary storage and move it to less expensive storage, while keeping it available to users.
Providing a consistent, platform and OS independent interface for development of HSM applications.
Three reasons.
dm_write_invis() preserves the original file timestamps.
dm_write_invis() does not generate DMAPI write events.
The sample HSM stores and uses the DMAPI handle instated of the path to the staged file.








XFS Lab 10 - DMAPI		sgi

	 PAGE 8	

Copyright  2006, Silicon Graphics, Inc.
1200 Crittenden Lane
Mountain View, CA 94043







































































































































































































































































































 %'*3N
S
T
u
Q`:;<pqrNkû˯{wswosokgh0h%R$hlhm$h{s8h-_h-_0JjhADUjh-_Uh8&h-_hhhohpKhOhhQ9hOOJQJhfOJQJh5MOJQJh]hhQ9OJQJh]hCJOJQJaJhOCJOJQJaJh]hHCJOJQJaJ&&'()*3	7
^
n
@0N
T
RgdO
&FgdpKgdR{gdpKgdO$^a$gdhQ9,gdO,gd$-gd$-.</@/R`r.9GNi04gdgd0gd%R$4
&F gd{s84gdpK4
&F gd-_4gd-_gdpKgdOk0
*Jxyq{|
2o()=CHº³º§££ŸŸ’hhZ1mHnHsHhhR{mHnHsHhZ1hR{h)hhy3hR{hyghR{5\]hR{hR{hZ\h"vh
hOh-_hpKh&Yhh&YhyghpKhh0h$34x
Jy~($Ifgd&YlgdpK4gdyggdyg4gdpKq^6$Ifgd&Yl*$Ifgd&Yl{kd$$Ifl40
&;;
t0644
laf4q^6$Ifgd&Yl*$Ifgd&Yl{kd-$$Ifl40
&;;
t0644
laf4"q^6$Ifgd&Yl*$Ifgd&Yl{kd$$Ifl40
&;;
t0644
laf4"#FVq^6$Ifgd&Yl*$Ifgd&Yl{kd$$Ifl40
&;;
t0644
laf4VW~q^6$Ifgd&Yl*$Ifgd&Yl{kd#$$Ifl40
&;;
t0644
laf49Jq|zupkkkfagdOgd"vgdZ\gdZ\gd"vgd#GgdpK{kdu$$Ifl40
&;;
t0644
laf4
| )3v=R+6	$	5gdm&fgdg
&F"gdg
&F"gdR{gdR{gdR{gdy3gdR{4gd]gd])*+56+,	jJapӿ}phWh hy3hOJQJ^JmH	sH	hmH	sH	hy3hmHnHsH	hhhmHnHsH	hZ1hm&fhahy3hm&fmHnHsH	hah..hghR{hOhShDhy3hDhR{OJQJ^JhDhR{5\]hR{hR{hhR{mHnHsHhhmHnHsH5j"J6b[ }   -!!!5"@"""
&F$gd
&F#gdVRgdVRgdVRgdZ\gdy3gdR{gdggdagdy356= >   !!"";#<###"$#$$$.%/%&&Q'Y'_'''''''''$(()<)))ӸӫvӇӇnhm&fmH	sH	 hy3hVROJQJ^JmH	sH	hVRhVRmHnHsH	hy3hy3mHnHsH	hy3mHnHsH	hhVRmHnHsH	hhVRmH	sH	hmH	sH	hVRmH	sH	hVRhVRmH	sH	hSmH	sH	hm&fmHnHsH	hZ\mH	sH	hy3mH	sH	+""r##=$$u%%&& 'Q''''$((((())"*S*gd'gd'gdgdgdy3gdVR
&F$gd
&F$gd)))*"*,*/*S**++ ++++-------------------~zvk^vvhhPCJEHaJhhPCJ0aJ0hPh~-h5MjhPUmHnHuhfjhfUhOhOh]h]h]hOhVRhm&fmH	sH	h}j7mH	sH	hy3mHnHsH	hVRhVRmHnHsH	 hy3hVROJQJ^JmH	sH	hVRhVRmH	sH	hm&fmH	sH	!S*+ +O+r+++R,,,,4------------
$
*Q'V^Vgdgd>3R
&F&gd]
&F&gd]
&F%gd]gdOgdm&f--------...;/</=/>/?/@/A/žhOhOh<hU?hPh2Dhfhh{YhOhPhQU0J'mHnHu
hP0J'jhP0J'U----....... .!.".#.$.%.&.'.(.).*.+.,.-.77]7^7gdrX%$^a$gdO%
9r 'gd	@-.../.0.1.2.3.4.5.6.7.8.9.:.;.<.=.>.?.@.A.B.C.D.E.F.G.H.$
Ba$gd>mgd`H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.[.\.].^._.`.a.b.c.d.	
BgdCNd.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.{.|.}.~.............................................................$a$gd"hTgd"hT	
Bgd"hT.............................gd7FgdF............................................./////////	/
///
/gdsr
/////////////////// /!/"/#/$/%/&/'/(/)/*/*/+/,/-/.///0/1/2/3/4/5/6/7/8/9/:/;/</=/>/?/@/A/
&F&gd]$gdHpC	0
00&P	P/R :p#. A!r"r#$% 2DyKyKjhttp://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.6-xfs/P$$If!vh5;5;#v;:Vl4
t65;f4P$$If!vh5;5;#v;:Vl4
t65;f4P$$If!vh5;5;#v;:Vl4
t65;f4P$$If!vh5;5;#v;:Vl4
t65;f4P$$If!vh5;5;#v;:Vl4
t65;f4P$$If!vh5;5;#v;:Vl4
t65;f47L@LdFNormal7x^7OJQJ_HmH	sH	tH	@`	Heading 1,$$&d@&P`&^'5B*	CJ(KH OJQJ\^JaJ phDj@jO	Heading 2$@&^&5B*	CJ OJQJ\]^JaJphDh@hlF	Heading 3$x@&^#5B*	CJOJQJ\^JaJphDP@P$	Heading 4$@&B*	CJ\aJphDDA@DDefault Paragraph FontVi@VTable Normal :V44
la(k(No List6U@6+	Hyperlink>*B*phbOb"p6Code 
@@xx^m$ B*	CJOJQJmHnHph=lufOfng	Structure
B^#CJOJQJ^JaJmHnHsHur@#rrX
Table Grid7:V0
7^7TO2Ti7^Array contents$
B&<<a$sH	@OC@i7^Array TableCJOJQJ2OR2#p6Example
n^nTT
ETOC 1$
%5CJOJQJ\^JaJDD
q_TOC 2
%S(^S5\::
ukgTOC 3
%^22
sTOC 4^22
sTOC 5X^X22
sTOC 6 ^ 22
sTOC 7^22
sTOC 8^22
sTOC 9x^xHH<[
Parameters$xm$5mHnHu:O:+YCDescription
 n^n>@>YC
Normal Indent
!^V!Vp6	Code Char,B*	CJOJQJ_HmHnHph=lsH	tH	u0"10p6Example CharT@BTTHHeader$
B*^5B*CJ OJQJph< @R<78Footer
%
9r OJQJFV@aF78FollowedHyperlink>*B*ph.)@q.78Page NumberRORnY
Table Heading(<^5OJQJ^JJJnYTable Description)<^HOHnYTable Values*<^OJQJHH Description Char_HmH	sH	tH	O$@Style 24 pt Bold Custom Color(RGB(9638168)) Centered Left:  0...,$^a$5B*	CJ0\phDO3$@Style 60 pt Bold Custom Color(RGB(9638168)) Centered Left:  0...-$^a$5B*	CJx\phDRYR$Document Map.-D M
OJQJ^JBBp6Style Courier NewOJQJnn1p6Style Description + Courier New0OJQJmHnHutt0p6$Style Description + Courier New CharOJQJmHnHujjXTOC Heading"2$&d	PD^5B*	CJ(OJQJphD1-9qEStyle 60 pt Bold Custom Color(RGB(9638168)) Centered Left:  0... Char+5B*	CJxOJQJ\_HmH	phDsH	tH	0OB0pKBullet	4
&F e@R]HTML PreformattedC5
2(
Px4 #\'*.25@9^OJQJ^JmH	sH	tH	8Ob8&Y
Table Text6OJQJ	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~	

A'		



  !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]^^__``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~		



	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~	

!	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~	

A'A'nB'@0B'@0&'()*37^n@0NTR`r.9GNi0		
4
x




Jy~"#FVW~
9
J
q
|
 )3v=R+6	$	5j"J6b[}-5@r=u Q$     !!""S"# #O#r###R$$$$4%%%%%%%%%%%%%%%&&&&&&& &!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&[&\&]&^&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&{&|&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''	'
'''
''''''''''''''''''' '!'"'#'$'%'&'''(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'B'-0-0-0,0,0,0,000000*0*0*0* 0* 0* 0* 0* 0*0*0*0N0*0R0*  40  40  40  40  40r  40r  400000  4000000  40  40  40  4000  4000000(0 (0 0 *0 60 0 *0 60 0 *0 60 0 *0 60 0 *0 60 0 0000000000q
0q
  40	q
  40
q
  40q
0q
0q
0q
0q
0q
0q
0q
0q
00+" 0+" 0+" 0+" 0+" 0+0+0+0+0+0+0+0+0+0+0+0+0+000# 0# 0# 0# 0000$ 0$ 0$ 0$ 0$ 0$ 0$ 0$ 0$ 0$ 0u$ 0u0000000000000000% 0#% 0#% 0#0& 0#& 0#& 0#& 0$#& 0$#& 0$#@0h00@0h00@0h00@0h00@$0@0@%0@0@0@0@0@%0@0h00`000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000$00h0&'()*T4
x

9
J
q
|
56#O#r#%%&&B'@-0@-0@,0@,0@,0@,0@0@0@0
@0j0
000
@0j00\0	00j00L00000@0@0
00@0@0@0
00	''77k)-A/%')+R"V|5"S*--.H.d......
/*/A/ !"#$&(*,-./0123456@/;pA'X*13! ,b$.^%rBɮc$0e0e
   A@ AԔ 8c8c	

?1 d0u0@Ty2 NP'p<'pA)BCD|E||s
"
0e@        @ABC DEEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN E5%  N E5%  N F	
5%
   !"?N@ABC DEFFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab `&@ 0(	
B
S	?J2(	
z	.&/
C  3"t

s*X99?  "`.&/ZB
	
s*DDp  	.

C  S"t

s*X99?  "`.

s*@~D  "`.<
A''(
.k@	/wH*xu/\K*u@_Common_XFS_TypesB'B'sj#
!tj#uj#L'%vj#lwj#ܴ!xj#%%&&&&B'&&&&&&B';*urn:schemas-microsoft-com:office:smarttagsaddress:*urn:schemas-microsoft-com:office:smarttagsStreet9*urn:schemas-microsoft-com:office:smarttagsplace8*urn:schemas-microsoft-com:office:smarttagsCity9*urn:schemas-microsoft-com:office:smarttagsState>*urn:schemas-microsoft-com:office:smarttags
PostalCodebh,27:X]		#
(


W}HOfl3<cp5B	iv$)UYinfv<Kq~
;K!#!!!{####$$$%%%%%%%%%%%%%%%&&<'B'nv,2=QR6=kq<Crwmt 5>nwCLxFL2 4 !#!!!""##$$%%%%%%%%%%%%%%&&<'B'3333333333333333333333333333333*^n		

#FW~9
I
J
|
)3+6}  # #$$%%%%%%%%%%%%%%&&&&<'B'%%%%%%%%%%%%&&<'B'&|}1 ~Jdv(gH[^N<[1'Ə4r=2N8>BaL*V!J3b9{J	:H:A=mo=P3n>vs5?b'8HEDHGa^FjE6zZ%\b8N4ewibgqL@lNPgon$
\rhX<5=ftE_{x).}1+~^`.^`.^`.^`.^`OJQJo(^`OJQJo(^`OJQJo(^`OJQJo(hh^h`.hh^h`OJQJo(h^`OJQJo(hHh^`OJQJ^Jo(hHoh

^
`OJQJo(hHhw
w
^w
`OJQJo(hHhGG^G`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hH^`OJQJo(hH^`OJQJ^Jo(hHo

^
`OJQJo(hHw
w
^w
`OJQJo(hHGG^G`OJQJ^Jo(hHo^`OJQJo(hH^`OJQJo(hH^`OJQJ^Jo(hHo^`OJQJo(hHh
^`hH.h
^`hH.h

L
^
`LhH.h
w
w
^w
`hH.h
GG^G`hH.h
L^`LhH.h
^`hH.h
^`hH.h
L^`LhH.h^`OJQJo(hHh^`OJQJ^Jo(hHoh

^
`OJQJo(hHhw
w
^w
`OJQJo(hHhGG^G`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJhHh^`OJQJ^Jo(hHohpp^p`OJQJo(hHh@@^@`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohPP^P`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh

^
`OJQJo(hHhw
w
^w
`OJQJo(hHhGG^G`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hH7^`o(.7
^`hH.7

L
^
`LhH.7
w
w
^w
`hH.7
GG^G`hH.7
L^`LhH.7
^`hH.7
^`hH.7
L^`LhH.h^`OJQJo(hHh^`OJQJ^Jo(hHoh

^
`OJQJo(hHhw
w
^w
`OJQJo(hHhGG^G`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh

^
`OJQJo(hHhw
w
^w
`OJQJo(hHhGG^G`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh

^
`OJQJo(hHhw
w
^w
`OJQJo(hHhGG^G`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh

^
`OJQJo(hHhw
w
^w
`OJQJo(hHhGG^G`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh

^
`OJQJo(hHhw
w
^w
`OJQJo(hHhGG^G`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh
^`hH.h
^`hH.h

L
^
`LhH.h
w
w
^w
`hH.h
GG^G`hH.h
L^`LhH.h
^`hH.h
^`hH.h
L^`LhH.h^`OJQJo(hHh^`OJQJ^Jo(hHoh

^
`OJQJo(hHhw
w
^w
`OJQJo(hHhGG^G`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh
^`hH.h
^`hH.h

L
^
`LhH.h
w
w
^w
`hH.h
GG^G`hH.h
L^`LhH.h
^`hH.h
^`hH.h
L^`LhH.h^`OJQJo(hHh^`OJQJ^Jo(hHoh

^
`OJQJo(hHhw
w
^w
`OJQJo(hHhGG^G`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh

^
`OJQJo(hHhw
w
^w
`OJQJo(hHhGG^G`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hH7^`o(.7
^`o(hH.7

L
^
`LhH.7
w
w
^w
`hH.7
GG^G`hH.7
L^`LhH.7
^`hH.7
^`hH.7
L^`LhH.h^`OJQJo(hHh^`OJQJ^Jo(hHohpp^p`OJQJo(hHh@@^@`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohPP^P`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh

^
`OJQJo(hHhw
w
^w
`OJQJo(hHhGG^G`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh

^
`OJQJo(hHhw
w
^w
`OJQJo(hHhGG^G`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh

^
`OJQJo(hHhw
w
^w
`OJQJo(hHhGG^G`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hH7^`o(.
oo^o`hH.
?	L?	^?	`LhH.
^`hH.
^`hH.
L^`LhH.
^`hH.
OO^O`hH.
L^`LhH.h>>^>`OJQJo(hHh

^
`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh~~^~`OJQJ^Jo(hHohNN^N`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh
^`hH.h
^`hH.h

L
^
`LhH.h
w
w
^w
`hH.h
GG^G`hH.h
L^`LhH.h
^`hH.h
^`hH.h
L^`LhH.h^`OJQJo(hHh^`OJQJ^Jo(hHoh

^
`OJQJo(hHhw
w
^w
`OJQJo(hHhGG^G`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hH7^`o(.7
^`hH.7

L
^
`LhH.7
w
w
^w
`hH.7
GG^G`hH.7
L^`LhH.7
^`hH.7
^`hH.7
L^`LhH.7^`o(.7
^`o(hH.7

L
^
`LhH.7
w
w
^w
`hH.7
GG^G`hH.7
L^`LhH.7
^`hH.7
^`hH.7
L^`LhH.&bN8HED^FjE=\r_{N4eibg[~}|	:*V!A=b9@l3n>:>Bao=5=ft5?'rgo).}1+~%\&&									T"																																			D																																																																																																		D																																												D																																			D								D									@	@]xXe>xz0Jd8'%AFyYzZ&''_,00KzcH:*C15?S4WW^{$1)x2;"|6:&DGg"i~5
DqOU]Ncnzu{<$cTa(}i(/4F#^Gnt	="	I-	P	]	e	h	
)	
Q
Q 
3
5
G
b
;p
w
KGFNiuz`
DZBh-
'
(
:0
A
c
u
9I:<qr.Y>lIU>dhwk&*:ipIS E7U>Zghr6{D
\">f&}==ZYfs
$S/0Q^oZsWxI.L84"$/3ODJjL6&t#'[ns.eDHya?ADlId37AQ|}d~y+(,s-86;`>].DuoU_#v=> 	 0 E5 )9 = S e i du w "!8!}K!$]!~!"""Z'"O""X"s"y"z" #0#B#c#th#zx#m$	$%$%R$X$Fj$% %'%(%)%4%J%P%]%a%r%T&'&8&;&n&co&jy&'_G'M'^'(=(FA(F(u^(B|(~())")8)B)&m)Yu)z)
*!*&*eC*d*f*-i*'x*Z{*+ +0+;+D+H+K+(|+,1,b,4h,j,s,w,"-3;-W-_-|-~-k-1.A.d.../H.\].$_.7c.m.//&/y;/D/L/R/Qf/h/w/:0O@0
I0Tb01:1Y1Z1f1mp1p1262k263)3^3\c3y3M94RV4'p4|4J?5N5PS50Y5Y5g51l5
y5.(6163:6l;6=6?=6B6E6X6]`6Xb6p6p6z67}j7z7"7
8187898a8{s89c9#929hQ9b9t9t9:':.:31:G:w:~: ;6$;[;a;e;l; <!<yb<==k=;*=5=p=={>>>>:>=>[>d>j>#k>`v>ez>
A?A?.B?7i?	@x5@I@[@b@`m@w@ZAAAFAoAtA0B9B`(B8B?BAB]eBTiB2zBBC'C2CUCYCdZClC"D2D*DC+D8/DAaDDaDdDeD|D((E}SEwrE
F@FFF"F7F?FdFlF#Go$G*GBmGFmG H#H'H0HYH~fHE|H8,I
9I?ILIrIY{I"JJ`2J<JzSJwJK
KK6K8K*KK/LKWKgKmK3LXLhL1nL|LN(M8MtHMLMcMiMe>NO&Oa8O:^OFrOXPiPPPP_1P6PCPXP/`Pq`P0Q6QQHQyOQ`Q]xQ}RVR(RG0R>3RZ>Rr@R6MRmRS+S1SLSRST	TJT**T1T7T;TKT"hTnTUzUUkU}!U"(U@)U=UDUEUJUNU<RUfUVx!V9VAVGVMVcVW1W|AWMWOWxWX0X%5X>XQX^`XqYYNY!Y&YT'Yn)YkVYYYfYjoYh{YGZZB%Zq8Z=ZTlZ	[[5[\V\l\Q\Z\_\O]
]#]3]B]^i7^/:^1Z^;[^d^~i^__q_-_?_X_
``=`jq`
aT-a>Eacaeb=wb{b;cdd.dEdJtdKedEefhffm&fg!g72g3gDgEgsNg]hgukgngyg@zghhd#hR8h=h?hChDhxPhiiMiViwioj.&j=.j(1jKj,k~.k9kMkVk]k%eksk%l{9l
5mPfmnG)nfoooCoRop]o`oHpk2p@pOp7ipvpq
qxqq6q9qFDq?nqrr4r(;r{r`szss'st0t|t;uj1u.@uhuJyuvvrv>vcvWdvPvvIw.wJZw9hw#nwvwNyw
xMx?x5IxJxUx\xAzx%y(y(9y?yTy\ywyz9)z$fzjzzz{{:{R{R{T{n{=s{s{|.|9|N|q|O}:}?}(?}KM}Op}w~}~_E~NF~M~;T~q~?x~x~	?D)EEHjx<9'5*@@dBw1
:Q^#G>U=Srx$<6DDXXI~#w:aU]u[A/
kq39MNOPP'dk+uz&mHs!Dnsr,@5@tEOCu;~
2RWYYclM$M%W%-3FM&Vtkz&bCa|`$'EGT\hnynn(IX_"+13A4T[sM$) 8iA%(&"+c10)"#:_4'Wf{{U~
& j'CCPPJRXRo=%0J<~J3SS`l}!_ X(UVBh3$5O$~9 PqShkp-s*^n95DCHUW?Zg9z"2V:LW+p	QY)
9>L,kl}tuz=}m7DSnX
L
.IKTe
T
|P P":d[[v
$'&F=Fma|u	i#*.:AF<LcLo1?58:-Ti!4Sp#Tkpw>9VX\_fh)1E\O1KSt{kvu#),,"B R5AVwWly:2JxT]iy}#'|GM2u}Ga"vB
"?$W6I`r7yUX#%U6:?_H'bb7$ &)AOrvk$CNoZ\`v}/<X[U#5HI]bw>!0S)sL0n3:R=t
FlHx/<#AkEn	EnYuY\or"A[jyl>m=uKxy>&78@sFP` s +0@3Fit/jd xxE&5HKLt'_r}
zJ3D6CRXe{{@38<>I3js\"Irs-;+Des~15Moy@nx",.8Ol4"16td2?#0E;U?PrXau)]
&$%J>THHcI2Y:Zze*^
zG!2)/I^e`t5
3/:<`CLKTx
.
.?
O6WOX:\'r_,fsmut&17<SXDd)#J7>BQ7VZC[`O9g-Mp&5G nu.u5$D_~bhitw!'Sip3w;|.%uKj^;DTJq|
F%)2*VJOZa9?Ky
&*dFqT`lq37o9JN*%s;+?iy/Uk8$AaC4Z44}pp3
\-<DLP<[7gl=0&28Q:keo`P
Dc/Y25Fp$55cVv;B]d=pK\]7 ?uw^Hcv]#QUbm'tr
#8=wz
(;>\]`ab/f],
2>lBEU:l+%3$?$CNU_wr*sL	h$=Dwz'Ka>pA!QUzS+'RySX>K`Czh
>NQZ``:fpIt&* BU]Z`x&g-wy|	!Dabqwg#AG<9MfzBUI+sD^mm+y~"#FVW~B'@,<KA'@@UnknownG: Times New Roman5Symbol3&: Arial/&SGI?5	: Courier NewA&Arial Narrow5&zaTahoma;Wingdings"1hIDDq4dz%z%2QXR
0>2XFS Practical Exercises
10 - DMAPIchatzchatz&	

 !"#$%Oh+'0	 ,
LXd
p|XFS Practical Exercises10 - DMAPIchatzNormal.dotchatz23Microsoft Office Word@9"@@N@j՜.+,D՜.+,Dhp|
SGIDz%XFS Practical ExercisesTitle 8@_PID_HLINKSAMM5http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.6-xfs/	

 !"#$%&'()*+,-./012345679:;<=>?ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root Entry	F zData
81Table@zWordDocumentEnSummaryInformation(DocumentSummaryInformation8CompObjq
	FMicrosoft Office Word Document
MSWordDocWord.Document.89q