- Linux操作系統文件系統基礎知識 推薦度:
- 相關(guān)推薦
linux文件系統基礎知識匯總
1、linux文件系統分配策略
塊分配( block allocation ) 和 擴展分配 ( extent allocation )
塊分配:磁盤(pán)上的文件塊根據需要分配給文件,避免了存儲空間的浪費。但當文件擴充時(shí),會(huì )造成文件中文件塊的不連續,從而導致過(guò)多的磁盤(pán)尋道時(shí)間。
每一次文件擴展時(shí),塊分配算法就需要寫(xiě)入文件塊的結構信息,也就是 meta-dada 。meta-data總是與文件一起寫(xiě)入存儲設備,改變文件的操作要等到所有meta-data的操作都完成后才能進(jìn)行,
因此,meta-data的操作會(huì )明顯降低整個(gè)文件系統的性能。
擴展分配: 文件創(chuàng )建時(shí),一次性分配一連串連續的塊,當文件擴展時(shí),也一次分配很多塊。meta-data在文件創(chuàng )建時(shí)寫(xiě)入,當文件大小沒(méi)有超過(guò)所有已分配文件塊大小時(shí),就不用寫(xiě)入meta-data,直到需要再分配文件塊的時(shí)候。
擴展分配采用成組分配塊的方式,減少了SCSI設備寫(xiě)數據的時(shí)間,在讀取順序文件時(shí)具有良好的性能,但隨機讀取文件時(shí),就和塊分配類(lèi)似了。
文件塊的組或塊簇 ( block cluster) 的大小是在編譯時(shí)確定的。簇的大小對文件系統的性能有很大的影響。
注: meta-data 元信息:和文件有關(guān)的信息,比如權限、所有者以及創(chuàng )建、訪(fǎng)問(wèn)或更改時(shí)間等。
2、文件的記錄形式
linux文家系統使用索引節點(diǎn)(inode)來(lái)記錄文件信息。索引節點(diǎn)是一種數據結構,它包含了一個(gè)文件的長(cháng)度、創(chuàng )建及修改時(shí)間、權限、所屬關(guān)系、磁盤(pán)中的位置等信息。
一個(gè)文件系統維護了一個(gè)索引節點(diǎn)的數組,每個(gè)文件或目錄都與索引節點(diǎn)數組中的唯一的元素對應。每個(gè)索引節點(diǎn)在數組中的索引號,稱(chēng)為索引節點(diǎn)號。
linux文件系統將文件索引節點(diǎn)號和文件名同時(shí)保存在目錄中,所以,目錄只是將文件的名稱(chēng)和它的索引節點(diǎn)號結合在一起的一張表,目錄中每一對文件名稱(chēng)和索引節點(diǎn)號稱(chēng)為一個(gè)連接。
對于一個(gè)文件來(lái)說(shuō),有一個(gè)索引節點(diǎn)號與之對應;而對于一個(gè)索引節點(diǎn)號,卻可以對應多個(gè)文件名。
連接分為軟連接和硬連接,其中軟連接又叫符號連接。
硬連接: 原文件名和連接文件名都指向相同的物理地址。目錄不能有硬連接;硬連接不能跨文件系統(不能跨越不同的分區),文件在磁盤(pán)中只有一個(gè)拷貝。
由于刪除文件要在同一個(gè)索引節點(diǎn)屬于唯一的連接時(shí)才能成功,因此硬連接可以防止不必要的誤刪除。
軟連接: 用 ln -s 命令建立文件的符號連接。符號連接是linux特殊文件的一種,作為一個(gè)文件,它的數據是它所連接的文件的路徑名。沒(méi)有防止誤刪除的功能。
3、文件系統類(lèi)型:
ext2 : 早期linux中常用的文件系統
ext3 : ext2的升級版,帶日志功能
RAMFS : 內存文件系統,速度很快
NFS : 網(wǎng)絡(luò )文件系統,由SUN發(fā)明,主要用于遠程文件共享
MS-DOS : MS-DOS文件系統
VFAT : Windows 95/98 操作系統采用的文件系統
FAT : Windows XP 操作系統采用的文件系統
NTFS : Windows NT/XP 操作系統采用的文件系統
HPFS : OS/2 操作系統采用的文件系統
PROC : 虛擬的進(jìn)程文件系統
ISO9660 : 大部分光盤(pán)所采用的文件系統
ufsSun : OS 所采用的文件系統
NCPFS : Novell 服務(wù)器所采用的文件系統
SMBFS : Samba 的共享文件系統
XFS : 由SGI開(kāi)發(fā)的先進(jìn)的日志文件系統,支持超大容量文件
JFS :IBM的AIX使用的日志文件系統
ReiserFS : 基于平衡樹(shù)結構的文件系統
udf: 可擦寫(xiě)的數據光盤(pán)文件系統
4、虛擬文件系統VFS
linux支持的所有文件系統稱(chēng)為邏輯文件系統,而linux在傳統的邏輯文件系統的基礎上增加料一個(gè)蓄念文件系統( Vitual File System ,VFS) 的接口層。
虛擬文件系統(VFS) 位于文件系統的最上層,管理各種邏輯文件系統,并可以屏蔽各種邏輯文件系統之間的差異,提供統一文件和設備的訪(fǎng)問(wèn)接口。
5、文件的邏輯結構
文件的邏輯結構可分為兩大類(lèi): 字節流式的無(wú)結構文件 和 記錄式的有結構文件。
由字節流(字節序列)組成的文件是一種無(wú)結構文件或流式文件 ,不考慮文件內部的邏輯結構,只是簡(jiǎn)單地看作是一系列字節的序列,便于在文件的任意位置添加內容。
由記錄組成的文件稱(chēng)為記錄式文件 ,記錄是這種文件類(lèi)型的基本信息單位,記錄式文件通用于信息管理。
6、文件類(lèi)型
普通文件 : 通常是流式文件
目錄文件 : 用于表示和管理系統中的全部文件
連接文件 : 用于不同目錄下文件的共享
設備文件 : 包括塊設備文件和字符設備文件,塊設備文件表示磁盤(pán)文件、光盤(pán)等,字符設備文件按照字符操作終端、鍵盤(pán)等設備。
管道(FIFO)文件 : 提供進(jìn)程建通信的一種方式
套接字(socket) 文件: 該文件類(lèi)型與網(wǎng)絡(luò )通信有關(guān)
7、文件結構: 包括索引節點(diǎn)和數據
索引節點(diǎn) : 又稱(chēng) I 節點(diǎn),在文件系統結構中,包含有關(guān)相應文件的信息的一個(gè)記錄,這些信息包括文件權限、文件名、文件大小、存放位置、建立日期等。文件系統中所有文件的索引節點(diǎn)保存在索引節點(diǎn)表中。
數據 : 文件的實(shí)際內容?梢允强盏,也可以非常大,并且擁有自己的結構。
8、ext2文件系統
ext2文件系統的數據塊大小一般為 1024B、2048B 或 4096B
ext2文件系統采用的索引節點(diǎn)(inode):
索引節點(diǎn)采用了多重索引結構,主要體現在直接指針和3個(gè)間接指針。直接指針包含12個(gè)直接指針塊,它們直接指向包含文件數據的數據塊,緊接在后面的3個(gè)間接指針是為了適應文件的大小變化而設計的。
e.g: 假設數據塊大小為1024B ,利用12個(gè)直接指針,可以保存最大為12KB的文件,當文件超過(guò)12KB時(shí),則要利用單級間接指針,該指針指向的數據塊保存有一組數據塊指針,這些指針依次指向包含有實(shí)際數據的數據塊,
假如每個(gè)指針占用4B,則每個(gè)單級指針數據塊可保存 1024/4=256 個(gè)數據指針,因此利用直接指針和單級間接指針可保存 1024*12+1024*256=268 KB的文件。當文件超過(guò)268KB時(shí),再利用二級間接指針,直到使用三級間接指針。
利用直接指針、單級間接指針、二級間接指針、三級間接指針可保存的最大文件大小為:
1024*12+1024*256+1024*256*256+1024*256*256*256=16843020 KB,約 16GB
若數據塊大小為2048B,指針占4B,則最大文件大小為: 2048*12+2048*512+2048*512*512+2048*512*512*512=268,960,792 KB 約 268GB
若數據塊大小為4096B,指針占4B,則最大文件大小為: 4096*12+4096*1024+4096*1024*1024+4096*1024*1024*1024=4,299,165,744 KB ,約 4TB
注: 命令 tune2fs -l /dev/sda5 可查看文件系統
ext2文件系統最大文件名長(cháng)度: 255個(gè)字符
ext2文件系統的缺點(diǎn):
ext2在寫(xiě)入文件內容的同時(shí)并沒(méi)有同時(shí)寫(xiě)入文件meta-data, 其工作順序是先寫(xiě)入文件的內容,然后等空閑時(shí)候才寫(xiě)入文件的meta-data。若發(fā)生意外,則文件系統就會(huì )處于不一致?tīng)顟B(tài)。
在重新啟動(dòng)系統的時(shí)候,linux會(huì )啟動(dòng) fsk ( file system check) 的程序,掃描整個(gè)文件系統并試圖修復,但不提供保證。
9、ext3文件系統:
ext3基于ext2的代碼,所以磁盤(pán)格式與ext2相同,使用相同的元數據。
ext2文件系統無(wú)損轉化為ext3文件系統: tune2fs -j /dev/sda6
日志塊設備( Journaling block device layer,JBD)完成ext3文件系統日志功能。JBD不是ext3文件系統所特有的,它的設計目標是為了向一個(gè)塊設備添加日志功能。
當一個(gè)文件修改執行時(shí),ext3文件系統代碼將通知JBD,稱(chēng)為一個(gè)事務(wù)(transaction)。發(fā)生意外時(shí),日志功能具有的重放功能,能重新執行中斷的事務(wù)。
日志中的3種數據模式:
1)、data=writeback :不處理任何形式的日志數據,給用戶(hù)整體上的最高性能
2)、data=odered :只記錄元數據日志,但將元數據和數據組成一個(gè)單元稱(chēng)為事務(wù)(transaction) 。此模式保持所句句的可靠性與文件系統的一致性,性能遠低于data=writeback模式,但比data=journal模式快
3)、data=journal :提供完整的數據及元數據日志,所有新數據首先被寫(xiě)入日志,然后才被定位。意外發(fā)生過(guò)后,日志可以被重放,將數據與元數據帶回一致?tīng)顟B(tài)。這種模式整體性能最慢,但數據需要從磁盤(pán)讀取和寫(xiě)入磁盤(pán)時(shí)卻是3種模式中最快的。
ext3文件系統最大文件名長(cháng)度: 255個(gè)字符
ext3文件系統的優(yōu)點(diǎn):可用性、數據完整性、速度、兼容性
10、ReiserFS文件系統
ReiserFS文件系統是由Hans Reiser和他領(lǐng)導的開(kāi)發(fā)小組共同開(kāi)發(fā)的,整個(gè)文件系統完全是從頭設計的,是一個(gè)非常優(yōu)秀的文件系統。也是最早用于Linux的日志文件系統之一。
ReiserFS的特點(diǎn)
先進(jìn)的日志機制
ReiserFS有先進(jìn)的日志(Journaling/logging)功能 機制。日志機制保證了在每個(gè)實(shí)際數據修改之前,相應的日志已經(jīng)寫(xiě)入硬盤(pán)。文件與數據的安全性有了很大提高。
高效的磁盤(pán)空間利用
Reiserfs對一些小文件不分配inode。而是將這些文件打包,存放在同一個(gè)磁盤(pán)分塊中。而其它文件系統則為每個(gè)小文件分別放置到一個(gè)磁盤(pán)分塊中。
獨特的搜尋方式
ReiserFS基于快速平衡樹(shù)(balanced tree)搜索,平衡樹(shù)在性能上非常卓越,這是一種非常高效的算法。ReiserFS搜索大量文件時(shí),搜索速度要比ext2快得多。Reiserfs文件 系統使用B*Tree存儲文件,而其它文件系統使用B+Tree樹(shù)。B*Tree查詢(xún)速度比B+Tree要快很多。Reiserfs在文件定位上速度非常 快。
在實(shí)際運用中,ReiserFS 在處理小于 4k 的文件時(shí),比ext2 快 5 倍;帶尾文件壓縮功能(默認)的ReiserFS 比ext2文件系統多存儲6%的數據。
支持海量磁盤(pán)
ReiserFS是一個(gè)非常優(yōu)秀的文件系統,一直被用在高端UNIX系統上,可輕松管理上百G的文件系統,ReiserFS文件系統最大支持的文件系統尺寸為16TB。這非常適合企業(yè)級應用中。
優(yōu)異的性能
由于它的高效存儲和快速小文件I/O特點(diǎn),使用ReiserFs文件系統的PC,在啟動(dòng)X(jué)窗口系統時(shí),所花的時(shí)間要比在同一臺機器上使用ext2文 件系統少1/3。另外,ReiserFS文件系統支持單個(gè)文件尺寸為4G的文件,這為大型數據庫系統在linux上的應用提供了更好的選擇。
【linux文件系統基礎知識】相關(guān)文章:
Linux操作系統文件系統基礎知識03-07
Linux文件系統簡(jiǎn)介02-27
Linux btrfs文件系統及管理02-26
Linux文件系統操作命令大全03-09
Linux用戶(hù)/文件系統管理詳解02-27
Linux認證基礎知識:linux操作系統目錄結構03-08
Linux系統基礎知識:IO調度03-29
Linux認證考試基礎知識試題及答案12-14