博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深入了解Oracle ASM(二):ASM File number 1 文件目录
阅读量:4947 次
发布时间:2019-06-11

本文共 38436 字,大约阅读时间需要 128 分钟。

ASM file number 1 - the File Directory   ASM文件目录File Directory针对本Disk Group中的每一个文件包含一条记录。该记录指向该文件的前60个数据盘区extents,必要时还包括间接盘区indirect extents。该文件目录在必要容纳更多文件数目时会自动增长。每一个文件目录记录保持更新以下文件信息:  
  • 文件大小
  • 该文件的块大小
  • 文件种类,例如:数据文件,ASM元数据文件,在线日志,归档日志,控制文件等等
  • 文件冗余度:外部、2路或者3路镜像
  • 条带化配置,coarse or fine
  • 到前60个extent的直接盘区指针(direct extent pointer)
  • 300个间接盘区指针(indirect extent pointers)
  • 创建时间戳
  • 最后修改或更新时间戳
  • 指向别名目录中的用户别名和文件名
ASM 1号文件 file number 1 文件号file number是文件目录中找到对应文件记录的重要索引键。 其中第一条记录是该文件目录自身。为了找出过期的文件号,所以在每个文件创建时都生成了一个唯一的32 bit的识别号incarnation number。由此,disk group的ID+ file number + 该incarnation number 可以做到唯一识别某个指定文件。   请注意,约定俗成地将ASM文件的第一个block称为0号块--block zero。 0号块通常包含十分重要的接口信息。  
文件目录file directory 的位置    为了找出file directory所在AU的位置,我们需要使用kfed工具浏览ASM disk header磁盘头部0号AU中的kfdhdb.f1b1locn信息,例如我们使用kfed查看asm disk /dev/asm-diski上的信息:    
[grid@localhost ~]$ kfed read /dev/asm-diski  aun=0 |lesskfbh.endian:                          1 ; 0x000: 0x01kfbh.hard:                          130 ; 0x001: 0x82kfbh.type:                            1 ; 0x002: KFBTYP_DISKHEADkfbh.datfmt:                          1 ; 0x003: 0x01kfbh.block.blk:                       0 ; 0x004: blk=0kfbh.block.obj:              2147483650 ; 0x008: disk=2kfbh.check:                  2593903300 ; 0x00c: 0x9a9bd2c4kfbh.fcn.base:                      217 ; 0x010: 0x000000d9kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000kfbh.spare1:                          0 ; 0x018: 0x00000000kfbh.spare2:                          0 ; 0x01c: 0x00000000kfdhdb.driver.provstr:         ORCLDISK ; 0x000: length=8kfdhdb.driver.reserved[0]:            0 ; 0x008: 0x00000000kfdhdb.driver.reserved[1]:            0 ; 0x00c: 0x00000000kfdhdb.driver.reserved[2]:            0 ; 0x010: 0x00000000kfdhdb.driver.reserved[3]:            0 ; 0x014: 0x00000000kfdhdb.driver.reserved[4]:            0 ; 0x018: 0x00000000kfdhdb.driver.reserved[5]:            0 ; 0x01c: 0x00000000kfdhdb.compat:                186646528 ; 0x020: 0x0b200000kfdhdb.dsknum:                        2 ; 0x024: 0x0002kfdhdb.grptyp:                        3 ; 0x026: KFDGTP_HIGHkfdhdb.hdrsts:                        3 ; 0x027: KFDHDR_MEMBERkfdhdb.dskname:           SYSTEMDG_0002 ; 0x028: length=13kfdhdb.grpname:                SYSTEMDG ; 0x048: length=8kfdhdb.fgname:            SYSTEMDG_0002 ; 0x068: length=13kfdhdb.capname:                         ; 0x088: length=0kfdhdb.crestmp.hi:             32982958 ; 0x0a8: HOUR=0xe DAYS=0x1d MNTH=0x1 YEAR=0x7ddkfdhdb.crestmp.lo:           3878604800 ; 0x0ac: USEC=0x0 MSEC=0x3b4 SECS=0x32 MINS=0x39kfdhdb.mntstmp.hi:             32983461 ; 0x0b0: HOUR=0x5 DAYS=0xd MNTH=0x2 YEAR=0x7ddkfdhdb.mntstmp.lo:            474934272 ; 0x0b4: USEC=0x0 MSEC=0x3bb SECS=0x4 MINS=0x7kfdhdb.secsize:                     512 ; 0x0b8: 0x0200kfdhdb.blksize:                    4096 ; 0x0ba: 0x1000kfdhdb.ausize:                  1048576 ; 0x0bc: 0x00100000kfdhdb.mfact:                    113792 ; 0x0c0: 0x0001bc80kfdhdb.dsksize:                    3072 ; 0x0c4: 0x00000c00kfdhdb.pmcnt:                         2 ; 0x0c8: 0x00000002kfdhdb.fstlocn:                       1 ; 0x0cc: 0x00000001kfdhdb.altlocn:                       2 ; 0x0d0: 0x00000002kfdhdb.f1b1locn:                      2 ; 0x0d4: 0x00000002kfdhdb.redomirrors[0]:                0 ; 0x0d8: 0x0000kfdhdb.redomirrors[1]:                0 ; 0x0da: 0x0000kfdhdb.redomirrors[2]:                0 ; 0x0dc: 0x0000kfdhdb.redomirrors[3]:                0 ; 0x0de: 0x0000kfdhdb.dbcompat:              168820736 ; 0x0e0: 0x0a100000kfdhdb.grpstmp.hi:             32982958 ; 0x0e4: HOUR=0xe DAYS=0x1d MNTH=0x1 YEAR=0x7ddkfdhdb.grpstmp.lo:           3878197248 ; 0x0e8: USEC=0x0 MSEC=0x226 SECS=0x32 MINS=0x39kfdhdb.vfstart:                       0 ; 0x0ec: 0x00000000kfdhdb.vfend:                         0 ; 0x0f0: 0x00000000kfdhdb.spfile:                       38 ; 0x0f4: 0x00000026kfdhdb.spfflg:                        1 ; 0x0f8: 0x00000001//也可以通过查询X$KFFXP视图找出该FILE NUMBER=1的文件的Allocation Unitsselect disk_kffxp, AU_kffxp, xnum_kffxp  from x$kffxp where group_kffxp = 3 -- Diskgroup 3 (GROUPB)   and number_kffxp = 1 -- File 1 (file directory)   /DISK_KFFXP   AU_KFFXP XNUM_KFFXP---------- ---------- ----------         0          2          0         1          2          0         2          2          0         2         46          1         3         44          1         0         46          1
      上面显示的结果显示 在disk number =0 的ASM Disk 上的allocation units 2属于file number=1的file directory, 同理 在disk number =0 的ASM Disk 上的allocation units 46也属于file number=1的file directory。 在1MB allocation units大小,4k ASM block大小的前提下,第一个allocation unit可以存放255个目录记录(256*4k=1MB)。 由于前255个文件是为ASM元数据保留的,所以第一个allocation unit仅记录ASM元数据文件第一到第六个。剩下的allocation unit(46)则存放接下来的255个ASM文件。  
