索引節點和檔案一一對應,它跟檔案內容一樣,都會被持久化儲存到磁碟中。所以記住索引節點同樣占用磁碟空間。
索引節點和目錄項記錄了檔案的元資料,以及檔案見的目錄關係,具體來說,檔案資料到底是怎麼儲存的呢?是不是直接寫到磁碟中就好了呢?
磁碟格式化時,會被分成三個儲存區域:1.超級塊(四大基本要素):儲存整個檔案系統的狀態。
2.索引節點(四大基本要素)區 : 用來儲存索引節點
3.資料塊(四大基本要素)區: 用來儲存檔案資料
為了支援不同的檔案系統,linux 核心在使用者程序和檔案系統的中間,又引入乙個抽象層,也就是虛擬檔案系統vfs(virtual file system)
vfs 定義了一組所有檔案系統都支援的資料結構 和標準介面, 這樣,使用者程序和核心其他子系統,只需要跟vfs提供的統一介面進行互動就可以了,而不需要再關心底層的各種檔案系統的實現細節。
大致分為3類:
第一類:基於磁碟的檔案系統,也就是把資料直接儲存在計算機本地掛載的磁碟中。常見的ext4、xfs、overlayfs等,都是這類檔案系統。
第二類:基於記憶體的檔案系統,也就是我們常說的虛擬檔案系統。這類檔案系統,不需要任何磁碟分配儲存空間,但會占用記憶體。我們經常用到的 /proc 檔案系統,其實就是一種常見的虛擬檔案系統。此外, /sys 檔案系統也屬於這一類,主要向使用者空間匯出層次化的核心物件。
第三類: 網路檔案系統,也就是用來訪問其他計算機的檔案系統,比如nfs、smb、iscsi 等。
這些檔案系統,要先掛載到vfs目錄樹種的某個子目錄(稱為掛載點), 然後才能訪問其中的檔案。
把檔案系統掛載到掛載點後,你就能通過掛載點,再去訪問它管理的檔案了。vfs提供了一組標準的檔案訪問介面。這些介面以系統呼叫的方式。
分類:第一種,根據是否利用標準快取庫,可以把檔案i/o 分為緩衝i/o 與 非緩衝i/o。
第二種,根據是否利用作業系統頁快取,分為 直接 i/o 和非直接 i/o。
第三種,根據應用程式是否阻塞自身執行,分為阻塞i/o 和 非阻塞 i/o
第四種,根據是否等待響應結果,分為同步和非同步i/o.
linux 一切皆檔案,深刻含義。無論是普通檔案和塊裝置、還是網路套接字和管道等,它們都是通過統一的vfs介面來訪問的。
free 輸出的cache,是頁快取和可**slab快取的和,可以從/proc/meminfo.直接獲取
3057888 不等於 2998100 3057888-2998100 =59788(58m)
是通過 slab機制 /proc/meminfo 只給出了slab 整體大小。
dentry 目錄項快取 : 192
inode vfs索引節點快取: 592
sudo cat /proc/slabinfo | awk ' end '
91106.1 = 67948
slabtop 檢視占用記憶體最多的快取型別。
linux 檔案系統 Linux 檔案系統結構介紹
ubuntu 像所有類unix系統一樣 在分層樹中組織檔案,其中的關係就像父母和孩子一樣。目錄可以包含其他目錄以及常規檔案,它們是樹的 葉子 樹的任何元素都可以通過路徑名引用 絕對路徑以字元 標識根目錄,其中包含所有其他目錄和檔案 開頭,然後列出必須遍歷以到達該元素的每個子目錄,每個子目錄用 符號分...
Linux檔案系統
linux目錄結構 根目錄 bin 可執行檔案目錄 boot 核心引導檔案 vmlinuz,initrd.img等 dev 裝置檔案儲存目錄,應用程式對這些檔案讀寫和控制可訪問實際裝置 etc 系統配置和一些伺服器配置檔案的位置,如帳號及密碼配置檔案。home 普通使用者目錄 lib 庫檔案目錄 l...
Linux檔案系統
之前對磁碟分割槽已經有了詳細的描述,這篇主要介紹檔案系統 linux的檔案系統是出了名的 下面就 大概介紹下 可以把檔案系統大概分成 superblock inodeblock datablock 三部分 superblock superblock記錄檔案系統的基本資訊比如每塊資料塊的大小,空閒磁碟...