Linux25:文件系統特點與XFS文件系統


文件系統特點與XFS文件系統

支持的文件系統與VFS

通過查看下列目錄可以知道linux支持的文件系統:

ls -l /lib/modules/$(uname -r)/kernel/fs

查看系統目前已加載到內存中支持的文件系統:

cat /proc/filesystems,這個命令有時在分區結束后信息並不更新,此時應該重啟或執行partprobe命令,它可以更新核心的分區表信息。

整個linux的系統都是通過一個名為Virtual Filesystem Switch的功能去讀取文件系統的,對於不同的文件系統,使用者無需指定讀取方式,而VFS會自動做好讀取的准備。

日志式文件系統

如果在寫入文件系統時突然發生斷電的情況,那么可能就會出現實際數據與中介數據不一致的情況。在早期的Ext2中,系統會在重新啟動時根據文件系統的狀態決定是否強制檢查數據一致性,這種一致性的檢查依賴一個叫e2fsck的程序,這個檢查非常耗時。

日志式文件系統Journaling filesystem就可以輕松解決這個問題,它在文件系統中規划處一個區塊,專門記錄各類修改步驟,也就是日志記錄區塊,每次要修改數據時先在這個位置寫入修改步驟,然后寫入完成后又在該區塊寫入數據更新完成的日志,這樣當數據發生問題時,就可以通過檢查日志記錄區塊來修復。

在ext4系統中,執行dumpe2fs可以看到一個叫Journal inode的信息,這個區塊就是日志記錄區塊。

異步處理asynchronously

所有的文件都需要加載進內存才能處理,當系統加載到一個文件到內存后,如果該文件沒有被改動過,就稱內存中的文件數據為clean的,如果內存中的文件數據被改動了,就稱其為dirty的,此時修改過的文件數據可能還沒有寫入磁盤,系統會不定時的將臟數據寫入磁盤,或者也可以手動執行sync命令強迫寫入。

sync命令:數據同步寫入磁盤

這個命令會把尚未寫入磁盤的內存全部同步到磁盤,所以在重啟和關機前執行該命令特別重要(目前的關機和重啟已經自動執行該指令了,但是不正常關機就不會順利執行該命令,可能會造成多余的磁盤檢驗,更嚴重可能導致文件系統的損毀。),root用戶執行該命令會同步所有數據,普通用戶使用只會同步自己的數據。

XFS文件系統簡介

CentOS7開始,預設的文件系統就由原本的EXT4變成XFS文件系統了,這主要是因為EXT文件系統家族對於文件格式化處理的方法,是采用預先規划出所有的inode/block/metadata,然后未來系統可以直接取用,這種方法在磁盤容量不大的時候還可以,但隨着磁盤容量到達TB級,格式化將耗費大量時間,而XFS文件系統更適合高容量磁盤。

XFS是一個日志式文件系統,在資料的分布上主要分為三個部分:資料區(data section)、文件系統活動登錄區(log section)和實時運作區(realtime section)

通過xfs_info 掛載點可以查看xfs文件系統的情況。

資料區(data section)

這部分包括inode/data block/super block等數據,和EXT家族高度一致,和EXT的block group類似,也是分為多個儲存區群組(allocation groups)來分別放置文件系統的數據。且inode和block都是系統用到的時候動態分配的,所以格式化的速度很快。

XFS的block和inode有更多不同的容量可以設定,block容量可以設置為512bytes-64K,但是由於linux頁面文件pagesize的原因,最高只能設置為4K,而inode可以設置256bytes-2M,一般256bytes就足夠使用。

文件系統活動登錄區(log section)

這個區域的作用類似日志區,該區塊數據的讀寫是非常頻繁的,xfs可以設置外部的磁盤作為日志區,如果將SSD磁盤作為日志區,那么記錄的速度就會很快。

實時運作區(realtime section)

當有文件要建立時,xfs會在這個區塊里找到一個或數個extent區塊,將文件放在該區塊內,等待存儲分配完畢后,再寫入inode和block中。這個extent區塊的大小在格式化時就得指定,一般不會修改。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM