linux文件系統(tǒng)

了解

Windows98以前的操作系統(tǒng)主要使用的是FAT,Windows 2000以后的版本使用NTFS文件系統(tǒng),至于Linux的正統(tǒng)文件系統(tǒng)為ext2

Linux文件系統(tǒng)

一個可被掛載的數(shù)據(jù)為一個文件系統(tǒng)

  • 超級區(qū)塊:記錄此文件系統(tǒng)的整體信息,包括inode與數(shù)據(jù)區(qū)塊的總量,使用量,剩余量以及文件系統(tǒng)的格式與相關信息等。
  • inode:記錄文件的屬性,一個文件占用一個inode,同時記錄此文件的數(shù)據(jù)所在的數(shù)據(jù)區(qū)塊的號碼。
  • 數(shù)據(jù)區(qū)塊:實際記錄文件的內(nèi)容,若文件太大時,會占用多個區(qū)塊。

區(qū)塊群組

當一個文件系統(tǒng)過大時,ext2文件系統(tǒng)格式化時基本上是區(qū)分為多個區(qū)塊群組,每個區(qū)塊群組都有獨立的inode,數(shù)據(jù)區(qū)塊,超級數(shù)據(jù)區(qū)塊系統(tǒng)。

  • 數(shù)據(jù)區(qū)塊
    ①原則上,區(qū)塊的大小與數(shù)量在格式化完成后,就不能再修改。
    ②每個區(qū)塊最多只能放置一個文件的數(shù)據(jù)。
    ③如果文件大于區(qū)塊的大小,則一個文件就會占有多個區(qū)塊數(shù)量
    ④若文件小于區(qū)塊,則該區(qū)塊的剩余容量就不能夠再被使用了(磁盤空間會浪費)
block大小 1kb 2kb 4kb
最大單一文件限制 16GB 256GB 2TB
最大文件系統(tǒng)限制 2TB 8TB 16TB
  • inode表
    1.內(nèi)容
    ①該文件的讀寫屬性
    ②該文件的擁有著與用戶組
    ③該文件的大小
    ④該文件建立或狀態(tài)改變的時間(ctime)
    ⑥最后一次讀取的時間(atime)
    ⑦最近修改內(nèi)容的時間(mtime)
    ⑧定義文件特性的表示(SUID,SGID,SBIT)
    ⑨該文件真正內(nèi)容的指向
  1. 特點
    ①每個inode大小均固定為128B(新的ext4與xfs可設置到256B),記錄一個數(shù)據(jù)區(qū)塊為4B。
    ②每個文件都僅會占用一個inode
    ③文件系統(tǒng)能夠建立的文件數(shù)量與inode的數(shù)量有關
    ④系統(tǒng)讀取文件時需要先找到inode,并分析inode所記錄的權限與用戶是否符合,若符合才能夠讀取區(qū)塊的內(nèi)容。
    ⑤為擴大支持單個文件的大小,將inode記錄區(qū)塊號碼的區(qū)域定義為12個直接,1個間接,一個雙間接,一個三間接。
  • 超級區(qū)塊
    ——超級區(qū)塊是記錄整個文件系統(tǒng)相關信息的地方,沒有超級區(qū)塊,就沒有這個文件系統(tǒng)
    ①數(shù)據(jù)區(qū)塊與inode的總量
    ②未使用與已使用的inode與數(shù)據(jù)區(qū)塊的數(shù)量
    ③數(shù)據(jù)區(qū)塊與inode的大小(block為1,2,4k,inode為128B或256B)
    ④文件系統(tǒng)的掛載時間、最近一次寫入數(shù)據(jù)的時間、最近一次檢驗磁盤的時間等文件系統(tǒng)的相關信息。
    ⑤一個有效位數(shù)值,若此文件系統(tǒng)已被掛載,則有效位為0,若未被掛載,則有效位為1;
  • 文件系統(tǒng)描述性說明
    描述每個區(qū)塊群組的開始與結束的區(qū)塊,以及說明每個區(qū)段分別介于哪一個區(qū)塊之間。
  • 區(qū)塊對照表
    記錄使用與未使用的區(qū)塊的號碼
  • inode對照表
    記錄使用與未使用的inode號碼

dumpe2fs:查詢ext系列超級區(qū)塊信息的命令

目錄文件與一般文件在文件系統(tǒng)中是如何記錄數(shù)據(jù)的?

  • 目錄
    當我們在linux下的文件系統(tǒng)建立一個目錄時,文件系統(tǒng)會分配一個inode與至少一個數(shù)據(jù)區(qū)塊給該目錄。其中inode記錄該目錄的相關權限與屬性,并可記錄分配到那塊數(shù)據(jù)區(qū)塊的號碼,而數(shù)據(jù)區(qū)塊則是記錄在這個目錄下的文件名與該文件名占用的inode號碼數(shù)據(jù)。
  • 文件
    當我們在linux下的ext2建立一個一般文件時,ext2會分配一個inode與相對于該文件大小的數(shù)據(jù)區(qū)塊數(shù)量給該文件。
  • 目錄樹讀取
    以讀取/etc/passwd為例
    ①根目錄/的inode
    ②/的數(shù)據(jù)區(qū)塊
    ③etc/的inode
    ④etc/的數(shù)據(jù)區(qū)塊
    ⑤passwd的inode
    ⑥passwd的數(shù)據(jù)區(qū)塊

