SCO UNIX文件卷結構分析及誤刪文件的恢復
摘要 該文以SCO UNIX 3.2.4.1版本為例,分析其文件卷結構和磁盤塊管理方式,并在此基礎上講述了誤刪文件恢復的方法。
我們知道,UNIX操作系統是以文件卷作為其文件系統的存儲格式的。對于UNIX用戶尤其是系統管理員而言,要想更好地掌握UNIX操作系統,熟悉文件卷的結構是很有必要的。由于SCOUNIX在全球的微機UNIX操作系統市場中所占份額最大,在我國更是處于壟斷地位,而它的文件卷結構和磁盤塊管理方式都和其它UNIX SYSTEM V不完全一樣,介紹這方面信息的資料也很少。本文就以SCO UNIX 3.2.4.1版本為例,徹底分析它的文件卷結構和磁盤塊管理方式,并在此基礎上,講述一個應用--恢復誤刪的文件。
一、文件卷的結構
文件卷是由大小相同的磁盤塊序列組成的。在文件卷偏移量512字節處,有一個長度為512字節的超級塊,其后是若干i節點塊、位圖索引塊、位圖塊、數據塊等,如圖1所示。
圖1
其中,位圖索引塊和位圖塊是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 4
[1] [2] [3] [4]