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