文件目录结构   Allocation unit=2 的block 1描述了该ASM 1号文件file directory自身。该块的前部分包含了标准的头部信息,并显示该块的类型为KFBTYP_FILEDIR。 在该kfffdb结构之后,该file directory的每一个block包含描述文件物理属性和盘区指针的信息, 以及指向所有间接盘区的指针。 以下是aun=2 block=1的file directory信息:        
[grid@localhost ~]$ kfed read /dev/asm-diski aun=2 blkn=1  > block.log[grid@localhost ~]$ vi block.log kfbh.endian:                          1 ; 0x000: 0x01kfbh.hard:                          130 ; 0x001: 0x82kfbh.type:                            4 ; 0x002: KFBTYP_FILEDIRkfbh.datfmt:                          1 ; 0x003: 0x01kfbh.block.blk:                       1 ; 0x004: blk=1kfbh.block.obj:                       1 ; 0x008: file=1kfbh.check:                  3254018873 ; 0x00c: 0xc1f46339kfbh.fcn.base:                      493 ; 0x010: 0x000001edkfbh.fcn.wrap:                        0 ; 0x014: 0x00000000kfbh.spare1:                          0 ; 0x018: 0x00000000kfbh.spare2:                          0 ; 0x01c: 0x00000000kfffdb.node.incarn:                   1 ; 0x000: A=1 NUMM=0x0kfffdb.node.frlist.number:   4294967295 ; 0x004: 0xffffffffkfffdb.node.frlist.incarn:            0 ; 0x008: A=0 NUMM=0x0kfffdb.hibytes:                       0 ; 0x00c: 0x00000000kfffdb.lobytes:                 2097152 ; 0x010: 0x00200000kfffdb.xtntcnt:                       6 ; 0x014: 0x00000006kfffdb.xtnteof:                       6 ; 0x018: 0x00000006kfffdb.blkSize:                    4096 ; 0x01c: 0x00001000kfffdb.flags:                         1 ; 0x020: O=1 S=0 S=0 D=0 C=0 I=0 R=0 A=0kfffdb.fileType:                     15 ; 0x021: 0x0fkfffdb.dXrs:                         19 ; 0x022: SCHE=0x1 NUMB=0x3kfffdb.iXrs:                         19 ; 0x023: SCHE=0x1 NUMB=0x3kfffdb.dXsiz[0]:             4294967295 ; 0x024: 0xffffffffkfffdb.dXsiz[1]:                      0 ; 0x028: 0x00000000kfffdb.dXsiz[2]:                      0 ; 0x02c: 0x00000000kfffdb.iXsiz[0]:             4294967295 ; 0x030: 0xffffffffkfffdb.iXsiz[1]:                      0 ; 0x034: 0x00000000kfffdb.iXsiz[2]:                      0 ; 0x038: 0x00000000kfffdb.xtntblk:                       6 ; 0x03c: 0x0006kfffdb.break:                        60 ; 0x03e: 0x003ckfffdb.priZn:                         0 ; 0x040: KFDZN_COLDkfffdb.secZn:                         0 ; 0x041: KFDZN_COLDkfffdb.ub2spare:                      0 ; 0x042: 0x0000
    其中字段的含义:    
KFBTYP_FILEDIR // block type = file directory block
kfffdb.node.incarn: File incarnation information
kfffdb.hibytes File size (high bytes)
kfffdb.lobyte 2097152 ; 0x010: 0x00200000 File size (low bytes) 2097152 ==》2MB大小
kfffdb.xtntcnt: 6 ; 0x014: 0x00000006 // 6 extents for this file
kfffdb.xtnteof: 6 ; 0x018: 0x00000006 // 6 extents before eof
kfffdb.blkSize: 4096 ; 0x01c: 0x00001000 // 标准ASM block大小
kfffdb.flags: 1 ; 0x020: O=1 S=0 S=0 D=0 C=0 I=0 R=0 A=0
// Flag definitions
O - File is original, not snapshot
S - File is striped
S - Strict allocation policy
D - File is damaged
C - File creation is committed
I - File has empty indirect block
R - File has known at-risk value
A - The at-risk value itsefl   接下来看一个ASM metadata 文件的实际目录记录,我们就查看aun=2的 blkn=4    
[grid@localhost ~]$ kfed read /dev/asm-diski aun=2 blkn=4|lesskfbh.endian:                          1 ; 0x000: 0x01kfbh.hard:                          130 ; 0x001: 0x82kfbh.type:                            4 ; 0x002: KFBTYP_FILEDIRkfbh.datfmt:                          1 ; 0x003: 0x01kfbh.block.blk:                       4 ; 0x004: blk=4kfbh.block.obj:                       1 ; 0x008: file=1kfbh.check:                  3786097185 ; 0x00c: 0xe1ab4221kfbh.fcn.base:                      206 ; 0x010: 0x000000cekfbh.fcn.wrap:                        0 ; 0x014: 0x00000000kfbh.spare1:                          0 ; 0x018: 0x00000000kfbh.spare2:                          0 ; 0x01c: 0x00000000kfffdb.node.incarn:                   1 ; 0x000: A=1 NUMM=0x0kfffdb.node.frlist.number:   4294967295 ; 0x004: 0xffffffffkfffdb.node.frlist.incarn:            0 ; 0x008: A=0 NUMM=0x0kfffdb.hibytes:                       0 ; 0x00c: 0x00000000kfffdb.lobytes:                 8331264 ; 0x010: 0x007f2000kfffdb.xtntcnt:                      24 ; 0x014: 0x00000018kfffdb.xtnteof:                      24 ; 0x018: 0x00000018kfffdb.blkSize:                    4096 ; 0x01c: 0x00001000kfffdb.flags:                         1 ; 0x020: O=1 S=0 S=0 D=0 C=0 I=0 R=0 A=0kfffdb.fileType:                     15 ; 0x021: 0x0fkfffdb.dXrs:                         19 ; 0x022: SCHE=0x1 NUMB=0x3kfffdb.iXrs:                         19 ; 0x023: SCHE=0x1 NUMB=0x3kfffdb.dXsiz[0]:             4294967295 ; 0x024: 0xffffffffkfffdb.dXsiz[1]:                      0 ; 0x028: 0x00000000kfffdb.dXsiz[2]:                      0 ; 0x02c: 0x00000000kfffdb.iXsiz[0]:             4294967295 ; 0x030: 0xffffffffkfffdb.iXsiz[1]:                      0 ; 0x034: 0x00000000kfffdb.iXsiz[2]:                      0 ; 0x038: 0x00000000kfffdb.xtntblk:                      24 ; 0x03c: 0x0018kfffdb.break:                        60 ; 0x03e: 0x003ckfffdb.priZn:                         0 ; 0x040: KFDZN_COLDkfffdb.secZn:                         0 ; 0x041: KFDZN_COLDkfffdb.ub2spare:                      0 ; 0x042: 0x0000kfffdb.alias[0]:             4294967295 ; 0x044: 0xffffffffkfffdb.alias[1]:             4294967295 ; 0x048: 0xffffffffkfffdb.strpwdth:                      0 ; 0x04c: 0x00kfffdb.strpsz:                        0 ; 0x04d: 0x00kfffdb.usmsz:                         0 ; 0x04e: 0x0000kfffdb.crets.hi:               32982958 ; 0x050: HOUR=0xe DAYS=0x1d MNTH=0x1 YEAR=0x7ddkfffdb.crets.lo:             3878730752 ; 0x054: USEC=0x0 MSEC=0x2f SECS=0x33 MINS=0x39kfffdb.modts.hi:               32982958 ; 0x058: HOUR=0xe DAYS=0x1d MNTH=0x1 YEAR=0x7ddkfffdb.modts.lo:             3878730752 ; 0x05c: USEC=0x0 MSEC=0x2f SECS=0x33 MINS=0x39kfffdb.dasz[0]:                       0 ; 0x060: 0x00kfffdb.dasz[1]:                       0 ; 0x061: 0x00kfffdb.dasz[2]:                       0 ; 0x062: 0x00kfffdb.dasz[3]:                       0 ; 0x063: 0x00kfffdb.permissn:                      0 ; 0x064: 0x00kfffdb.ub1spar1:                      0 ; 0x065: 0x00kfffdb.ub2spar2:                      0 ; 0x066: 0x0000kfffdb.user.entnum:                   0 ; 0x068: 0x0000kfffdb.user.entinc:                   0 ; 0x06a: 0x0000kfffdb.group.entnum:                  0 ; 0x06c: 0x0000kfffdb.group.entinc:                  0 ; 0x06e: 0x0000kfffdb.spare[0]:                      0 ; 0x070: 0x00000000kfffdb.spare[1]:                      0 ; 0x074: 0x00000000kfffdb.spare[2]:                      0 ; 0x078: 0x00000000kfffdb.spare[3]:                      0 ; 0x07c: 0x00000000kfffdb.spare[4]:                      0 ; 0x080: 0x00000000kfffdb.spare[5]:                      0 ; 0x084: 0x00000000kfffdb.spare[6]:                      0 ; 0x088: 0x00000000kfffdb.spare[7]:                      0 ; 0x08c: 0x00000000kfffdb.spare[8]:                      0 ; 0x090: 0x00000000kfffdb.spare[9]:                      0 ; 0x094: 0x00000000kfffdb.spare[10]:                     0 ; 0x098: 0x00000000kfffdb.spare[11]:                     0 ; 0x09c: 0x00000000kfffdb.usm:                             ; 0x0a0: length=0kfffde[0].xptr.au:                   36 ; 0x4a0: 0x00000024kfffde[0].xptr.disk:                  1 ; 0x4a4: 0x0001kfffde[0].xptr.flags:                 0 ; 0x4a6: L=0 E=0 D=0 S=0kfffde[0].xptr.chk:                  15 ; 0x4a7: 0x0fkfffde[1].xptr.au:                   45 ; 0x4a8: 0x0000002dkfffde[1].xptr.disk:                  0 ; 0x4ac: 0x0000kfffde[1].xptr.flags:                 0 ; 0x4ae: L=0 E=0 D=0 S=0kfffde[1].xptr.chk:                   7 ; 0x4af: 0x07kfffde[2].xptr.au:                   34 ; 0x4b0: 0x00000022kfffde[2].xptr.disk:                  3 ; 0x4b4: 0x0003kfffde[2].xptr.flags:                 0 ; 0x4b6: L=0 E=0 D=0 S=0kfffde[2].xptr.chk:                  11 ; 0x4b7: 0x0bkfffde[3].xptr.au:                   36 ; 0x4b8: 0x00000024kfffde[3].xptr.disk:                  0 ; 0x4bc: 0x0000kfffde[3].xptr.flags:                 0 ; 0x4be: L=0 E=0 D=0 S=0kfffde[3].xptr.chk:                  14 ; 0x4bf: 0x0ekfffde[4].xptr.au:                   43 ; 0x4c0: 0x0000002bkfffde[4].xptr.disk:                  3 ; 0x4c4: 0x0003kfffde[4].xptr.flags:                 0 ; 0x4c6: L=0 E=0 D=0 S=0kfffde[4].xptr.chk:                   2 ; 0x4c7: 0x02kfffde[5].xptr.au:                   37 ; 0x4c8: 0x00000025kfffde[5].xptr.disk:                  1 ; 0x4cc: 0x0001kfffde[5].xptr.flags:                 0 ; 0x4ce: L=0 E=0 D=0 S=0kfffde[5].xptr.chk:                  14 ; 0x4cf: 0x0ekfffde[6].xptr.au:                   42 ; 0x4d0: 0x0000002akfffde[6].xptr.disk:                  2 ; 0x4d4: 0x0002kfffde[6].xptr.flags:                 0 ; 0x4d6: L=0 E=0 D=0 S=0kfffde[6].xptr.chk:                   2 ; 0x4d7: 0x02kfffde[7].xptr.au:                   40 ; 0x4d8: 0x00000028kfffde[7].xptr.disk:                  1 ; 0x4dc: 0x0001kfffde[7].xptr.flags:                 0 ; 0x4de: L=0 E=0 D=0 S=0kfffde[7].xptr.chk:                   3 ; 0x4df: 0x03kfffde[8].xptr.au:                   39 ; 0x4e0: 0x00000027kfffde[8].xptr.disk:                  3 ; 0x4e4: 0x0003kfffde[8].xptr.flags:                 0 ; 0x4e6: L=0 E=0 D=0 S=0
    其中字段的含义:
