來點綠色放松一下眼睛吧 :)
文件系統是對文件和目錄的組織集合。
設備文件和系統的某個設備相對應。
設備驅動程序
設備的類型
設備ID
磁盤驅動器是一種機械裝置,由一個或多個高速旋轉的盤片組成。通過在磁盤上快速移動讀寫磁頭,便可獲取/修改磁盤表面的磁性編碼信息。
其結構見下圖。
磁道:磁盤表面的信息存儲在稱為磁道的一組同心圓上。
扇區:磁道被劃分為若干扇區。
物理塊:扇區包含一系列物理塊,物理塊的容量一般為512字節,代表了驅動器可以讀寫的最小信息單位。
尋道時間:讀寫磁盤信息,首先,磁頭要移動到相應磁道,這段時間叫做尋道時間。
旋轉延遲:然後,驅動器要等待相應的扇區旋轉到磁頭下。
傳輸時間:最後,從所請求的塊上傳輸數據。
執行上述操作所耗費的時間總量通常以毫秒為單位。
分區:可將每塊磁盤換分成一個或多個不重疊的分區。內核則將每個分區視為位於/dev路徑下的單獨設備。
磁盤分區可容納任何類型的信息,通常包括:
可使用Linux專有文件/proc/swaps來查看系統中當前已激活交換區域的信息,其中包括每個交換區域的大小,以及在用交換區域的個數。
文件系統是對常規文件和目錄的組織集合。
Linux的強項之一是支持種類繁多的文件系統。
以ext2為例來介紹文件系統。
邏輯塊:在文件系統中,用來分配空間的基本單位是邏輯塊,也就是文件系統所在物理設備上若干連續的物理塊。在ext2文件系統上,邏輯塊的大小為1024、2048或4096。
磁盤分區和文件系統之間的關系如下圖所示
文件系統由以下幾個部分組成:
i節點維護的信息如下
文件的數據塊不一定連續,為了定位文件數據塊,inode維護了一組指針,如下圖所示:
在ext2中,每個inode包含15個指針,其中
這樣設計的意圖是:
Linux所支持的各種文件系統,其實現細節均不相同。虛擬文件系統是一種內核特性,通過為文件系統操作創建抽象層來解決各種文件系統之間的差異問題。
原理:
這樣一來,程序只需要理解VFS接口,而無需過問具體文件系統的實現細節。
如果系統突然崩潰,對文件的更新的只完成了一半,文件系統元數據也將處於不一致狀態。
而系統對文件系統進行一致性檢查需要遍歷整個文件系統,這是一個非常耗時的操作。
日志文件系統就是為了解決這個問題。具體做法是
需要注意的是,通常日志文件系統知會確保元數據的一致性,不會記錄文件數據。因此,一旦系統崩潰,可能會造成數據丟失。
Linux上的所有文件系統中的文件都位於單根目錄樹下,其他文件系統都掛載在根目錄下。
掛在命令:
mount device directory?
下面通過實例來說明掛載後的文件系統的層級關系。
不帶任何參數來執行mount命令,可以列出當前已掛載的文件系統。
掛載點和設備的映射關系如下
Linux支持駐留於內存中的虛擬文件系統,對於應用程序來說,此類文件系統看起來與任何其他文件系統別無二致,不過二者的重要的差別是:
掛在虛擬文件系統命令如下:
mount -t tmpfs source target? 其中source只有在/proc/mounts中可以看到,沒有其他用途。 例如: 除了用於用戶應用程序以外,tmpfs文件系統還有以下兩個特殊用途: