1. 程式人生 > >linux檔案系統分類和特點

linux檔案系統分類和特點

1、linux檔案系統分配策略:
塊分配(blockallocation)和擴充套件分配(extentallocation):
塊分配:磁碟上的檔案塊根據需要分配給檔案,避免了儲存空間的浪費。但當檔案擴充時,會造成檔案中檔案塊的不連續,從而導致過多的磁碟尋道時間。
每一次檔案擴充套件時,塊分配演算法就需要寫入檔案塊的結構資訊,也就是meta-dada。meta-data總是與檔案一起寫入儲存裝置,改變檔案的操作要等到所有meta-data的操作都完成後才能進行,因此,meta-data的操作會明顯降低整個檔案系統的效能。

擴充套件分配:檔案建立時,一次性分配一連串連續的塊,當檔案擴充套件時,也一次分配很多塊。meta-data在檔案建立時寫入,當檔案大小沒有超過所有已分配檔案塊大小時,就不用寫入meta-data,直到需要再分配檔案塊的時候。

擴充套件分配採用成組分配塊的方式,減少了SCSI裝置寫資料的時間,在讀取順序檔案時具有良好的效能,但隨機讀取檔案時,就和塊分配類似了。
檔案塊的組或塊簇(blockcluster)的大小是在編譯時確定的。簇的大小對檔案系統的效能有很大的影響。
注:meta-data元資訊:和檔案有關的資訊,比如許可權、所有者以及建立、訪問或更改時間等。

2、檔案的記錄形式
linux文家系統使用索引節點(inode)來記錄檔案資訊。索引節點是一種資料結構,它包含了一個檔案的長度、建立及修改時間、許可權、所屬關係、磁碟中的位置等資訊。
一個檔案系統維護了一個索引節點的陣列,每個檔案或目錄都與索引節點陣列中的唯一的元素對應。每個索引節點在陣列中的索引號,稱為索引節點號。
linux檔案系統將檔案索引節點號和檔名同時儲存在目錄中,所以,目錄只是將檔案的名稱和它的索引節點號結合在一起的一張表,目錄中每一對檔名稱和索引節點號稱為一個連線。

對於一個檔案來說,有一個索引節點號與之對應;而對於一個索引節點號,卻可以對應多個檔名。
連線分為軟連線和硬連線,其中軟連線又叫符號連線。
硬連線:原檔名和連線檔名都指向相同的實體地址。目錄不能有硬連線;硬連線不能跨檔案系統(不能跨越不同的分割槽),檔案在磁碟中只有一個拷貝。
由於刪除檔案要在同一個索引節點屬於唯一的連線時才能成功,因此硬連線可以防止不必要的誤刪除。
軟連線:用ln-s命令建立檔案的符號連線。符號連線是linux特殊檔案的一種,作為一個檔案,它的資料是它所連線的檔案的路徑名。沒有防止誤刪除的功能。

3、linux檔案系統分類:
ext2:早期linux中常用的檔案系統
ext3:ext2的升級版,帶日誌功能
ext4:ext3的升級版,大幅度改動
RAMFS:記憶體檔案系統,速度很快
NFS:網路檔案系統,由SUN發明,主要用於遠端檔案共享
MS-DOS:MS-DOS檔案系統
VFAT:Windows95/98作業系統採用的檔案系統
FAT:WindowsXP作業系統採用的檔案系統
NTFS:WindowsNT/XP作業系統採用的檔案系統
HPFS:OS/2作業系統採用的檔案系統
PROC:虛擬的程序檔案系統
ISO9660:大部分光碟所採用的檔案系統
ufsSun:OS所採用的檔案系統
NCPFS:Novell伺服器所採用的檔案系統
SMBFS:Samba的共享檔案系統
XFS:由SGI開發的先進的日誌檔案系統,支援超大容量檔案
JFS:IBM的AIX使用的日誌檔案系統
ReiserFS:基於平衡樹結構的檔案系統
udf:可擦寫的資料光碟檔案系統

4、虛擬檔案系統VFS
linux支援的所有檔案系統稱為邏輯檔案系統,而linux在傳統的邏輯檔案系統的基礎上增加料一個蓄念檔案系統(VitualFileSystem,VFS)的介面層。虛擬檔案系統(VFS)位於檔案系統的最上層,管理各種邏輯檔案系統,並可以遮蔽各種邏輯檔案系統之間的差異,提供統一檔案和裝置的訪問介面。