kfffdb.lobytes: 8331264 ; 0x010: 0x007f2000 ==>说明文件大小为8331264bytes
kfffdb.xtntcnt: 24 ; 0x014: 0x00000018
kfffdb.xtnteof: 24 ; 0x018: 0x00000018 ==> 说明该文件目前共24个extents
kfffdb.blkSize: 4096 ; 0x01c: 0x00001000 ==> 4k的ASM Block size
kfffdb.fileType: 15 ; 0x021: 0x0f filetype=15 说明是ASM Metadata File
kfffde[0].xptr.au: 36 ; 0x4a0: 0x00000024 file number=4 的第一extent指向36号 AU
kfffde[0].xptr.disk: 1 ; 0x4a4: 0x0001 Disk number 1
kfffde[1].xptr.au: 45 ; 0x4a8: 0x0000002d file number=4 的第二extent指向45号AU
kfffde[2].xptr.au: 4294967295 ; 0x4b0: 0xfffffff 若 kfffde[N].xptr.au=4294967295 说明该FILE没有更多extent了   AU的指针情况, 可以这样查看:    
[grid@localhost ~]$ kfed read /dev/asm-diski aun=2 blkn=4| egrep "xptr.au|xptr.disk"|lesskfffde[0].xptr.au:                   36 ; 0x4a0: 0x00000024kfffde[0].xptr.disk:                  1 ; 0x4a4: 0x0001kfffde[1].xptr.au:                   45 ; 0x4a8: 0x0000002dkfffde[1].xptr.disk:                  0 ; 0x4ac: 0x0000kfffde[2].xptr.au:                   34 ; 0x4b0: 0x00000022kfffde[2].xptr.disk:                  3 ; 0x4b4: 0x0003kfffde[3].xptr.au:                   36 ; 0x4b8: 0x00000024kfffde[3].xptr.disk:                  0 ; 0x4bc: 0x0000kfffde[4].xptr.au:                   43 ; 0x4c0: 0x0000002bkfffde[4].xptr.disk:                  3 ; 0x4c4: 0x0003kfffde[5].xptr.au:                   37 ; 0x4c8: 0x00000025kfffde[5].xptr.disk:                  1 ; 0x4cc: 0x0001kfffde[6].xptr.au:                   42 ; 0x4d0: 0x0000002akfffde[6].xptr.disk:                  2 ; 0x4d4: 0x0002kfffde[7].xptr.au:                   40 ; 0x4d8: 0x00000028kfffde[7].xptr.disk:                  1 ; 0x4dc: 0x0001kfffde[8].xptr.au:                   39 ; 0x4e0: 0x00000027kfffde[8].xptr.disk:                  3 ; 0x4e4: 0x0003kfffde[9].xptr.au:                   40 ; 0x4e8: 0x00000028kfffde[9].xptr.disk:                  3 ; 0x4ec: 0x0003kfffde[10].xptr.au:                  41 ; 0x4f0: 0x00000029kfffde[10].xptr.disk:                 1 ; 0x4f4: 0x0001kfffde[11].xptr.au:                  40 ; 0x4f8: 0x00000028kfffde[11].xptr.disk:                 0 ; 0x4fc: 0x0000kfffde[12].xptr.au:                  42 ; 0x500: 0x0000002akfffde[12].xptr.disk:                 1 ; 0x504: 0x0001kfffde[13].xptr.au:                  41 ; 0x508: 0x00000029kfffde[13].xptr.disk:                 0 ; 0x50c: 0x0000kfffde[14].xptr.au:                  43 ; 0x510: 0x0000002bkfffde[14].xptr.disk:                 2 ; 0x514: 0x0002kfffde[15].xptr.au:                  42 ; 0x518: 0x0000002akfffde[15].xptr.disk:                 0 ; 0x51c: 0x0000kfffde[16].xptr.au:                  41 ; 0x520: 0x00000029kfffde[16].xptr.disk:                 3 ; 0x524: 0x0003kfffde[17].xptr.au:                  43 ; 0x528: 0x0000002bkfffde[17].xptr.disk:                 1 ; 0x52c: 0x0001kfffde[18].xptr.au:                  44 ; 0x530: 0x0000002ckfffde[18].xptr.disk:                 2 ; 0x534: 0x0002kfffde[19].xptr.au:                  43 ; 0x538: 0x0000002bkfffde[19].xptr.disk:                 0 ; 0x53c: 0x0000kfffde[20].xptr.au:                  44 ; 0x540: 0x0000002ckfffde[20].xptr.disk:                 1 ; 0x544: 0x0001kfffde[20].xptr.disk:                 1 ; 0x544: 0x0001kfffde[21].xptr.au:                  42 ; 0x548: 0x0000002akfffde[21].xptr.disk:                 3 ; 0x54c: 0x0003kfffde[22].xptr.au:                  45 ; 0x550: 0x0000002dkfffde[22].xptr.disk:                 2 ; 0x554: 0x0002kfffde[23].xptr.au:                  45 ; 0x558: 0x0000002dkfffde[23].xptr.disk:                 1 ; 0x55c: 0x0001kfffde[24].xptr.au:          4294967295 ; 0x560: 0xffffffffkfffde[24].xptr.disk:             65535 ; 0x564: 0xffffkfffde[25].xptr.au:          4294967295 ; 0x568: 0xffffffffkfffde[25].xptr.disk:             65535 ; 0x56c: 0xffffkfffde[26].xptr.au:          4294967295 ; 0x570: 0xffffffffkfffde[26].xptr.disk:             65535 ; 0x574: 0xffffkfffde[27].xptr.au:          4294967295 ; 0x578: 0xffffffff可以这样验证一下select disk_kffxp, AU_kffxp, xnum_kffxpfrom x$kffxpwhere group_kffxp = 3 -- Diskgroup 3 (GROUPB)and number_kffxp =4/DISK_KFFXP   AU_KFFXP XNUM_KFFXP---------- ---------- ----------         1         36          0         0         45          0         3         34          0         0         36          1         3         43          1         1         37          1         2         42          2         1         40          2         3         39          2         3         40          3         1         41          3         0         40          3         1         42          4         0         41          4         2         43          4         0         42          5         3         41          5         1         43          5         2         44          6         0         43          6         1         44          6         3         42          7         2         45          7         1         45          7
   
