亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux下常見文件系統的示例分析

發布時間:2021-10-27 10:34:49 來源:億速云 閱讀:204 作者:小新 欄目:系統運維

這篇文章主要介紹了Linux下常見文件系統的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

歷史

文件系統創建者創建時間最開始支持的平臺
ext2Rémy Card1993Linux,Hurd
XFSSGI1994IRIX, Linux, FreeBSD
ext3Dr. Stephen C. Tweedie1999Linux
ZFSSun2004Solaris
ext4眾多開發者2006Linux
BtrfsOracle2007Linux

從創建時間可以看出他們所處的不同時代,因為Btrfs的實現借鑒自ZFS,所以這里也將ZFS列出來作為參考。

大小限制

文件系統***文件名長度***文件大小***分區大小
ext2255 bytes2 TB16 TB
ext3255 bytes2 TB16 TB
ext4255 bytes16 TB1 EB
XFS255 bytes8 EB8 EB
Btrfs255 bytes16 EB16 EB

***文件和分區大小受格式化分區時所采用的塊大小(block size)所影響,塊越大,所支持的***文件和分區越大,也越可能浪費磁盤空間,上表列出的數據基于4K的塊大小。

代碼規模

從代碼規模可以看出文件系統的功能豐富程度以及復雜度,下面列出的數據來自于kernel-4.1-rc8,只是簡單的用wc -l來統計,沒有過濾空行、注釋等。

文件系統源文件(.c)頭文件(.h)
ext283631016
ext3164961567
ext4446504522
XFS8960515091
Btrfs1052547933
  • Btrfs還在快速的開發過程中,代碼行數可能還有比較大的變化

  • XFS和Btrfs都使用了B-tree

ext2

ext的優點是比較簡單,文件比較少時性能較好,比較適合文件少的場景,主要缺點如下

  • inode的數量是固定不變的,在格式化分區的時候可以指定inode和數據塊所占空間的比例,但一旦格式化好,后續就沒法再改變了

  • 當塊大小為4K時,單個文件大小不能超過2TB,分區大小不能超過16TB(目前硬盤大小一般都只有幾TB,所以也不是什么大問題,)

  • 一個目錄下最多只能有32000個子目錄

  • 由于目錄里面存儲的文件和子目錄都是以線性方式來組織的,所以遍歷目錄效率不高,尤其當目錄下文件個數達到10K以上規模的時候,速度會明顯的變慢

  • 當底層的磁盤分區空間變大時(使用LVM時很常見),ext2沒法動態的擴展來使用增加的空間

  • 沒有日志(Journal)功能,所以數據的安全性不高

ext3

ext3在ext2的基礎上實現了下面幾個功能,其它的都保持不變,即ext2的缺點ext3也有

  • 支持日志(Journal)功能,數據的安全性較ext2有很大的提高

  • 當底層的分區空間變大時,ext3可以自動擴展來使用增加的空間

  • 使用HTree來組織目錄里面的文件和子目錄,使目錄下的文件和子目錄數不再受性能限制(數量超過10K也不會有性能問題)

ext4

ext4借鑒了當前成熟的一些文件系統技術,在ext3上增加了一些功能,并且對性能做了一些改進,主要變化如下

  • 當塊大小為4K時,支持的***文件和***分區大小分別達到了16TB和1EB

  • 不再受32000個子目錄數的限制,支持不限數量的子目錄個數

  • 支持Extents,提高了大文件的操作性能

  • 內部實現上支持一次分配多個數據塊,較ext3的性能有所提高

  • 支持延時分配(即支持fallocate函數)(fallocate是libc的函數,在不支持該功能的文件系統上,libc會創建一個占用磁盤空間文件)

  • 支持在線快速掃描

  • 支持在線碎片整理(單個文件或者整個分區)

  • 日志(Journal)支持校驗碼(checksum),數據的安全性進一步提高

  • 支持無日志(No Journaling)模式(ext3不支持該功能),這樣就和ext2一樣,消除了寫日志對性能的影響

  • 支持納秒級的時間戳

  • 記錄了文件的創建時間,由于相關的應用層工具還不支持,所以只能通過debug的方式看到文件的創建時間

這里是一個查看文件/etc/fstab創建時間的例子(文件存在/dev/sda1分區上):

dev@ubuntu:~$ ls -i /etc/fstab 10747906 /etc/fstab dev@ubuntu:~$ sudo debugfs -R 'stat <10747906>' /dev/sda1 Inode: 10747906   Type: regular    Mode:  0644   Flags: 0x80000 Links: 1   Blockcount: 8 ctime: 0x5546dc54:6e6bc80c -- Sun May  3 22:41:24 2015  atime: 0x55d1b014:8bcf7b44 -- Mon Aug 17 05:57:40 2015  mtime: 0x5546dc54:6e6bc80c -- Sun May  3 22:41:24 2015 crtime: 0x5546dc54:6e6bc80c -- Sun May  3 22:41:24 2015 Size of extra inode fields: 28 EXTENTS: (0):46712815

