linux的虛擬檔案系統四(檔案系統理論)

2021-08-28 16:27:46 字數 3585 閱讀 9943

1. linux檔案系統

檔案系統指檔案存在的物理空間,linux系統中每個分割槽都是乙個檔案系統,都有自己的目錄層次結構。linux會將這些分屬不同分割槽的、單獨的檔案系統按一定的方式形成乙個系統的總的目錄層次結構。乙個作業系統的執行離不開對檔案的操作,因此必然要擁有並維護自己的檔案系統。

2. 常見檔案系統型別

ext2 : 早期linux中常用的檔案系統

ext3 : ext2的公升級版,帶日誌功能

ext4 : ext3的公升級版

ramfs : 記憶體檔案系統,速度很快

nfs : 網路檔案系統,由sun發明,主要用於遠端檔案共享

ms-dos : ms-dos檔案系統

vfat : windows 95/98 作業系統採用的檔案系統

fat : windows xp 作業系統採用的檔案系統

ntfs: windows nt/xp 作業系統採用的檔案系統

hpfs : os/2 作業系統採用的檔案系統

proc : 虛擬的程序檔案系統

iso9660 : 大部分光碟所採用的檔案系統

ufssun : os 所採用的檔案系統

ncpfs : novell 伺服器所採用的檔案系統

smbfs : samba 的共享檔案系統

xfs : 由sgi開發的先進的日誌檔案系統,支援超大容量檔案

jfs :ibm的aix使用的日誌檔案系統

reiserfs : 基於平衡樹結構的檔案系統

udf: 可擦寫的資料光碟檔案系統

3.檔案系統特性

磁碟分割槽完畢後還需要進行格式化(format),之後作業系統才能夠使用這個分割槽。 格式化的目的是能使作業系統可以使用的檔案系統格式(即我們上面提到檔案系統型別).

每種作業系統能夠使用的檔案系統並不相同. 如windows 98 以前的微軟作業系統主要利用的檔案系統是 fat (或 fat16),windows 2000 以後的版本有所謂的 ntfs 檔案系統,至於 linux 的正統檔案系統則為 ext2 (linux second extended file system, ext2fs)這乙個。此外,在預設的情況下,windows 作業系統是不會認識 linux 的 ext2 的。

傳統的磁碟與檔案系統之應用中,乙個分割槽就是只能夠被格式化成為乙個檔案系統,所以我們可以說乙個 filesystem 就是乙個 partition。但是由於新技術的利用,例如我們常聽到的lvm與軟體磁碟陣列(software raid), 這些技術可以將乙個分割槽格式化為多個檔案系統(例如lvm),也能夠將多個分割槽合成乙個檔案系統(lvm, raid)! 所以說,目前我們在格式化時已經不再說成針對 partition 來格式化了, 通常我們可以稱呼乙個可被掛載的資料為乙個檔案系統而不是乙個分割槽喔!

那麼檔案系統是如何執行的呢?這與作業系統的檔案資料有關。較新的作業系統的檔案資料除了檔案實際內容外, 通常含有非常多的屬性,例如 linux 作業系統的檔案許可權(rwx)與檔案屬性(擁有者、群組、時間引數等)。 檔案系統通常會將這兩部份的資料分別存放在不同的區塊,許可權與屬性放置到 inode 中,至於實際資料則放置到 data block 區塊中。 另外,還有乙個超級區塊 (superblock) 會記錄整個檔案系統的整體資訊,包括 inode 與 block 的總量、使用量、剩餘量等。

對於乙個磁碟分割槽來說,在被指定為相應的檔案系統後,整個分割槽被分為 1024,2048 和 4096 位元組大小的塊。根據塊使用的不同,可分為:

1. 超級塊(superblock): 這是整個檔案系統的第一塊空間。包括整個檔案系統的基本資訊,如塊大小,inode/block的總量、使用量、剩餘量,指向空間 inode 和資料塊的指標等相關資訊。

2. inode塊(檔案索引節點) : 檔案系統索引,記錄檔案的屬性。它是檔案系統的最基本單元,是檔案系統連線任何子目錄、任何檔案的橋梁。每個子目錄和檔案只有唯一的乙個 inode 塊。它包含了檔案系統中檔案的基本屬性(檔案的長度、建立及修改時間、許可權、所屬關係)、存放資料的位置等相關資訊. 在 linux 下可以通過 "ls -li" 命令檢視檔案的 inode 資訊。硬連線和原始檔具有相同的 inode 。

