Ext4文件系統大家都非常熟悉了,也是一個老牌的文件系統,它在2006年11月隨2.6.19內核初次發布,到2008年12月25日,Linux Kernel 2.6.28的正式版本發布,Ext4文件系統基本穩定,也稱為很多發行版的默認文件系統。算起來到現在也有十幾年了。
我們經常使用Ext4文件系統,不管是普通辦公用的筆記本或者PC,還是伺服器,很多根文件系統就是Ext4,但Ext4到底相對於Ext2和Ext3有哪些新特性,估計大家不一定能夠注意到,下面本文將給大家做一個基本的介紹,希望對以後的開發能夠有所幫助。
Ext3兼容
Ext4文件系統可以兼容之前的版本,也就是用戶如果已經用Ext3格式化了磁碟,那麼用戶也可以在不損失數據的情況下升級到Ext4文件系統。向前兼容極大的方便了已有用戶的升級,避免數據的導入導出可能引入的風險。向前兼容的原理很簡單,就是數據在磁碟的布局與Ext3保持一致,並且數據結構也保持一致即可。
Extent
Extent是新一代文件系統支持的特性,其特點是通過其位置和長度表示文件內的數據,Ext4也支持該特性。在Ext2及Ext3中都是通過間接塊的方式存儲文件內的數據的,因此文件的大小和訪問性能各方面都比較差。如圖1為Ext3文件系統文件內數據存儲的方式。在文件對應的inode節點中有一個15個元素的數組,其中前12個元素存儲的是文件數據在磁碟的地址,第13個元素存儲的地址所指向磁碟數據存儲的不是文件內數據,而是指向下一級的地址,該地址才是文件內的數據。也就是在該數組的元素和實際存儲文件數據的磁碟塊之間多出一個磁碟塊,用於存儲磁碟的地址,而這個磁碟塊就是間接塊。以此類推,第14個元素中間有2級間接塊,第15個元素有3級間接塊。
鑒於上述原理,由於文件系統中塊的大小是確定的,而地址長度和數組元素也是確定的,因此就可以確定文件的最大大小。同時,由於每個地址指向的就是一個塊,因此這種方式的特點是所有塊大小是一樣的。這樣就有一個缺點,如果用戶寫入的是遠大於文件系統塊的數據,Ext3還是要切割為指定大小的塊,而且還得計算地址,因此效率會非常不好。
TAG:Linux內核 | ext4 | 文件系統 |