檔案系統知識總結

2022-08-24 20:57:10 字數 2972 閱讀 9894

一. 硬碟:

1. 儲存介質:硬碟、光碟、軟盤、flash盤、磁帶、網路儲存裝置等。

2. 硬碟資訊: 《硬碟資訊》

3. 磁碟的分割槽:這是針對大容量的儲存裝置來說的,主要是指硬碟;對於大硬碟,我們要合理規劃分割槽,所以要談到硬碟的分割槽。

二.檔案系統:

1.是什麼?

檔案系統是作業系統最為重要的一部分,它定義了磁碟上儲存檔案的方法和資料結構。檔案系統是作業系統組織、訪問和儲存資訊的重要手段,每種作業系統都有自己的檔案系統。如,windows所用的檔案系統主要有fat16、fat32和ntfs,linux所用的檔案系統主要有ext2、ext3、ext4和reiserfs等。

2. 怎麼建立?

分割槽格式化的過程就是建立檔案系統的過程。所格式化的檔案系統必需是你使用的作業系統所能認出來的,否則將無法使用這個分割槽。這就是為什麼ntfs的檔案系統,不能直接被linux系統所認識。

4.swap:它是linux中一種專門用於交換分割槽的swap檔案系統。linux是使用這一整個分割槽作為交換空間。一般這個swap格式的交換分割槽是主記憶體的2倍。在記憶體不夠時,linux會將部分資料寫到交換分割槽上。

三.檔案系統工作原理:

1.現在的作業系統的檔案資料除了檔案實際內容外,還有很多檔案的屬性,檔案系統通常會將這兩部分資料分別存放在不同的區塊中,檔案屬性存放在inode中,檔案內容存放在block中,每個inode與block都有編號,inode內有block的編號,如果能找到inode就能找到block。另外,還有乙個超級區塊(superblock),會記錄整個檔案系統的整體資訊。

2.superblock, inode, dentry 和 file 都屬於元資料(metadata),即:描述資料的資料,主要是描述資料屬性(property)的資訊,用來支援如指示儲存位置、歷史資料、資源查詢、檔案紀錄等功能。

3. superblock:

superblock 是記錄整個 filesystem 相關資訊的地方, 沒有 superblock ,就沒有這個 filesystem 了.

記錄的資訊主要有:

block 為 1024 bytes (1k) 時:

如果 block 大小剛好是 1024 的話,那麼 boot sector 與 superblock 各會占用掉乙個 block , 所以整個檔案系統圖示就會如同圖 1.3.1 所顯示的那樣,boot sector 是獨立於 superblock 外面的!

如果 block 大於 1024 的話:

那麼 superblock 將會在 0 號,在第乙個 block 內 superblock 僅占有 1024-2047 ( 由 0 號起算的話)之間的咚咚,至於 2048bytes 以後的空間就真的是保留啦!而 0-1023 就保留給 boot sector 來使用

用於儲存檔案的各屬性,包括:

- 所有者資訊:檔案的owner,group;

- 許可權資訊:read、write和excite;

- 時間資訊:建立或改變時間(ctime)、最後讀取時間(atime)、最後修改時間(mtime);

- 標誌資訊:一些flags;

- 內容資訊:type,size,以及相應的block的位置資訊。

注意:不記錄檔名或目錄名,檔名或目錄名記錄在父目錄對應的block裡

inode 的特色點:

6. block:用來儲存檔案的內容。

block 基本限制:

7. 建立目錄或檔案

當建立乙個目錄時,檔案系統會為該目錄分配乙個inode和至少乙個block。該inode記錄該目錄的屬性,並指向那塊block。該block記錄該目錄下相關聯的檔案或目錄的關聯性和名字。

當建立乙個檔案時,檔案系統會為該檔案分配至少乙個inode和與該檔案大小相對應的數量的block。該inode記錄該檔案的屬性,並指向block。

如果乙個目錄中的檔案數太多,以至於1個block容納不下這麼多檔案時,linux的檔案系統會為該目錄分配更多的block。

注意:inode和block是放在硬碟裡的,而下面的dentry是放在記憶體裡的

8. dentry:叫:目錄項,dentry是乙個純粹的記憶體結構,由檔案系統在提供檔案訪問(讀取)的過程中在記憶體中直接建立,他是記憶體中的乙個目錄結構的關係。

具體過程如下:

上面我們知道了每個檔案(目錄)都有乙個inode,如果能找到inode就可以找到對應的block,那麼我們在讀取乙個檔案的時候是怎麼找到他的inode的呢?其實我們在讀取乙個檔案的時候都是從根目錄讀取的,根目錄的inode號為0,在superblock裡,可以很快根據inode號索引到具體的inode,因此讀取的第乙個inode就是根目錄的,讀取到了該目錄後,核心物件會為根目錄檔案物件建立乙個dentry,並將其快取到記憶體,根目錄檔案的block裡儲存著根目錄下的檔案(目錄)的名字與inode號,目錄檔案的內容就像一張表,記錄的檔名與其inode no.之間的對映關係。根據路徑即可找到當前需要讀取的下一級檔案的名字和inode,同時繼續為該檔案建立dentry,dentry結構是一種含有指向父節點和子節點指標的雙向結構,多個這樣的雙向結構構成乙個記憶體裡面的樹狀結構,也就是檔案系統的目錄結構在記憶體中的快取了。有了這個快取,我們在訪問檔案系統時,通常都非常快捷。所以有些說法說檔名是儲存在dentry中。

9. vfs :virtual file system 虛擬檔案系統,又稱虛擬檔案切換系統(virtual filesystem switch)是作業系統的檔案系統虛擬層,在其下是實體的檔案系統。虛擬檔案系統的主要功用,在於讓上層的軟體,能夠用單一的方式,來跟底層不同的檔案系統溝通。在作業系統與之下的各種檔案系統之間,虛擬檔案系統提供了標準的操作介面,讓作業系統能夠很快的支援新的檔案系統。

檔案系統總結

一 檔案系統 http data.uta.edu ramesh cse3320 chap10.html 對檔案系統做了很好的介紹,主要內容包括檔案的概念 目錄結構 磁碟塊分配方法 自由空間的管理 效率和效能等。二 目前幾種檔案系統的比較 http www.ntfs.com 對ntfs和fat檔案系統...

Linux檔案系統總結

linux檔案系統結的結構是樹形結構,其入口從 開始,了解linux檔案系統的結構,對於我們需要掌握的基礎知識點之一。1 什麼是檔案系統 請參見 linux 檔案系統概述 2 檔案系統的組織結構簡說 當您使用linux的時候,如果您通過ls la 就會發現,在 下包涵很多的目錄,比如etc usr ...

檔案系統總結2

檔案屬性 fstat stat lstat 用於檢視檔案屬性,與stat 和lstat 不同,fstat 需要先開啟檔案才可以進行檔案屬性的檢視 以上三個函式的返回值 成功返回0,失敗則返回 1,並且將 errno 設定為乙個恰當的值 雖然lstat 與stat 相似,但是 lstat 能返回符號鏈...