Unix文件系統(tǒng)經(jīng)驗講解
我們知道Unix文件系統(tǒng)包括引導塊、超級塊、i節(jié)點區(qū)、文件存儲區(qū)、進程對換區(qū)等幾部分。引導塊占用第0號物理塊,不屬于文件系統(tǒng)管轄,如果系統(tǒng)中有多個文件系統(tǒng),只有根文件系統(tǒng)才有引導程序放在引導塊中,其余文件系統(tǒng)都不使用引導塊;
超級塊占用第1號物理塊,是文件系統(tǒng)的控制塊,超級塊包括:文件系統(tǒng)的大小、空閑塊數(shù)目、空閑塊索引表、空閑i節(jié)點數(shù)目、空閑i節(jié)點索引表、封鎖標記等。超級塊是系統(tǒng)為文件分配存儲空間、回收存儲空間的依據(jù)。
i節(jié)點區(qū)存放i節(jié)點,i節(jié)點是對文件進行控制和管理的一種數(shù)據(jù)結(jié)構(gòu)。
文件存儲區(qū)是存放文件內(nèi)容的區(qū)域,文件存儲區(qū)中各數(shù)據(jù)塊的使用情況在超級塊中由記錄,系統(tǒng)利用超級塊中的記錄完成對數(shù)據(jù)塊的分配和回收
Unix文件系統(tǒng)中很重要的概念之一就是i節(jié)點,下面就開始說說這個重要概念。
每一個文件都有自己的i節(jié)點,每個i節(jié)點都有一個唯一的i節(jié)點號。
i節(jié)點結(jié)構(gòu)如下(參考/usr/include/sys/ino.h):
- struct dinode
- {
- ushort di_mode; /*文件類型+用戶權(quán)限*/
- short di_nlink; /*文件鏈接數(shù)*/
- ushort di_uid; /*屬主用戶id*/
- ushort di_gid; /*屬主用戶組id*/
- off_t di_size; /*文件大小*/
- char di_addr[40]; /*文件數(shù)據(jù)區(qū)起點地址*/
- time_t di_atime; /*最后訪問時間*/
- time_t di_mtime; /*最后修改時間*/
- time_t di_ctime; /*創(chuàng)建時間*/
- };
從Unix文件系統(tǒng)這個結(jié)構(gòu)可以看出以下一些信息:
1、i節(jié)點保存了文件的屬性和類型、存放文件內(nèi)容的物理塊地址、最近一次的存取時間、最近一次的修改時間、創(chuàng)建此文件的時間。
2、i節(jié)點中沒有記錄文件名字,那文件名是怎么關(guān)聯(lián)到i節(jié)點,這么設(shè)計又有什么好處呢?
呵呵,這里就關(guān)系到了 硬連接與符號連接的區(qū)別?
3、di_mode這個是怎么保存文件類型+用戶權(quán)限的,這個如果引申下來也很值得一說。
一般我們用l列文件看到的是這樣的結(jié)果:
- drwxr-xr-x 7 root sys 512 Dec 15 2002 var
- -rw-r--r-- 1 root sys 4003 Jul 4 23:37 1
Unix文件系統(tǒng)記文件權(quán)限,這個字符串跟ushort di_mode怎么關(guān)聯(lián),用到了一個編碼跟掩碼的算法(Ip地址用的就是東東),留著下次說吧。
【編輯推薦】