3. 資料塊(block) :實際記錄檔案的內容,若檔案太大時,會占用多個 block。為了提高目錄訪問效率,linux 還提供了表達路徑與 inode 對應關係的 dentry 結構。它描述了路徑資訊並連線到節點 inode,它包括各種目錄資訊,還指向了 inode 和超級塊。

就像一本書有封面、目錄和正文一樣。在檔案系統中,超級塊就相當於封面,從封面可以得知這本書的基本資訊; inode 塊相當於目錄,從目錄可以得知各章節內容的位置;而資料塊則相當於書的正文,記錄著具體內容。

linux正統的檔案系統(如ext2、3等)將硬碟分割槽時會劃分出超級塊、inode table區塊和data block資料區域。乙個檔案由乙個超級塊、inode和資料區域塊組成。inode包含檔案的屬性(如讀寫屬性、owner等,以及指向資料塊的指標),資料區域塊則是檔案內容。當檢視某個檔案時,會先從inode table中查出檔案屬性及資料存放點,再從資料塊中讀取資料。

ext2檔案系統示意圖

我們將 inode 與 block 區塊用**來說明一下,如下圖所示,檔案系統先格式化出 inode 與 block 的區塊,假設某乙個檔案的屬性與許可權資料是放置到 inode 4 號(下圖較小方格內),而這個 inode 記錄了檔案資料的實際放置點為 2, 7, 13, 15 這四個 block 號碼,此時我們的作業系統就能夠據此來排列磁碟的閱讀順序,可以一口氣將四個 block 內容讀出來! 那麼資料的讀取就如同下圖中的箭頭所指定的模樣了。

4 掛載檔案系統

linux系統中每個分割槽都是乙個檔案系統,都有自己的目錄層次結構。linux會將這些分屬不同分割槽的、單獨的檔案系統按一定的方式形成乙個系統的總的目錄層次結構。這裡所說的「按一定方式」就是指的掛載。

將乙個檔案系統的頂層目錄掛到另乙個檔案系統的子目錄上,使它們成為乙個整體,稱為掛載。把該子目錄稱為掛載點.

例如要讀取硬碟中的乙個格式化好的分割槽、光碟或軟體等裝置時,必須先把這些裝置對應到某個目錄上,而這個目錄就稱為「掛載點(mount point)」,這樣才可以讀取這些裝置。 掛載後將物理分割槽細節遮蔽掉,使用者只有統一的邏輯概念。所有的東西都是檔案。

注意:1、掛載點必須是乙個目錄。

2、乙個分割槽掛載在乙個已存在的目錄上,這個目錄可以不為空,但掛載後這個目錄下以前的內容將不可用。

對於其他作業系統建立的檔案系統的掛載也是這樣。但是需要理解的是:光碟、軟盤、其他作業系統使用的檔案系統的格式與linux使用的檔案系統格式是不一樣的。光碟是iso9660;軟盤是fat16或ext2;windows nt是fat16、ntfs;windows98是fat16、fat32;windows2000和windowsxp是fat16、fat32、 ntfs。掛載前要了解linux是否支援所要掛載的檔案系統格式。

掛載時使用mount命令,其格式:mount [-引數] [裝置名稱] [掛載點]

EXT2檔案系統 虛擬檔案系統 proc檔案系統

1 只看該作者 倒序看帖 列印 1 引言 很詳細地了解某個作業系統的實際工作方式是非常困難的,因為大多數作業系統的源 都是嚴格保密的。在以實際使用為目標的作業系統中,讓任何人都可以自由獲取系統源 無論目的是要了解 學習還是修改,這樣的系統並不多。本 的主題就是這些少數作業系統中的乙個 linux。l...

Linux虛擬檔案系統

這一周主要學了檔案系統的相關知識,通過學習基本上掌握了 linux 檔案系統的結構,檔案型別,以及讀取模式等等,也學會怎麼用命令簡單的建立乙個檔案系統。linux 的檔案系統主要有 ext2 ext3 ext4 在windows 下乙個分割槽會採用的一棵目錄樹來管理,而 linux 則只有一棵目錄樹...

linux虛擬檔案系統

虛擬檔案系統 virtual filesystem 也可以稱為虛擬檔案系統轉換 virtual filesystem switch vfs 是乙個核心軟體層,用來處理與unix標準檔案系統相關的所有系統呼叫。其健壯性表現在能為各種檔案系統提供乙個通用介面。cp floppy test tmp tes...