全面解析文件文件系統

前言:

文件系統作為linux總最基礎的但愿。理解并深入了解文件系統對linux的學習有重要意義。我們從文件系統創建,構成以及工作流程幾個方面全方位的介紹文件系統的相關概念。

簡述:

一塊完整的磁盤經過分區后我們就可以通過格式化,根據我們的需求構建文件系統能使用的文件系統格式。傳統的文檔系統中,一個分區就只能夠被格式化為一個文件系統。所以我們可以說一個文件系統就是一個分區。但因為新技術的引用,我們在格式化時已經不再說是針對分區格式化了,通常我們可以把一個可被掛載的資料稱為一個文件系統。

文件系統內的文件除了文件本身的內容外,通常會包含許多與文件本身內容無關的屬性,例如文件的權限,時間參數,屬主等。我們把這種文件自身的屬性稱作元數據(metadata),把文件內容稱為數據(data.文件系統將這兩部分數據分別存放在不同的區域,文件屬性放置到inode(引用節點)中,實際數據則放置在data block區域中。另外還有一個超級區塊(superblock會記錄整個檔案系統的整體信息,包括inodeblock的總量,使用量和剩余量等。

磁盤的基本單位是扇區,每個扇區的大小為512個字節,如果文件系統以扇區為基本存儲單位,再給每個扇區進行編號,那么光是扇區的編號就占了好大的存儲空間,所以文件系統是block為最小存儲單位的,一個block典型的大小是1024字節或者4096字節,在磁盤格式化就得設置好,并且之后不可修改。一個block最多只能放置一個文件,即使這個文件只有1個字節。

Inodeblock都是有編號的。每個文件占用一個inode,inode所存放的元數據包含文件數據放置的block號碼。因為,如果能找到inode的話,那么自然就會知道這個檔案所放置資料的block號碼。當然也就能讀出該文件的實際數據了。

我們將inodeblock區塊用圖解來說明下,如下圖所示,文件系統先格式化出inodeblock的區域,假設某一文件的元數據放置在inode4號的位置,而這個inode記錄了文件數據實際存放在2,7,13,15這四個block號碼所對應的block中,這樣我們的文件系統就能一次把4block中的內容讀取出來。這種資料存取的方法我們稱為索引式文檔系統(indexed allocation)

filesystem-1.jpg

詳細描述:

通過前面的簡述,我們已經大概了解到linux文件系統相關的概念:inode,block,superblock。文件系統一開始就將inodeblock規劃好了,除非從新格式化(或者利用resize2fs等指令變更文件系統大?。?,否則inodeblock固定后就不變動。為管理的方便,inodeblock并沒有被放在一起。而是文件系統在格式化的時候基本就劃分為多個區塊群組(block group)的,并且每個區塊群組都有自己獨立的inode/block/superblock系統。Linux文件系統格式化后有點像下面這樣:

block group.jpg

每個區塊內容說明如下:

  • Data block

Data block是用來存放文件數據的地方。在linux文件系統中block的大小有1K,2K以及4K三種。在格式化時block的大小就固定了,且每個block都有編號,以方便inode的記錄。

  • Inode table(inode 表格)

Inode主要保存以下文件的元數據:

         文件類型,權限,UID,GID

         鏈接數(即硬鏈接數)

         該文件的大小和不同的時間戳

         指向磁盤上文件的數據塊指針

         定義文件特性的標記,如SetUID..

每個inode的大小固定為128 bytes(新的ext4xfs可設定到256bytes),每個文件都只占有一個inode。一個block的大小就幾k,而一個文件卻大的多,而inode記錄一條block號碼就要花掉4字節,那我們有如何用128字節的inode去記錄成千上萬的block號碼的記錄呢?為此我們的系統很聰明的將inode記錄block號碼的區域定義為12個直接,一個間接,一個雙重間接,一個三重間接。這是什么呢?我們把Inode的結構畫出來:

inode.jpg

  上圖左邊為inode本身(128字節),里面有12個直接指向block號碼的對照,這12個記錄都能直接取得block號碼。之后所謂的簡介就是拿一個block來當作記錄block號碼的記錄器,如果文件太大就會使用簡介的block來記錄號碼。同理,如果,文件持續長大,那么就會利用所謂的雙間接,第一個block僅再指出下一個記錄號碼的block在哪里,實際記錄的在第二個block當中。以此類推,三簡介就是利用第三層block來記錄號碼。


  • Superblock(超級區塊)

Superblock是記錄整個文件系統相關信息的地方,沒有superblock,就沒有整個文件系統了,其中的信息主要包含:blockinode的總量,未使用的數量,blockinode的大小,文件系統的各種時間,以及文件系統被掛載與否的狀態標識。

一個文件系統中僅有一個superblock,除了第一個block group內含有碎片而block之外,后續的block group不一定含有superblock,即使有,也僅僅是作為第一個block groupsurperblock的備份而已。


  • Filesystem Description(文件系統描述說明)


這個區段可以描述每個block group的開始與結束的block號碼,以及說明每個區段(superblock,bitmap,inodemap,data block)分別介于哪兩個block號碼之間。


  • Block bitmap(區塊對照表)和inode bitmapinode對照表)


分別用來記錄使用和未使用的block號碼和inode號碼。當我們使用或者釋放blockinode時就可以通過這個兩個對照表進行查看。

目錄

linux文件中有一個特殊的文件就是目錄文件,首先,不要被windows中文件夾的說法而擾亂。目錄文件的內容就是一張目錄下所有文件的文件名與inode號碼的對照表。

目錄.jpg

當我們打開一個目錄下名為 文件1的文件時,系統通過目錄的對照表找到文件的inode號,通過inode號獲取inode信息,最后根據Inode信息找到文件數據所在的區域,讀出數據。所以目錄并不是一個盒子把文件都裝在里面,而是一個文件的清單,然后通過這個清單找到文件。

總結:

   關于文件系統的基本概念就先講到這里,而之后文件的權限,又是一大塊內容,得分單獨博客進行說明。文件系統做為linux的基礎,理解其各個基礎概念是學習linux所必須的基礎。

原創文章,作者:M21-陜西-李賢,如若轉載,請注明出處:http://www.www58058.com/53191

(0)
M21-陜西-李賢M21-陜西-李賢
上一篇 2016-11-14
下一篇 2016-11-14

相關推薦

  • Linux用戶及組的管理相關知識

    Linux用戶及組的管理相關知識 1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 ~]# who | cut -d " " -f1 | sort -u 2、取出最后登錄到當前系統的用戶的相關信息。 ~]# last -x | head -1 3、取出當前系統上被用戶當作其默認shell的最多的那…

    Linux干貨 2016-10-05
  • Liunx權限的管理

    一、權限 獲取某種資源的能力。對于Liunx而言,一切皆文件。所以,對于Liunx的權限定義,也就是定義文件被不同用戶訪問能力的過程。 權限分為三種:r、w、x 文件 r:查看文件內容 w:修改文件內容 x:可以將文件啟動運行 目錄 r:可以使用ls命令查看目錄中的文件名 w:可以在目錄中創建或刪除文件(能否刪除文件,取決于用戶對目錄的寫權限 x:可以cd到…

    Linux干貨 2015-04-03
  • linux文件系統上的權限

    文件系統上的權限是指文件系統上的文件和目錄的權限,主要針對三類對象進行的(訪問者)進行的定義: 針對文件來說 r 使用工具cat nano去看文件里面內容的權限 w 可以修改文件的內容 x 二進制程序以及腳本需要發起系統調用,去啟動為一個進程 針對目錄來說 r 是否可以查看目錄里面的內容 有r權限的話 可以使用ls -l w 對目錄里面是否可以創建文件或者目…

    Linux干貨 2017-04-01
  • linux時間

    linux有兩個時間:     系統時間和硬件時間 系統時間: 最簡單的使用date命令顯示當前系統的時間,命令行輸入date。 # date Thu Jun  2 17:11:48 CST 2016 date的具體使用方式:     1. date格式顯示:date …

    Linux干貨 2016-06-03
  • Linux發展史

    Linux發展史 一、歷史 (一)、Unix 1、Unix操作系統是一個強大的多用戶、多任務操作系統,支持多種處理器架構。 2、最早由KenThompson(湯普遜)、Dennis Ritchie(丹尼斯·里奇,C語言之父,Unix之父)和Douglas McIlroy(麥克羅伊,程式設計師)于1969年在AT&T的貝爾實驗室開發。 3、目前它的商標…

    Linux干貨 2016-10-14
  • 8.5文本處理工具及正則表達式

    一、各種文本工具     文件查看     命令:cat,tac,rev         cat optiong file       &n…

    Linux干貨 2016-08-10
欧美性久久久久