5、檔案的邏輯結構
檔案的邏輯結構可分為兩大類:位元組流式的無結構檔案和記錄式的有結構檔案。
由位元組流(位元組序列)組成的檔案是一種無結構檔案或流式檔案,不考慮檔案內部的邏輯結構,只是簡單地看作是一系列位元組的序列,便於在檔案的任意位置新增內容。
由記錄組成的檔案稱為記錄式檔案,記錄是這種檔案型別的基本資訊單位,記錄式檔案通用於資訊管理。

6、檔案型別
普通檔案:通常是流式檔案
目錄檔案:用於表示和管理系統中的全部檔案
連線檔案:用於不同目錄下檔案的共享
裝置檔案:包括塊裝置檔案和字元裝置檔案,塊裝置檔案表示磁碟檔案、光碟等,字元裝置檔案按照字元操作終端、鍵盤等裝置。
管道(FIFO)檔案:提供程序建通訊的一種方式
套接字(socket)檔案:該檔案型別與網路通訊有關

7、檔案結構:
包括索引節點和資料
索引節點:又稱I節點,在檔案系統結構中,包含有關相應檔案的資訊的一個記錄,這些資訊包括檔案許可權、檔名、檔案大小、存放位置、建立日期等。檔案系統中所有檔案的索引節點儲存在索引節點表中。
資料:檔案的實際內容。可以是空的,也可以非常大,並且擁有自己的結構。

8、ext2檔案系統
ext2檔案系統的資料塊大小一般為1024B、2048B或4096B
ext2檔案系統採用的索引節點(inode):索引節點採用了多重索引結構,主要體現在直接指標和3個間接指標。直接指標包含12個直接指標塊,它們直接指向包含檔案資料的資料塊,緊接在後面的3個間接指標是為了適應檔案的大小變化而設計的。

e.g:假設資料塊大小為1024B,利用12個直接指標,可以儲存最大為12KB的檔案,當檔案超過12KB時,則要利用單級間接指標,該指標指向的資料塊儲存有一組資料塊指標,這些指標依次指向包含有實際資料的資料塊,假如每個指標佔用4B,則每個單級指標資料塊可儲存1024/4=256個數據指標,因此利用直接指標和單級間接指標可儲存1024*12+1024*256=268KB的檔案。

當檔案超過268KB時,再利用二級間接指標,直到使用三級間接指標。利用直接指標、單級間接指標、二級間接指標、三級間接指標可儲存的最大檔案大小為:1024*12+1024*256+1024*256*256+1024*256*256*256=16843020KB,約16GB,若資料塊大小為2048B,指標佔4B,則最大檔案大小為:2048*12+2048*512+2048*512*512+2048*512*512*512=268,960,792KB約268GB

若資料塊大小為4096B,指標佔4B,則最大檔案大小為:4096*12+4096*1024+4096*1024*1024+4096*1024*1024*1024=4,299,165,744KB,約4TB
注:命令tune2fs-l/dev/sda5可檢視檔案系統,ext2檔案系統最大檔名長度:255個字元

ext2檔案系統的缺點:
ext2在寫入檔案內容的同時並沒有同時寫入檔案meta-data,其工作順序是先寫入檔案的內容,然後等空閒時候才寫入檔案的meta-data。若發生意外,則檔案系統就會處於不一致狀態。在重新啟動系統的時候,linux會啟動fsk(filesystemcheck)的程式,掃描整個檔案系統並試圖修復,但不提供保證。

9、ext3檔案系統:
ext3基於ext2的程式碼,所以磁碟格式與ext2相同,使用相同的元資料。
ext2檔案系統無損轉化為ext3檔案系統:tune2fs-j/dev/sda6

日誌塊裝置(Journalingblockdevicelayer,JBD)完成ext3檔案系統日誌功能。JBD不是ext3檔案系統所特有的,它的設計目標是為了向一個塊裝置新增日誌功能。當一個檔案修改執行時,ext3檔案系統程式碼將通知JBD,稱為一個事務(transaction)。發生意外時,日誌功能具有的重放功能,能重新執行中斷的事務。

日誌中的3種資料模式:
1)data=writeback:不處理任何形式的日誌資料,給使用者整體上的最高效能
2)data=odered:只記錄元資料日誌,但將元資料和資料組成一個單元稱為事務(transaction)。此模式保持所句句的可靠性與檔案系統的一致性,效能遠低於data=writeback模式,但比data=journal模式快
3)data=journal:提供完整的資料及元資料日誌,所有新資料首先被寫入日誌,然後才被定位。意外發生過後,日誌可以被重放,將資料與元資料帶回一致狀態。這種模式整體效能最慢,但資料需要從磁碟讀取和寫入磁碟時卻是3種模式中最快的。

ext3檔案系統最大檔名長度:255個字元
ext3檔案系統的優點:可用性、資料完整性、速度、相容性

Ext4檔案系統 Ext4是一種針對ext3系統的擴充套件日誌式檔案系統, 為 Linux 開發的原始的擴充套件檔案系統(ext 或 extfs)的第四版。 Linux kernel 自 2.6.28 開始正式支援新的檔案系統 Ext4。Ext3 中部分重要的資料結構,而不僅僅像 Ext3 對 Ext2 那樣,只是增加了一個日誌功能而已。Ext4 可以提供更佳的效能和可靠性,還有更為豐富的功能。 相對於Ext3,特點如下: 1. 與 Ext3 相容。 執行若干條命令,就能從 Ext3 線上遷移到 Ext4,而無須重新格式化磁碟或重新安裝系統。原有 Ext3資料結構照樣保留,Ext4 作用於新資料,當然,整個檔案系統因此也就獲得了 Ext4 所支援的更大容量。 2. 更大的檔案系統和更大的檔案。 較之 Ext3 目前所支援的最大 16TB 檔案系統和最大 2TB 檔案,Ext4 分別支援 1EB(1,048,576TB, 1EB=1024PB, 1PB=1024TB)的檔案系統,以及 16TB 的檔案。 3. 無限數量的子目錄。 Ext3 目前只支援 32,000 個子目錄,而 Ext4 支援無限數量的子目錄。 4. Extents。 Ext3 採用間接塊對映,當操作大檔案時,效率極其低下。比如一個 100MB 大小的檔案,在 Ext3 中要建立 25,600 個資料塊(每個資料塊大小為 4KB)的對映表。而 Ext4 引入了現代檔案系統中流行的 extents 概念,每個 extent 為一組連續的資料塊,上述檔案則表示為“該檔案資料儲存在接下來的 25,600 個數據塊中”,提高了不少效率。 5. 多塊分配。 當 寫入資料到 Ext3 檔案系統中時,Ext3 的資料塊分配器每次只能分配一個 4KB 的塊,寫一個 100MB 檔案就要呼叫 25,600 次資料塊分配器,而 Ext4 的多塊分配器“multiblock allocator”(mballoc) 支援一次呼叫分配多個數據塊。 6. 延遲分配。 Ext3 的資料塊分配策略是儘快分配,而 Ext4 和其它現代檔案作業系統的策略是儘可能地延遲分配,直到檔案在 cache 中寫完才開始分配資料塊並寫入磁碟,這樣就能優化整個檔案的資料塊分配,與前兩種特性搭配起來可以顯著提升效能。 7. 快速 fsck。 以前執行 fsck 第一步就會很慢,因為它要檢查所有的 inode,而現在 Ext4 給每個組的 inode 表中都添加了一份未使用 inode 的列表,今後 fsck Ext4 檔案系統就可以跳過它們而只去檢查那些在用的 inode 了。 8. 日誌校驗。 日誌是最常用的部分,也極易導致磁碟硬體故障,而從損壞的日誌中恢復資料會導致更多的資料損壞。Ext4 的日誌校驗功能可以很方便地判斷日誌資料是否損壞,而且它將 Ext3 的兩階段日誌機制合併成一個階段,在增加安全性的同時提高了效能。 9. “無日誌”(No Journaling)模式。 日誌總歸有一些開銷,Ext4 允許關閉日誌,以便某些有特殊需求的使用者可以藉此提升效能。 10. 線上碎片整理。 儘管延遲分配、多塊分配和 extents 能有效減少檔案系統碎片,但碎片還是不可避免會產生。Ext4 支援線上碎片整理,並將提供 e4defrag 工具進行個別檔案或整個檔案系統的碎片整理。 11. inode 相關特性。 Ext4 支援更大的 inode,較之 Ext3 預設的 inode 大小 128 位元組,Ext4 為了在 inode 中容納更多的擴充套件屬性(如納秒時間戳或 inode 版本),預設 inode 大小為 256 位元組。Ext4 還支援快速擴充套件屬性(fast extended attributes)和 inode 保留(inodes reservation)。 12. 持久預分配(Persistent preallocation)。 P2P 軟體為了保證下載檔案有足夠的空間存放,常常會預先建立一個與所下載檔案大小相同的空檔案,以免未來的數小時或數天之內磁碟空間不足導致下載失敗。 Ext4 在檔案系統層面實現了持久預分配並提供相應的 API(libc 中的 posix_fallocate()),比應用軟體自己實現更有效率。 13. 預設啟用 barrier。 磁 盤上配有內部快取,以便重新調整批量資料的寫操作順序,優化寫入效能,因此檔案系統必須在日誌資料寫入磁碟之後才能寫 commit 記錄,若 commit 記錄寫入在先,而日誌有可能損壞,那麼就會影響資料完整性。Ext4 預設啟用 barrier,只有當 barrier 之前的資料全部寫入磁碟,才能寫 barrier 之後的資料。(可通過 "mount -o barrier=0" 命令禁用該特性。)

10、ReiserFS檔案系統
ReiserFS檔案系統是由HansReiser和他領導的開發小組共同開發的,整個檔案系統完全是從頭設計的,是一個非常優秀的檔案系統。也是最早用於Linux的日誌檔案系統之一。
ReiserFS的特點:先進的日誌機制
ReiserFS有先進的日誌(Journaling/logging)功能機制。日誌機制保證了在每個實際資料修改之前,相應的日誌已經寫入硬碟。檔案與資料的安全性有了很大提高。
高效的磁碟空間利用

Reiserfs對一些小檔案不分配inode。而是將這些檔案打包,存放在同一個磁碟分塊中。而其它檔案系統則為每個小檔案分別放置到一個磁碟分塊中。
獨特的搜尋方式。

ReiserFS基於快速平衡樹(balancedtree)搜尋,平衡樹在效能上非常卓越,這是一種非常高效的演算法。ReiserFS搜尋大量檔案時,搜尋速度要比ext2快得多。Reiserfs檔案系統使用B*Tree儲存檔案,而其它檔案系統使用B+Tree樹。B*Tree查詢速度比B+Tree要快很多。Reiserfs在檔案定位上速度非常快。在實際運用中,ReiserFS在處理小於4k的檔案時,比ext2快5倍;帶尾檔案壓縮功能(預設)的ReiserFS比ext2檔案系統多儲存6%的資料。
支援海量磁碟

ReiserFS是一個非常優秀的檔案系統,一直被用在高階UNIX系統上,可輕鬆管理上百G的檔案系統,ReiserFS檔案系統最大支援的檔案系統尺寸為16TB。這非常適合企業級應用中。

linux檔案系統分類優異的效能:由於它的高效儲存和快速小檔案I/O特點,使用ReiserFs檔案系統的PC,在啟動X視窗系統時,所花的時間要比在同一臺機器上使用ext2檔案系統少1/3。另外,ReiserFS檔案系統支援單個檔案尺寸為4G的檔案,這為大型資料庫系統在linux上的應用提供了更好的選擇。

相關推薦

linux檔案系統分類特點

1、linux檔案系統分配策略: 塊分配(blockallocation)和擴充套件分配(extentallocation): 塊分配:磁碟上的檔案塊根據需要分配給檔案,避免了儲存空間的浪費。但當檔案擴充時,會造成檔案中檔案塊的不連續,從而導致過多的磁碟尋道時間。 每一次檔

Linux檔案系統簡介軟連結硬連結的區別

Linux有著極其豐富的檔案系統,大體可分為如下幾類: 網路檔案系統:如nfs、cifs等; 磁碟檔案系統:如ext3、ext4等; 特殊檔案系統:如prco、sysfs、ramfs、tmpfs等; 一、Linux系統中一切皆檔案(除程序以外) Linux系統的頂層目錄結構如下 1 /

Linux檔案系統功能作用詳解

一、檔案系統 1、檔案結構 目錄:路徑對映 檔案:有邊界的,在磁碟的一段資料流,對資料可以做到按名存取 檔案系統:層級結構,目錄和檔案的一個組合層級結構,起點是根/,組成一個倒置的樹狀結構, /dev/pts/2: 最左側/:表示根目錄 其他的/:

Linux.ext4檔案系統 .inodeextent

最近在看相關內容,不過總是不是很系統,今日看到此部落格,感覺恍然大悟,作者寫的非常棒:轉載: https://blog.csdn.net/stringNewName/article/details/73740155 為表示對作者的尊敬,一字不動的敲擊! 最近在看ext4

Linux檔案系統系統結構

導讀 Linux系統一般有4個主要部分:核心、shell、檔案系統和應用程式。核心、shell和檔案系統一起形成了基本的作業系統結構,它們使得使用者可以執行程式、管理檔案並使用系統。 1. linux核心 核心是作業系統的核心,具有很多最基本功能,它負責管理系統的程序、記憶體、裝置驅動程式、檔案

Linux檔案系統----軟連結硬連結

更多Linux檔案系統知識:Linux檔案系統-----基礎IO Linux檔案系統的認知 1、Linux系統下一切皆檔案 現代作業系統為解決資訊能獨立於程序之外被長期儲存引入了檔案,檔案作為程序建立資訊的邏輯單元可被多個程序併發使用。在 UNIX 系統中,作業

