歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> Unix資訊

Unix文件系統經驗講解

我們知道Unix文件系統包括引導塊、超級塊、i節點區、文件存儲區、進程對換區等幾部分。引導塊占用第0號物理塊,不屬於文件系統管轄,如果系統中有多個文件系統,只有根文件系統才有引導程序放在引導塊中,其余文件系統都不使用引導塊;

超級塊占用第1號物理塊,是文件系統的控制塊,超級塊包括:文件系統的大小、空閒塊數目、空閒塊索引表、空閒i節點數目、空閒i節點索引表、封鎖標記等。超級塊是系統為文件分配存儲空間、回收存儲空間的依據。

i節點區存放i節點,i節點是對文件進行控制和管理的一種數據結構。

文件存儲區是存放文件內容的區域,文件存儲區中各數據塊的使用情況在超級塊中由記錄,系統利用超級塊中的記錄完成對數據塊的分配和回收

Unix文件系統中很重要的概念之一就是i節點,下面就開始說說這個重要概念。

每一個文件都有自己的i節點,每個i節點都有一個唯一的i節點號。

i節點結構如下(參考/usr/include/sys/ino.h):
 

  1. struct dinode  
  2. {  
  3. ushort di_mode; /*文件類型+用戶權限*/  
  4. short di_nlink; /*文件鏈接數*/  
  5. ushort di_uid; /*屬主用戶id*/  
  6. ushort di_gid; /*屬主用戶組id*/  
  7. off_t di_size; /*文件大小*/  
  8. char di_addr[40]; /*文件數據區起點地址*/  
  9. time_t di_atime; /*最後訪問時間*/  
  10. time_t di_mtime; /*最後修改時間*/  
  11. time_t di_ctime; /*創建時間*/  
  12. };  

從Unix文件系統這個結構可以看出以下一些信息:

1、i節點保存了文件的屬性和類型、存放文件內容的物理塊地址、最近一次的存取時間、最近一次的修改時間、創建此文件的時間。

2、i節點中沒有記錄文件名字,那文件名是怎麼關聯到i節點,這麼設計又有什麼好處呢?

呵呵,這裡就關系到了 硬連接與符號連接的區別?

3、di_mode這個是怎麼保存文件類型+用戶權限的,這個如果引申下來也很值得一說。

一般我們用l列文件看到的是這樣的結果:

  1. drwxr-xr-x 7 root sys 512 Dec 15 2002 var  
  2. -rw-r--r-- 1 root sys 4003 Jul 4 23:37 1 

Unix文件系統記文件權限,這個字符串跟ushort di_mode怎麼關聯,用到了一個編碼跟掩碼的算法(Ip地址用的就是東東),留著下次說吧。

Copyright © Linux教程網 All Rights Reserved