找出数据文件对应的目录记录directory entry:
SQL> select GROUP_NUMBER, FILE_NUMBER, NAME from v$asm_alias  2  group by GROUP_NUMBER, FILE_NUMBER, NAME;GROUP_NUMBER FILE_NUMBER NAME------------ ----------- ----------------------------------------------------------------------           3         253 REGISTRY.253.805993079           3         256 users01.dbf           3         256 users01.dbf.256.806828719           3         257 system01.dbf           3         257 system01.dbf.257.807460773           3         258 sysaux01.dbf           3         258 sysaux01.dbf.258.807460839           3         259 example01.dbf           3         259 example01.dbf.259.807460921           3  4294967295 ASM           3  4294967295 DATAFILE           3  4294967295 ASMPARAMETERFILE可以看到 system01.dbf 和 system01.dbf.257.807460773 是同一个file的2个alias其文件号为 257, 257-256=1  则其file directory的记录位于AU=46的 第一个block[grid@localhost ~]$ kfed read /dev/asm-diski  aun=46 blkn=1|lesskfbh.endian:                          1 ; 0x000: 0x01kfbh.hard:                          130 ; 0x001: 0x82kfbh.type:                            4 ; 0x002: KFBTYP_FILEDIRkfbh.datfmt:                          1 ; 0x003: 0x01kfbh.block.blk:                     257 ; 0x004: blk=257kfbh.block.obj:                       1 ; 0x008: file=1kfbh.check:                  3782876348 ; 0x00c: 0xe17a1cbckfbh.fcn.base:                     2055 ; 0x010: 0x00000807kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000kfbh.spare1:                          0 ; 0x018: 0x00000000kfbh.spare2:                          0 ; 0x01c: 0x00000000kfffdb.node.incarn:           807460773 ; 0x000: A=1 NUMM=0x18106fd2kfffdb.node.frlist.number:   4294967295 ; 0x004: 0xffffffffkfffdb.node.frlist.incarn:            0 ; 0x008: A=0 NUMM=0x0kfffdb.hibytes:                       0 ; 0x00c: 0x00000000kfffdb.lobytes:               828383232 ; 0x010: 0x31602000kfffdb.xtntcnt:                    2373 ; 0x014: 0x00000945kfffdb.xtnteof:                    2373 ; 0x018: 0x00000945kfffdb.blkSize:                    8192 ; 0x01c: 0x00002000kfffdb.flags:                        17 ; 0x020: O=1 S=0 S=0 D=0 C=1 I=0 R=0 A=0kfffdb.fileType:                      2 ; 0x021: 0x02kfffdb.dXrs:                         19 ; 0x022: SCHE=0x1 NUMB=0x3kfffdb.iXrs:                         19 ; 0x023: SCHE=0x1 NUMB=0x3kfffdb.dXsiz[0]:             4294967295 ; 0x024: 0xffffffffkfffdb.dXsiz[1]:                      0 ; 0x028: 0x00000000kfffdb.dXsiz[2]:                      0 ; 0x02c: 0x00000000kfffdb.iXsiz[0]:             4294967295 ; 0x030: 0xffffffffkfffdb.iXsiz[1]:                      0 ; 0x034: 0x00000000kfffdb.iXsiz[2]:                      0 ; 0x038: 0x00000000kfffdb.xtntblk:                      63 ; 0x03c: 0x003fkfffdb.break:                        60 ; 0x03e: 0x003ckfffdb.priZn:                         0 ; 0x040: KFDZN_COLDkfffdb.secZn:                         0 ; 0x041: KFDZN_COLDkfffdb.ub2spare:                      0 ; 0x042: 0x0000kfffdb.alias[0]:                    160 ; 0x044: 0x000000a0kfffdb.alias[1]:                      2 ; 0x048: 0x00000002kfffdb.strpwdth:                      1 ; 0x04c: 0x01kfffdb.strpsz:                       20 ; 0x04d: 0x14kfffdb.usmsz:                         0 ; 0x04e: 0x0000kfffdb.crets.hi:               32983534 ; 0x050: HOUR=0xe DAYS=0xf MNTH=0x2 YEAR=0x7ddkfffdb.crets.lo:             2651955200 ; 0x054: USEC=0x0 MSEC=0x68 SECS=0x21 MINS=0x27kfffdb.modts.hi:               32983534 ; 0x058: HOUR=0xe DAYS=0xf MNTH=0x2 YEAR=0x7ddkfffdb.modts.lo:                      0 ; 0x05c: USEC=0x0 MSEC=0x0 SECS=0x0 MINS=0x0kfffdb.dasz[0]:                       0 ; 0x060: 0x00kfffdb.dasz[1]:                       0 ; 0x061: 0x00kfffdb.dasz[2]:                       0 ; 0x062: 0x00kfffdb.dasz[3]:                       0 ; 0x063: 0x00kfffdb.permissn:                      0 ; 0x064: 0x00kfffdb.ub1spar1:                      0 ; 0x065: 0x00kfffdb.ub2spar2:                      0 ; 0x066: 0x0000kfffdb.user.entnum:                   0 ; 0x068: 0x0000kfffdb.user.entinc:                   0 ; 0x06a: 0x0000kfffdb.group.entnum:                  0 ; 0x06c: 0x0000kfffdb.group.entinc:                  0 ; 0x06e: 0x0000kfffdb.spare[0]:                      0 ; 0x070: 0x00000000kfffdb.spare[1]:                      0 ; 0x074: 0x00000000kfffdb.spare[2]:                      0 ; 0x078: 0x00000000kfffdb.spare[3]:                      0 ; 0x07c: 0x00000000kfffdb.spare[4]:                      0 ; 0x080: 0x00000000kfffdb.spare[5]:                      0 ; 0x084: 0x00000000kfffdb.spare[6]:                      0 ; 0x088: 0x00000000kfffdb.spare[7]:                      0 ; 0x08c: 0x00000000kfffdb.spare[8]:                      0 ; 0x090: 0x00000000kfffdb.spare[9]:                      0 ; 0x094: 0x00000000kfffdb.spare[10]:                     0 ; 0x098: 0x00000000kfffdb.spare[11]:                     0 ; 0x09c: 0x00000000kfffdb.usm:                             ; 0x0a0: length=0kfffde[0].xptr.au:                  365 ; 0x4a0: 0x0000016dkfffde[0].xptr.disk:                  3 ; 0x4a4: 0x0003kfffde[0].xptr.flags:                 0 ; 0x4a6: L=0 E=0 D=0 S=0kfffde[0].xptr.chk:                  69 ; 0x4a7: 0x45kfffde[1].xptr.au:                  368 ; 0x4a8: 0x00000170kfffde[1].xptr.disk:                  1 ; 0x4ac: 0x0001kfffde[1].xptr.flags:                 0 ; 0x4ae: L=0 E=0 D=0 S=0kfffde[1].xptr.chk:                  90 ; 0x4af: 0x5akfffde[2].xptr.au:                  368 ; 0x4b0: 0x00000170kfffde[2].xptr.disk:                  2 ; 0x4b4: 0x0002kfffde[2].xptr.flags:                 0 ; 0x4b6: L=0 E=0 D=0 S=0kfffde[2].xptr.chk:                  89 ; 0x4b7: 0x59kfffde[3].xptr.au:                  368 ; 0x4b8: 0x00000170kfffde[3].xptr.disk:                  0 ; 0x4bc: 0x0000kfffde[3].xptr.flags:                 0 ; 0x4be: L=0 E=0 D=0 S=0kfffde[3].xptr.chk:                  91 ; 0x4bf: 0x5bkfffde[4].xptr.au:                  366 ; 0x4c0: 0x0000016ekfffde[4].xptr.disk:                  3 ; 0x4c4: 0x0003kfffde[4].xptr.flags:                 0 ; 0x4c6: L=0 E=0 D=0 S=0kfffde[4].xptr.chk:                  70 ; 0x4c7: 0x46kfffde[5].xptr.au:                  369 ; 0x4c8: 0x00000171kfffde[5].xptr.disk:                  1 ; 0x4cc: 0x0001kfffde[5].xptr.flags:                 0 ; 0x4ce: L=0 E=0 D=0 S=0kfffde[0].xptr.au:                  365 ; 0x4a0: 0x0000016dkfffde[0].xptr.disk:                  3 ; 0x4a4: 0x0003kfffde[0].xptr.flags:                 0 ; 0x4a6: L=0 E=0 D=0 S=0kfffde[0].xptr.chk:                  69 ; 0x4a7: 0x45kfffde[1].xptr.au:                  368 ; 0x4a8: 0x00000170kfffde[1].xptr.disk:                  1 ; 0x4ac: 0x0001则该system01.dbf.257.807460773的前2个extent指向 disk number=3 的aun=365 和 disknum=1 的aun=368用X$KFFXP来验证一下select disk_kffxp, AU_kffxp, xnum_kffxpfrom x$kffxpwhere group_kffxp=3    -- group number and number_kffxp=257   -- file numberDISK_KFFXP   AU_KFFXP XNUM_KFFXP---------- ---------- ----------         3        365          0          1        368          0 .......................
       