Extents: 在最開始的ext2文件系統中,數據塊都是一個一個單獨管理的,inode中存有指向數據塊的指針,文件占用了多少個數據塊,inode里面就有多少個指針(多級),想象一下一個1G的文件,4K的塊大小,那么需要(1024 * 1024)/4=262144個數據塊,即需要262144個指針,創建文件的時候需要初始化這些指針,刪除文件的時候需要回收這些指針,影響性能。現代的文件系統都支持Extents的功能,簡單點說,Extent就是數據塊的集合,以前一次分配一個數據塊,現在可以一次分配一個Extent,里面包含很多數據塊,同時inode里面只需要分配指向Extent的指針就可以了,從而大大減少了指針的數量和層級,提高了大文件操作的性能。

inode數量固定: 在ext2/3/4系列的文件系統中,inode的數量都是固定的,壞處是如果存很多小文件的話,有可能造成inode被用光,但磁盤還有很多剩余空間無法被使用的情況,不過它也有一個好處,就是一旦磁盤損壞,恢復起來要相對簡單些,因為數據在磁盤上布局相對要固定簡單。

xfs

和ext4相比,xfs不支持下面這些功能

  • 不支持日志(Journal)校驗碼

  • 不支持無日志(No Journaling)模式

  • 不支持文件創建時間

  • 不支持數據日志(data journal),只有元數據日志(metadata journal)

但xfs有下面這些特性

  • 支持的***文件和分區都達到了8EB

  • inode動態分配,從而不受inode數量的限制,再也不用擔心存儲大量小文件導致inode不夠用的問題了。

  • 更大的xattr(extended attributes)空間,ext2/3/4及btrfs都限制xattr的長度不能超過一個塊(一般是4K),而xfs可以達到64K

  • 內部采用Allocation groups機制,各個group之間沒有依賴,支持并發操作,在多核環境的某些場景下性能表現不錯

  • 提供了原生的dump和restore工具,并且支持在線dump

btrfs

btrfs是一個和ZFS類似的文件系統,支持的功能非常多,據說將來會替換ext4成為Linux下的默認文件系統。這里列舉一些重要的功能

  • 支持的***文件和分區達到了16EB

  • 支持COW(copy on write)

  • 針對小文件和SSD做了優化

  • inode動態分配

  • 支持子分區(Subvolumes),子分區可以單獨掛載

  • 支持元數據和數據的校驗(crc32)

  • 支持壓縮,去重

  • 支持多個磁盤和分區,可動態擴展

  • 支持LVM,RAID的功能(有了btrfs,就不再需要lvm和軟raid了)

  • 增量備份和恢復

  • 支持快照

  • 將ext2/3/4轉換成btrfs(反過來不行)

btrfs***的缺點就是由于其COW的實現方式,導致碎片化問題比較嚴重,不太適合頻繁寫的場景,比如數據庫、虛擬機的磁盤文件等。不過大部分場合不需要擔心,btrfs有在線的碎片整理工具。

如何選擇

下表僅供參考

文件系統適用場景原因
ext2U盤U盤一般不會存很多文件,且U盤的文件在電腦上有備份,安全性要求沒那么高,由于ext2不寫日志(journal),所以寫U盤性能比較好。當然由于ext2的兼容性沒有fat好,目前大多數U盤格式還是用fat
ext3對穩定性要求高的地方有了ext4后,好像沒什么原因還要用ext3,ext4現在的問題是出來時間不長,還需要一段時間變穩定
ext4小文件較少ext系列的文件系統都不支持inode動態分配,所以如果有大量小文件需要存儲的話,不建議用ext4
xfs小文件多或者需要大的xttr空間,如openstack swift將數據文件的元數據放在了xttr里面xfs支持inode動態分配,所以不存在inode不夠的情況,并且xttr的***長度可以達到64K
btrfs沒有頻繁的寫操作,且需要btrfs的一些特性btrfs雖然還不穩定,但支持眾多的功能,如果你需要這些功能,且不會頻繁的寫文件,那么選擇btrfs

另外,ext系列文件系統內部結構相對簡單一些,出問題后恢復相對容易。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Linux下常見文件系統的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

锡林浩特市| 锦屏县| 东丰县| 兴化市| 许昌市| 太湖县| 铁岭县| 沽源县| 潮安县| 靖安县| 巢湖市| 陕西省| 车险| 巩义市| 广河县| 靖安县| 金山区| 西安市| 固安县| 罗定市| 曲麻莱县| 左贡县| 苏尼特右旗| 雷山县| 呼和浩特市| 四川省| 昭觉县| 射洪县| 儋州市| 马尔康县| 南川市| 乐业县| 荥经县| 来宾市| 枣庄市| 团风县| 黑山县| 东乡族自治县| 吉木萨尔县| 莎车县| 舞钢市|