檔案系統(file system)是磁碟上有特定格式的一片區域,作業系統利用檔案系統儲存和管理檔案。
不同的作業系統需要使用不同的檔案系統,為了與其他作業系統相容,通常作業系統都支援很多種型別的檔案系統。
linux系統使用ext2/ext3檔案系統。
在linux系統中,儲存資料的各種裝置都屬於塊裝置,對於磁碟裝置,通常在0磁軌第乙個扇區上存放引導資訊,稱為主引導記錄(mbr),該扇區不屬於任何乙個分割槽,每個分割槽包含許多資料塊,可以認為是一系列塊組的集合。
在磁碟分割槽上建立ext2/ext3檔案系統後,每個塊組的結構如圖所示
ext檔案系統結構的核心組成部分是超級塊,索引節點表和資料塊。
超級塊和塊組描述符中包含關於該塊組的整體資訊,例如索引節點的總數和使用情況、資料塊的總數和使用情況以及檔案系統狀態等。
每乙個索引節點都有乙個唯一編號,並且對應乙個檔案,它包含了針對某個具體檔案的幾乎全部資訊,例如檔案的訪問許可權、擁有者、建立時間以及對應的資料塊位址等,但不包含檔名稱。
在目錄檔案中包含檔名稱以及此檔案的索引節點號。索引節點指向特定的資料塊,資料塊是真正儲存檔案內容的地方。
ext是第乙個專門為linux的檔案系統型別,叫做擴充套件檔案系統。
它在2023年4月完成的。
它為linux的發展取得了重要作用。
但是在效能和相容性上存在許多缺陷。現在已經很少使用了。
ext2是為解決ext檔案系統的缺陷而設計的可擴充套件的高效能的檔案系統。又被稱為二級擴充套件檔案系統。
它是在2023年發布的,設計者是rey card。
ext2是linux檔案系統型別中使用最多的格式。並且在速度和cpu利用率上較突出,是 gnu/linux 系統中標準的檔案系統,其特點為訪問檔案的效能極好,對於中小型的檔案更顯示出優勢,這主要得利於其簇快取層的優良設計。
ext2 可以支援256位元組的長檔名,其單一檔案大小與檔案系統本身的容量上限與檔案系統本身的簇大小有關,在一般常見的intel x86相容處理器的系統中,簇最大為 4kb, 則單一檔案大小上限為 2048gb, 而檔案系統的容量上限為 6384gb。儘管linux可以支援種類繁多的檔案系統,但是2023年以前幾乎所有的linux發行版都用ext2作為預設的檔案系統。
ext2的缺點:ext2的設計者主要考慮的是檔案系統效能方面的問題。ext2在寫入檔案內容的同時並沒有同時寫入檔案的meta-data (和檔案有關的資訊,例如:許可權、所有者以及建立和訪問時間)。另外但由於目前核心 2.4 所能使用的單一分割區最大只有 2048gb,儘管檔案系統的容量上限為 6384g但是實際上能使用的檔案系統容量最多也只有 2048gb。
ext3是由開放資源社群開發的日誌檔案系統,主要開發人員是stephen tweedie。
ext3被設計成是ext2的公升級版本,盡可能地方便使用者從ext2fs向ext3fs遷移。ext3在ext2的基礎上加入了記錄元數 據的日誌功能,努力保持向前和向後的相容性。
ext3是一種日誌式檔案系統。日誌式檔案系統的優越性在於:由於檔案系統都有快取層參與運作,如不使用時必須將檔案系統卸 下,以便將快取層的資料寫回磁碟中。因此每當系統要關機時,必須將其所有的檔案系統全部卸下後才能進行關機。
ext3的缺點:其最大的缺點是沒有現代檔案系統所具有的能提高檔案資料處理速度和解壓的高效能,另外使用ext3檔案系統時要注意硬碟限額問題,在這個問題解決之前,不推薦在重要的企業應用上採用ext3+disk quota(磁碟配額)。
jsf提供了基於日誌的位元組級檔案系統,該檔案系統是為面向事務的高效能系統而開發的。
jsf(journaled file system technology for linux)的開發者包括aix(ibm的unix)的jsf的主要開發者。
2000 年2月,ibm宣布在乙個開放資源許可證下,移植linux版的jsf檔案系統。jsfs也是乙個有大量使用者安裝使用的企業級檔案系統。它具有可伸縮性和 健壯性,與非日誌檔案系統相比,它的優點是其快速重啟能力:jfs 能夠在幾秒或幾分鐘內就把檔案系統恢復到一致狀態。
雖然 jsf 主要是為滿足伺服器(從單處理器系統到高階多處理器和群集系統)的高吞吐量和可靠性需求而設計的,jsf 還可用於想得到高效能和可靠性的客戶機配置因為在系統崩潰時,jsf 能提供快速檔案系統重啟時間,所以它是網際網路檔案伺服器的關鍵技術。
jsf的缺點:使用jsf日誌檔案系統,效能上會有一定損失,系統資源占用的比率也偏高。是因為當它保持乙個日誌時,系統需要寫許多資料。
xfs是一種非常優秀的日誌檔案系統,它是sgi公司設計的。
xfs被稱為業界最先進的、最具可公升級性的檔案系統技術。它是乙個全64位,快速、穩固的日 志檔案系統,多年用於sgi的irix作業系統。
sgi決定支援linux社群,將關鍵的基本架構技術授權於linux。它以開放資源形式發布了他們自己 擁有的xfs的源**,並開始進行移植。
sgi的xfs可為 linux和開放資源社群帶來的新特性有:可公升級性:xfs被設計成可公升級,以面對大多數的儲存容量和i/o儲存需求,可處理大型檔案和包含巨大數量檔案 的大型目錄,滿足二十一世紀快速增長的磁碟需求。
xfs有能力動態地為檔案分配索引空間,使系統形成高效支援大數量檔案的能力。在它的支援下,使用者可使用 1exabyte (1g×1gb) 大的檔案,遠遠大於現在最大的檔案系統。
優秀的i/o 效能:典型的現代伺服器使用大型的條帶式磁碟陣列,以提供達數gb/秒的總頻寬。xfs可以很好地滿足i/o請求的大小和併發i/o請求的數量。 xfs 可作為root檔案系統,並被lilo支援。
swap檔案系統是linux的交換分割槽所採用的檔案系統。在linux中使用交換分割槽管理記憶體的虛擬交換空間。一般交換分割槽的大小設定為系統物理記憶體的2倍。在安裝linux作業系統時,必須建立交換分割槽,並且其檔案系統型別必須為swap。交換分割槽由作業系統自行管理。
vfat檔案系統是linux下對dos、windows作業系統下的fat16和fat32檔案系統的統稱。red hat linux支援fat16和fat32格式的分割槽,也可以建立和管理fat分割槽。
nfs即網路檔案系統,用於unix系統間通過網路進行檔案共享,使用者可以把網路中nfs伺服器提供的共享目錄掛載到本地目錄下,可以象訪問本地檔案系統中的內容一樣訪問nfs檔案系統中的內容。
iso 9660是光碟所使用的標準檔案系統,linux系統對該檔案系統有很好的支援,不僅能讀取光碟中的內容而且還可以支援光碟燒錄功能。
硬碟分割槽後,下一步的工作就是檔案系統的建立。類似於windows下的格式化硬碟。
在硬碟分割槽上建立檔案系統會沖掉分割槽上的資料,而且不可恢復,因此在建立檔案系統之前要確認分割槽上的資料不再使用。建立檔案系統的命令是mkfs,格式如下:
mkfs [引數] 檔案系統
mkfs命令常用的引數選項
-t :指定要建立的檔案系統型別
-c:建立檔案系統前首先檢查壞塊
-l file:從檔案file中讀磁碟壞塊列表,file檔案一般是由磁碟壞塊檢查程式產生的
-v:輸出建立檔案系統詳細資訊。
在/dev/sdb1上建立ext3型別的檔案系統,建立時檢查磁碟壞塊並顯示詳細資訊。
對軟盤格式化
使用badblocks命令檢查軟盤上的壞塊,把壞塊資訊儲存在檔案badblock-fd0中。
用mkfs命令建立檔案系統。
fsck命令主要用於檢查檔案系統的正確性。並對linux磁碟進行修復。fsck命令的格式如下:
fsck [引數選項] 檔案系統
fsck命令常用的引數選項:
-t:給定檔案系統型別,若在/etc/fstab中已有定義或kernel本身已支援的不需新增此項。
-s:乙個乙個地執行fsck命令進行檢查。
-a:對/etc/fstab中所有列出來的分割槽進行檢查。
-c:顯示完整的檢查進度。
-d:列出fsck的debug結果。
-p:在同時有-a選項時,多個fsck的檢查一起執行。
-a:如果檢查中發現錯誤,則自動修復。
-r:如果檢查有錯誤,詢問是否修復。
例如,檢查分割槽/dev/sdb1上是否有錯誤,如果有錯誤自動修復。
Linux檔案系統型別和區別
檔案系統ext3,ext4和xfs的區別 1.ext3 1 最多只能支援32tb的檔案系統和2tb的檔案,實際只能容納2tb的檔案系統和16gb的檔案 2 ext3目前只支援32000個子目錄 3 ext3檔案系統使用32位空間記錄塊數量和i 節點數量 4 當資料寫入到ext3檔案系統中時,ext3...
linux檔案系統相關概念
struct task struct 注意檔案表項中有乙個引用計數,來表示,多幾個檔案描述符,指向這個檔案表項。不同的檔案描述符可以指向相同的檔案表項 檔案描述符陣列 檔案描述符陣列對應的struct file指標,陣列的元素,是指向file的指標 apue中的對應是 其中檔案表項是struct f...
檔案系統的概念
首先要明白的是 什麼是 檔案系統 檔案系統是對乙個儲存裝置上的資料和元資料進行組織的機制。這種機制有利於使用者和作業系統的互動。在一篇oracle的技術文章中看到這樣一句話 儘管 核心是 linux 的核心,但檔案卻是使用者與作業系統互動所採用的主要工具。這對 linux 來說尤其如此,這是因為在 ...