Directly addressed extents   来看一个大于500MB 的ASM上的数据文件的情况,sysaux01.dbf.258.807460839的 file number=258 大小为780M    
SQL> select bytes/1024/1024 ,file_number from v$asm_file;BYTES/1024/1024 FILE_NUMBER--------------- -----------     .001464844         253     426.257813         256     790.007813         257     780.007813         258     341.257813         259select disk_kffxp, AU_kffxp, xnum_kffxpfrom x$kffxpwhere group_kffxp=3and number_kffxp=258;DISK_KFFXP   AU_KFFXP XNUM_KFFXP---------- ---------- ----------         0        963          0          1        962          0          2        962          0          2        963          1         0        964          1         3        958          1         1        963          2         3        959          2         0        965          2............................................................................         0       1549        780         1       1548        780         2       1547        780         0        978 2147483648         3        973 2147483648         1        977 21474836482346 rows selected.
    共有2346个extent分配给该数据文件,来看一下该数据文件的directory entry    
[grid@localhost ~]$ kfed read /dev/asm-diski aun=46 blkn=2|lesskfbh.endian:                          1 ; 0x000: 0x01kfbh.hard:                          130 ; 0x001: 0x82kfbh.type:                            4 ; 0x002: KFBTYP_FILEDIRkfbh.datfmt:                          1 ; 0x003: 0x01kfbh.block.blk:                     258 ; 0x004: blk=258kfbh.block.obj:                       1 ; 0x008: file=1kfbh.check:                  1890402582 ; 0x00c: 0x70ad4116kfbh.fcn.base:                     2882 ; 0x010: 0x00000b42kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000kfbh.spare1:                          0 ; 0x018: 0x00000000kfbh.spare2:                          0 ; 0x01c: 0x00000000kfffdb.node.incarn:           807460839 ; 0x000: A=1 NUMM=0x18106ff3kfffdb.node.frlist.number:   4294967295 ; 0x004: 0xffffffffkfffdb.node.frlist.incarn:            0 ; 0x008: A=0 NUMM=0x0kfffdb.hibytes:                       0 ; 0x00c: 0x00000000kfffdb.lobytes:               817897472 ; 0x010: 0x30c02000kfffdb.xtntcnt:                    2343 ; 0x014: 0x00000927kfffdb.xtnteof:                    2343 ; 0x018: 0x00000927kfffdb.blkSize:                    8192 ; 0x01c: 0x00002000kfffdb.flags:                        17 ; 0x020: O=1 S=0 S=0 D=0 C=1 I=0 R=0 A=0kfffdb.fileType:                      2 ; 0x021: 0x02kfffdb.dXrs:                         19 ; 0x022: SCHE=0x1 NUMB=0x3kfffdb.iXrs:                         19 ; 0x023: SCHE=0x1 NUMB=0x3kfffdb.dXsiz[0]:             4294967295 ; 0x024: 0xffffffffkfffdb.dXsiz[1]:                      0 ; 0x028: 0x00000000kfffdb.dXsiz[2]:                      0 ; 0x02c: 0x00000000kfffdb.iXsiz[0]:             4294967295 ; 0x030: 0xffffffffkfffdb.iXsiz[1]:                      0 ; 0x034: 0x00000000kfffdb.iXsiz[2]:                      0 ; 0x038: 0x00000000kfffdb.xtntblk:                      63 ; 0x03c: 0x003fkfffdb.break:                        60 ; 0x03e: 0x003ckfffdb.priZn:                         0 ; 0x040: KFDZN_COLDkfffdb.secZn:                         0 ; 0x041: KFDZN_COLDkfffdb.ub2spare:                      0 ; 0x042: 0x0000kfffdb.alias[0]:                    161 ; 0x044: 0x000000a1kfffdb.alias[1]:                      3 ; 0x048: 0x00000003kfffdb.strpwdth:                      1 ; 0x04c: 0x01kfffdb.strpsz:                       20 ; 0x04d: 0x14kfffdb.usmsz:                         0 ; 0x04e: 0x0000kfffdb.crets.hi:               32983534 ; 0x050: HOUR=0xe DAYS=0xf MNTH=0x2 YEAR=0x7ddkfffdb.crets.lo:             2724658176 ; 0x054: USEC=0x0 MSEC=0x1bf SECS=0x26 MINS=0x28kfffdb.modts.hi:               32983534 ; 0x058: HOUR=0xe DAYS=0xf MNTH=0x2 YEAR=0x7ddkfffdb.modts.lo:                      0 ; 0x05c: USEC=0x0 MSEC=0x0 SECS=0x0 MINS=0x0kfffdb.dasz[0]:                       0 ; 0x060: 0x00kfffdb.dasz[1]:                       0 ; 0x061: 0x00kfffdb.dasz[2]:                       0 ; 0x062: 0x00kfffdb.dasz[3]:                       0 ; 0x063: 0x00kfffdb.permissn:                      0 ; 0x064: 0x00kfffdb.ub1spar1:                      0 ; 0x065: 0x00kfffdb.ub2spar2:                      0 ; 0x066: 0x0000kfffdb.user.entnum:                   0 ; 0x068: 0x0000kfffdb.user.entinc:                   0 ; 0x06a: 0x0000kfffdb.group.entnum:                  0 ; 0x06c: 0x0000kfffdb.group.entinc:                  0 ; 0x06e: 0x0000kfffdb.spare[0]:                      0 ; 0x070: 0x00000000kfffdb.spare[1]:                      0 ; 0x074: 0x00000000kfffdb.spare[2]:                      0 ; 0x078: 0x00000000kfffdb.spare[3]:                      0 ; 0x07c: 0x00000000kfffdb.spare[4]:                      0 ; 0x080: 0x00000000kfffdb.spare[5]:                      0 ; 0x084: 0x00000000kfffdb.spare[6]:                      0 ; 0x088: 0x00000000kfffdb.spare[7]:                      0 ; 0x08c: 0x00000000kfffdb.spare[8]:                      0 ; 0x090: 0x00000000kfffdb.spare[9]:                      0 ; 0x094: 0x00000000kfffdb.spare[10]:                     0 ; 0x098: 0x00000000kfffdb.spare[11]:                     0 ; 0x09c: 0x00000000kfffdb.usm:                             ; 0x0a0: length=0kfffde[0].xptr.au:                  963 ; 0x4a0: 0x000003c3kfffdb.xtntblk:                      63 ; 0x03c: 0x003f  //63 extents described in thiskfffdb.break:                        60 ; 0x03e: 0x003c  // file directory blockkfffdb.alias[0]  ALIAS_INDEX
      kfffdb.xtntblk=63 说明共有63个extent pointer指针,从kfffde[0].xptr.au到kfffde[59].xptr.au是60个直接盘区指针 direct extent pointer。    