新增一個文件時,文件系統(tǒng)的操作

①先確定用戶對于欲增加文件的目錄是否具有w和x的權限,若有的話才可以新增。
②根據(jù)inode對照表找到?jīng)]有使用的inode號碼,并將新文件的權限/屬性寫入。
③根據(jù)區(qū)塊對照表找到?jīng)]有使用的數(shù)據(jù)區(qū)塊的號碼,并將實際的數(shù)據(jù)寫入?yún)^(qū)塊中,且更新inode區(qū)塊指向數(shù)據(jù)區(qū)塊。
④將剛寫入的inode與數(shù)據(jù)區(qū)塊同步更新inode對照表,區(qū)塊對照表,并更新超級區(qū)塊的內(nèi)容。
inode區(qū)塊與數(shù)據(jù)區(qū)塊稱為數(shù)據(jù)存放區(qū)
inode對照表,區(qū)塊對照表和超級區(qū)塊被稱為元數(shù)據(jù)(因為每次新增,修改,刪除時都會影響這三部分的數(shù)據(jù))
e2fsck:強制進行數(shù)據(jù)一致性的檢查

linux內(nèi)存與磁盤的異步處理方式

當系統(tǒng)加載一個文件到內(nèi)存后,如果該文件沒有被修改,則在內(nèi)存區(qū)段的文件數(shù)據(jù)會被設置成clean,但如果內(nèi)存中的文件被修改,在內(nèi)存區(qū)段的文件數(shù)據(jù)就會被設置成dirty,此時所有的操作都還在內(nèi)存中執(zhí)行,并沒有寫入到磁盤中。系統(tǒng)會不定時的將設置為dirty的數(shù)據(jù)寫回磁盤,以保持磁盤與內(nèi)存數(shù)據(jù)的一致性。sync命令手動強制寫入磁盤

linux系統(tǒng)上的文件系統(tǒng)與內(nèi)存的關系

①系統(tǒng)會將常用的文件數(shù)據(jù)放置到內(nèi)存的緩沖區(qū),以加速文件系統(tǒng)的讀寫操作。
②Linux的物理內(nèi)存最后都會被用光,這是正?,F(xiàn)象。
③可以手動使用sync命令來強制內(nèi)存中設置為Dirty的文件回寫到磁盤中。
④正常關機時,關機命令會主動調(diào)用sync將內(nèi)存中數(shù)據(jù)回寫入磁盤中。
⑤若不正常關機,由于數(shù)據(jù)尚未回寫入磁盤中,因此啟動后可能會花很多時間進行磁盤校驗,甚至導致文件系統(tǒng)的損壞。

xfs文件系統(tǒng)的配置

xfs文件系統(tǒng)在數(shù)據(jù)的分布上,規(guī)劃為三部分,數(shù)據(jù)區(qū)、文件系統(tǒng)活動登錄區(qū)、實時運行區(qū)

  • 數(shù)據(jù)區(qū)
    xfs的數(shù)據(jù)區(qū)與ext系列一樣,包含inode、數(shù)據(jù)區(qū)塊、超級數(shù)據(jù)區(qū)塊等數(shù)據(jù),也分為多個存儲區(qū)群組分別放置文件系統(tǒng)所需要的數(shù)據(jù)。每個存儲區(qū)分組都包含①整個文件系統(tǒng)的超級區(qū)塊②剩余空間的管理機制③inode的分配與追蹤。inode與區(qū)塊都是系統(tǒng)需要時才動態(tài)配置產(chǎn)生的,所以格式化操作非???/strong>
  • 文件系統(tǒng)活動登錄區(qū)
    用來記錄文件系統(tǒng)的變化。文件的變化會在這里記錄下來,直到該變化完整的寫入到數(shù)據(jù)區(qū),該條記錄才會被結束。如果文件系統(tǒng)由于某些緣故而損壞時,系統(tǒng)會拿這個登錄區(qū)塊進行檢驗,看看系統(tǒng)掛掉之前,文件系統(tǒng)正在運行啥操作,借以快速地修復文件系統(tǒng)。
  • 實時運行區(qū)
    當有文件要被建立時,xfs會在這個區(qū)段里面找一個或數(shù)個的extent區(qū)塊,將文件放置在這個區(qū)塊內(nèi),等到分配完畢后,再寫入到數(shù)據(jù)區(qū)的inode與數(shù)據(jù)區(qū)塊中。
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容