linux檔案系統命令(6)---touchmkdir

一、目的         本文將介紹linux下新建檔案或目錄、刪除檔案或目錄命令。        touch可以新建檔案,mkdir用來新建目錄;rm用來刪除檔案或目錄。        本文將選取u

Linux原始碼目錄結構Linux檔案系統目錄結構

學習Linux也有一段時間了,具體來整理一下Linux原始碼的目錄結構和檔案系統的目錄結構,以便加深記憶。一、Linux原始碼的目錄結構首先上一張截圖,如下所示:再看各個檔案的介紹,借用一下其他資源。arch:這個為目錄是架構相關,裡面存放了許多CPU架構,比如arm,x86

Linux:Day8(上) 檔案系統掛載管理工具

檔案系統管理:   將額外檔案系統與根檔案系統某現存的目錄建立起關聯關係,進而使得此目錄做為其它檔案訪問入口的行為稱之為掛載;   解除此關聯關係的過程稱之為解除安裝;   把裝置關聯掛載點:Mount Point     mount   解除安裝時:可使用裝置,也可以使用掛載點     umou

Linux檔案系統分析之二(超級塊,i節點點陣圖邏輯塊點陣圖)

第二個扇區和第一個扇區一樣屬於引導塊,這裡就不列舉出其內容了,這裡的一塊是兩個扇區即1024B。接下來的一塊就是大名鼎鼎的超級塊了。其內容如下:00000400h: E0 01 A0 05 01 00 01 00 13 00 00 00 00 1C 08 10 ; ??..

製作燒寫嵌入式Linux檔案系統過程

1.解壓tar xvf createSdcard.qt4.tar.bz2檔案,在Ubuntu下插入SD卡。 2.執行./createSdCard.sh,即可在SD卡生成 bin 和 system 目錄,bin 裡面的內容不要更改; system 目錄裡的內容將來被 燒寫到

Linux 檔案系統的 Superblock, Inode, Dentry File

通過set number:386 struct ext3_super_block {386 struct ext3_super_block {387 /*00*/  __le32  s_inodes_count;         /* Inodes count */388         __le32  s_

WindowsLinux檔案系統的區別

    Windows,分盤,每個驅動器有自己的根目錄,形成的是多個樹並列的結構。    Linux,只有一個根目錄 / ,所有東西都是從這開始         /boot:放置linux啟動時用到的一些檔案,如核心檔案等         /bin,/user/bin:一般放

Linux深度攻略》一書,講述Linux日常系統管理服務器配置內容

linuxLinux深度攻略 首先從介紹Linux系統的安裝入手,講述了Linux系統管理和服務器配置兩部分的知識。系統管理方面內容有Linux系統簡介和安裝,Linux字符界面,目錄和文件管理,Linux常用命令,Shell編程,用戶和組群賬戶管理,權限、所有者和ACL,歸檔、壓縮和備份,軟件包管理,磁盤和

監控linux系統資源自定義進程的cpu 內存占用。

until 分享 == lena filename src end available eve 1 #coding=utf8 2 import time 3 import psutil 4 from pprint import pprint 5 6 fro

Linux檔案系統快照

Linux檔案系統快照 來自:http://www.mike.org.cn/blog/index.php?load=read&id=619 檔案系統快照 (File System Snapshots) 顧名思義就是在檔案系統上照張相片,也

Linux檔案系統層次標準

      前言 Linux檔案系統層次標準,英文全稱Filesystem Hierarchy Standard,英文簡稱FHS。 由於利用Linux來開發產品的團隊和個人實在太多了,如果每個人都以自己的想法來配置檔案放置的目錄,那麼將可能造成很多管理上的困擾。 在這

linux -- 檔案特殊許可權程序

<0>.建立目錄和檔案的預設許可權[umask] (1)umask ---> 檢視系統目錄預設預留許可權位;檔案預設預留許可權位 ---> 目錄許可權減去<111> (2)umask 007 ---> 臨時修改系統目錄預設預留許可權位 為 00

Linux 檔案系統的建立與掛載方法

轉自:https://blog.csdn.net/gz153016/article/details/51655994 Linux的  檔案系統的建立與掛載方法 1 Linux 檔案系統的建立 Linux的  作業系統在安裝伺服器時,安裝程式已經建立了自己的檔案系統,但是在使

Linux 檔案系統呼叫open七日遊(三)

接著上回,當對“.”和“..”處理完成後就直接返回進入下一個子路徑迴圈了,但如果當前子路徑不是“.”或“..”呢? 【fs/namei.c】 sys_open > do_sys_open > do_filp_open >&