Indirectly addressed extents (kffixe structure)   kfffde[60].xptr.au指向剩下的文件目录信息, 这样查看。 kffixe 即是KFBTYP_INDIRECT 间接地址盘区Indirectly addressed extents块,与kfffde结构类似    
[grid@localhost ~]$ kfed read /dev/asm-diski  aun=46 blkn=2|egrep "xptr.au|xptr.disk"kfffde[60].xptr.au:                 978 ; 0x680: 0x000003d2kfffde[60].xptr.disk:                 0 ; 0x684: 0x0000kfffde[61].xptr.au:                 973 ; 0x688: 0x000003cdkfffde[61].xptr.disk:                 3 ; 0x68c: 0x0003kfffde[62].xptr.au:                 977 ; 0x690: 0x000003d1kfffde[62].xptr.disk:                 1 ; 0x694: 0x0001  1* select path,disk_number from v$asm_disk where group_number=3SQL> /PATH                 DISK_NUMBER-------------------- -----------/dev/asm-diskj                 3/dev/asm-diski                 2/dev/asm-diskh                 1/dev/asm-diskg                 0[grid@localhost ~]$ kfed read /dev/asm-diskg aun=978 blkn=0|lesskfbh.endian:                          1 ; 0x000: 0x01kfbh.hard:                          130 ; 0x001: 0x82kfbh.type:                           12 ; 0x002: KFBTYP_INDIRECTkfbh.datfmt:                          1 ; 0x003: 0x01kfbh.block.blk:              2147483648 ; 0x004: blk=0 (indirect)kfbh.block.obj:                     258 ; 0x008: file=258kfbh.check:                  2166327859 ; 0x00c: 0x811f8a33kfbh.fcn.base:                     2244 ; 0x010: 0x000008c4kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000kfbh.spare1:                          0 ; 0x018: 0x00000000kfbh.spare2:                          0 ; 0x01c: 0x00000000kffixb.dxsn:                         20 ; 0x000: 0x00000014kffixb.xtntblk:                     480 ; 0x004: 0x01e0kffixb.dXrs:                         19 ; 0x006: SCHE=0x1 NUMB=0x3kffixb.ub1spare:                      0 ; 0x007: 0x00kffixb.ub4spare:                      0 ; 0x008: 0x00000000kffixe[0].xptr.au:                  979 ; 0x00c: 0x000003d3kffixe[0].xptr.disk:                  0 ; 0x010: 0x0000kffixe[0].xptr.flags:                 0 ; 0x012: L=0 E=0 D=0 S=0kffixe[0].xptr.chk:                 250 ; 0x013: 0xfakffixe[1].xptr.au:                  977 ; 0x014: 0x000003d1kffixe[1].xptr.disk:                  2 ; 0x018: 0x0002kffixe[1].xptr.flags:                 0 ; 0x01a: L=0 E=0 D=0 S=0kffixe[1].xptr.chk:                 250 ; 0x01b: 0xfakffixe[2].xptr.au:                  974 ; 0x01c: 0x000003cekffixe[2].xptr.disk:                  3 ; 0x020: 0x0003[grid@localhost ~]$ kfed read /dev/asm-diskj aun=973 blkn=0|lesskfbh.endian:                          1 ; 0x000: 0x01kfbh.hard:                          130 ; 0x001: 0x82kfbh.type:                           12 ; 0x002: KFBTYP_INDIRECTkfbh.datfmt:                          1 ; 0x003: 0x01kfbh.block.blk:              2147483648 ; 0x004: blk=0 (indirect)kfbh.block.obj:                     258 ; 0x008: file=258kfbh.check:                  2166327859 ; 0x00c: 0x811f8a33kfbh.fcn.base:                     2244 ; 0x010: 0x000008c4kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000kfbh.spare1:                          0 ; 0x018: 0x00000000kfbh.spare2:                          0 ; 0x01c: 0x00000000kffixb.dxsn:                         20 ; 0x000: 0x00000014kffixb.xtntblk:                     480 ; 0x004: 0x01e0kffixb.dXrs:                         19 ; 0x006: SCHE=0x1 NUMB=0x3kffixb.ub1spare:                      0 ; 0x007: 0x00kffixb.ub4spare:                      0 ; 0x008: 0x00000000kffixe[0].xptr.au:                  979 ; 0x00c: 0x000003d3kffixe[0].xptr.disk:                  0 ; 0x010: 0x0000kffixe[0].xptr.flags:                 0 ; 0x012: L=0 E=0 D=0 S=0kffixe[0].xptr.chk:                 250 ; 0x013: 0xfakffixe[1].xptr.au:                  977 ; 0x014: 0x000003d1kffixe[1].xptr.disk:                  2 ; 0x018: 0x0002kffixe[1].xptr.flags:                 0 ; 0x01a: L=0 E=0 D=0 S=0kffixe[1].xptr.chk:                 250 ; 0x01b: 0xfakffixe[2].xptr.au:                  974 ; 0x01c: 0x000003cekffixe[2].xptr.disk:                  3 ; 0x020: 0x0003kffixe[2].xptr.flags:                 0 ; 0x022: L=0 E=0 D=0 S=0kffixe[2].xptr.chk:                 228 ; 0x023: 0xe4kffixe[3].xptr.au:                  978 ; 0x024: 0x000003d2kffixe[3].xptr.disk:                  2 ; 0x028: 0x0002kffixe[3].xptr.flags:                 0 ; 0x02a: L=0 E=0 D=0 S=0kffixe[3].xptr.chk:                 249 ; 0x02b: 0xf9kffixe[4].xptr.au:                  975 ; 0x02c: 0x000003cfkffixe[4].xptr.disk:                  3 ; 0x030: 0x0003kfbh.endian:                          1 ; 0x000: 0x01kfbh.hard:                          130 ; 0x001: 0x82kfbh.type:                           12 ; 0x002: KFBTYP_INDIRECTkfbh.datfmt:                          1 ; 0x003: 0x01kfbh.block.blk:              2147483648 ; 0x004: blk=0 (indirect)kfbh.block.obj:                     258 ; 0x008: file=258kfbh.check:                  2166327859 ; 0x00c: 0x811f8a33kfbh.fcn.base:                     2244 ; 0x010: 0x000008c4kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000kfbh.spare1:                          0 ; 0x018: 0x00000000kfbh.spare2:                          0 ; 0x01c: 0x00000000kffixb.dxsn:                         20 ; 0x000: 0x00000014kffixb.xtntblk:                     480 ; 0x004: 0x01e0kffixb.dXrs:                         19 ; 0x006: SCHE=0x1 NUMB=0x3kffixb.ub1spare:                      0 ; 0x007: 0x00kffixb.ub4spare:                      0 ; 0x008: 0x00000000kffixe[0].xptr.au:                  979 ; 0x00c: 0x000003d3kffixe[0].xptr.disk:                  0 ; 0x010: 0x0000kffixe[0].xptr.flags:                 0 ; 0x012: L=0 E=0 D=0 S=0kffixe[0].xptr.chk:                 250 ; 0x013: 0xfakffixe[1].xptr.au:                  977 ; 0x014: 0x000003d1kffixe[1].xptr.disk:                  2 ; 0x018: 0x0002kffixe[1].xptr.flags:                 0 ; 0x01a: L=0 E=0 D=0 S=0kffixe[1].xptr.chk:                 250 ; 0x01b: 0xfakffixe[2].xptr.au:                  974 ; 0x01c: 0x000003cekffixe[2].xptr.disk:                  3 ; 0x020: 0x0003kffixe[2].xptr.flags:                 0 ; 0x022: L=0 E=0 D=0 S=0kffixe[2].xptr.chk:                 228 ; 0x023: 0xe4kffixe[3].xptr.au:                  978 ; 0x024: 0x000003d2kffixe[3].xptr.disk:                  2 ; 0x028: 0x0002kffixe[3].xptr.flags:                 0 ; 0x02a: L=0 E=0 D=0 S=0kffixe[3].xptr.chk:                 249 ; 0x02b: 0xf9kffixe[4].xptr.au:                  975 ; 0x02c: 0x000003cfkffixe[4].xptr.disk:                  3 ; 0x030: 0x0003
   
