荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Lg (创造人生的传奇), 信区: Linux
标  题: SCO UNIX文件卷结构分析及误删文件的恢复(1)[Fwd]
发信站: BBS 荔园晨风站 (Sun Jan 24 19:27:32 1999), 站内信件

【 以下文字转载自 Lg 的信箱 】
【 原文由 liugang.bbs@melon.gznet.edu.cn 所发表 】
发信人: yeal (?????????), 信区: Unix
标  题: SCO UNIX文件卷结构分析及误删文件的恢复(1)[Fwd]
发信站: 华南网木棉站 (Sun Jan 24 12:13:48 1999), 转信

摘要  该文以SCO UNIX 3.2.4.1版本为例, 分析其文件卷结构和磁盘块管理方式, 并在此基
础上讲述了误删文件恢复的方法。
    关键词  文件卷  UNIX  磁盘块    我们知道, UNIX操作系统是以文件卷作为其文件系
统的存储格式的。对于UNIX
用户尤其是系统管理员而言, 要想更好地掌握UNIX操作系统, 熟悉文件卷的结构是
很有必要的。由于SCO UNIX在全球的微机UNIX操作系统市场中所占份额最大, 在我
国更是处于垄断地位, 而它的文件卷结构和磁盘块管理方式都和其它UNIX SYSTEMV
不完全一样, 介绍这方面信息的资料也很少。本文就以SCO UNIX 3.2.4.1版本为例
, 彻底分析它的文件卷结构和磁盘块管理方式, 并在此基础上, 讲述一个应用--恢复误删的
文件。一、文件卷的结构
    文件卷是由大小相同的磁盘块序列组成的。在文件卷偏移量512 字节处, 有一个长度为
512字节的超级块, 其后是若干i节点块、位图索引块、位图块、数据块等
。    其中, 位图索引块和位图块是SCO UNIX专有的, 它们含有关于磁盘块管理的重
要数据, 一般情况下, 位图块不止一个, 它们的数量和块号是由位图索引块中的数
据决定的。4.1版本中, 磁盘块的大小是1024字节, 因此引导块和超级块合占0号磁
盘块。若块尺寸为512字节, 则0号块是引导块, 1号块是超级块。 其中超级块含有文件卷的
许多重要信息, 如文件卷的大小、位图索引块的位置等。其数据结构放在
<sys/filsys.h>文件中, 具体结构如下:    struct filsys    {    ushort s-isize;
    daddr-t s-fsize;    short s-nfree;    daddr-t sfree[NICFREE];    …    };
    其中: s-nfree、sfree[NICFREE]是SCO UNIX涉及磁盘块管理的两项重要数据,
在其它UNIX SYSTEM V中也有这两项数据, 但二者的含义不同。s-nfree是SCO UNIX
的文件卷标志, 恒为-1; sfree[NICFREE]是位图索引块地址表, 表中的数据是位图
索引块的块号, 对于容量小于2GB的文件卷, 只有sfree[0]含有数据。    我们来看一看子
文件卷/dev/user的超级块内容:
    # hd -abx -s 0x200 -n 0x200 /dev/user
    0200 1d 06 00 00 a0 86 01 00 ff ff 00 00 1e 06 00 00
    0210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    *
    02d0 00 00 00 00 00 00 00 00 8d 00 8c 00 8b 00 8a 00
    02e0 89 00 88 00 87 00 86 00 85 00 84 00 83 00 82 00
    02f0 81 00 80 00 7f 00 7e 00 7d 00 7c 00 7b 00 7a 00
    0300 79 00 78 00 77 00 76 00 75 00 74 00 73 00 72 00
    0310 71 00 70 00 6f 00 6e 00 6d 00 6c 00 6b 00 6a 00
    0320 69 00 68 00 67 00 66 00 65 00 64 00 63 00 62 00
    0330 61 00 60 00 5f 00 5e 00 5d 00 5c 00 5b 00 5a 00
    0340 59 00 58 00 57 00 56 00 55 00 54 00 53 00 52 00
    0350 51 00 50 00 4f 00 4e 00 4d 00 4c 00 4b 00 4a 00
    0360 49 00 48 00 47 00 46 00 45 00 44 00 43 00 42 00
    0370 41 00 40 00 3f 00 3e 00 3d 00 3c 00 3b 00 3a 00
    0380 39 00 38 00 37 00 36 00 35 00 34 00 33 00 32 00
    0390 31 00 30 00 2f 00 2e 00 2c 00 10 00 1d 00 00 00
    03a0 00 00 00 00 74 65 0e 31 01 00 90 01 00 00 00 00
    03b0 74 7f 01 00 86 61 00 00 00 00 00 00 00 00 00 00
    03c0 00 00 00 00 10 00 00 00 01 00 00 00 1d 06 00 00
    03d0 1d 06 00 00 00 e0 14 f1 00 00 00 00 00 00 00 00
    03e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    03f0 00 00 00 00 c4 37 18 4b 21 7e 18 fd 02 00 00 00    0400
    从上可见, 文件卷/dev/user只有一个位图索引块, 其块号是0x61e它在文件卷
中的偏移量是0x61e*0x400=0x187400字节。位图索引块的数据结构是长整型数组,
数组中的数据是它所管理的位图块的块号。下面是位图索引块0x61e的数据。    # hd alx
-s 0x187800 -n 0x400 /dev/user
    187800 0000061d 0000261d 0000461d 0000661d
    187810 0000861d 0000a61d 0000c61d 0000e61d
    187820 0001061d 0001261d 0001461d 0001661d
    187830 0001861d 00000000 00000000 00000000
    187840 00000000 00000000 00000000 00000000    *    187c00
    由此可见, 该位图索引块管理的位图块有0x61d, 0x261d, ……, 0x1861d。位
图块的数据结构可以看作是一个长度为1024字节的二进制数。该数中的每一位都是反映某个
磁盘块使用情况的标志位。若该位为1, 则表明该磁盘块未被使用, 是空
?锌? 若该位为0, 则表明该磁盘块已被使用。该标志位所代表的磁盘块的块号等于位图块号
加上标志位在二进制数中的偏移量。下面是位图块0x61d的数据。
    # hd -abx -s 0x187400 -n 0x400 /dev/user
    187400 00 1c 00 00 00 00 20 00 80 ff 00 00 07 9c ff ff
    187410 f8 ff 80 ff ff ff ff ff ff ff ff ff ff ff fe ff
    187420 00 00 ff ff 00 00 00 00 00 00 00 00 00 00 ff ff
    187430 ff ff bf ff 00 00 00 00 00 00 f8 ff ff ff ff ff
    187440 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    *    187800

--
※ 来源:.华南网木棉站 bbs.gznet.edu.cn.[FROM: 202.38.240.203]
--
※ 转寄:.华南网木棉站 bbs.gznet.edu.cn.[FROM: 202.96.144.222]
--
※ 转载:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.0.1]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店