知识总结  
  • asm disk的前50个AU(50MB)是为asm metadata保留的
  • ASM 的前255个file number是为metadata file保留的,文件号从1开始, file numner=1的1号文件为ASM的file directory
  • 普通的ASM File的file number从256开始
  • ASM disk的第二个AU即是file number=1的file directory (非必然),在1MB AU和4096 bytes block的情况下可以存放255个file directory information,其block type为KFBTYP_FILEDIR
  • 普通ASM FILE的directory entry的位置,可以这样计算 File number=1的 第 (file number- 256)/256 +2  个extent,blkn=mod(file number-256),256) ,例如文件号 258  =》 第二个extent的blkn=2。
  • KFBTYP_FILEDIR中从kfffde[0].xptr.au到kfffde[59].xptr.au是直接盘区指针 directly extent pointers, kfffde[60].xptr.au以上是KFBTYP_INDIRECT(kffixe)间接盘区指针Indirectly extents pointers。
   

转载于:https://www.cnblogs.com/macleanoracle/archive/2013/03/19/2968374.html

你可能感兴趣的文章
前端性能优化集【持续更新】
查看>>
第二章:webdriver 控制浏览器窗口大小
查看>>
四则运算2初步构思
查看>>
Break the Chocolate(规律)
查看>>
C#jbox小节
查看>>
结构体指针释放的问题
查看>>
C#枚举Enum[轉]
查看>>
第三百五十七天 how can I 坚持
查看>>
【动态规划】流水作业调度问题与Johnson法则
查看>>
startActivityForResult不起作用
查看>>
Python&Selenium&Unittest&BeautifuReport 自动化测试并生成HTML自动化测试报告
查看>>
活现被翻转生命
查看>>
POJ 1228
查看>>
SwaggerUI+SpringMVC——构建RestFul API的可视化界面
查看>>
springmvc怎么在启动时自己执行一个线程
查看>>
流操作的规律
查看>>
Python基础学习15--异常的分类与处理
查看>>
javascript运算符的优先级
查看>>
React + Redux 入门(一):抛开 React 学 Redux
查看>>
13位时间戳和时间格式化转换,工具类
查看>>