1,磁盤組成和分區介紹node
(1)組成:圓形的盤片(主要記錄數據)、機械手臂與機械手臂上的磁頭(主要讀寫盤片上的數據)、主軸馬達、能夠轉動盤片、讓機械手臂的磁頭在盤片上讀寫數據、扇區(最小的物理存儲單位,每一個扇區爲512bytes)、將扇區組成一個組成一個圓環那就是柱面(柱面是分區的最小單位),第一個扇區很重要,裏面有硬盤主引導記錄以及分區表,其中MBR佔有446bytes,partition table則佔有64bytes.異步
(2)所謂的磁盤分區是指:告訴操做系統我這塊磁盤在此分區訪問的區域是由A柱面到B柱面之間的塊,那麼指定分區的柱面範圍是記錄在哪裏呢?就是在第一個扇區的分區表中,可是由於分區表僅僅只有64bytes,所以最多智能記錄四條分區的記錄,這四條記錄咱們稱爲主分區和擴展分區,其中擴展分區還能夠再分出邏輯分區(logical),而被格式化的則僅有分區與邏輯分區。其中,IDE硬盤最多有59個邏輯分區,SATA硬盤則有11個邏輯分區學習
2,文件系統的特性spa
(1)格式化分區:給定一個文件系統操作系統
(2)文件系統:文件系統一般或將這兩部分的數據分別存放再不一樣的塊,權限、屬性和記錄此文件的block號碼放在inode中(一個文件一個inode),至於實際數據則放置到date block塊中(文件太大時會佔用多個block),另外還有一個超級塊(superblock)會記錄整個文件系統的總體信息,包括inode與block的總量、使用量、剩餘量等等。3d
(3)因爲每一個inode與block都有編號,而每一個文件都會佔用一個inode,inode內則會有文件數據放置的block號碼,所以,咱們能夠知道的是,若是可以找到文件的inode的話,那麼天然就有知道之歌文件所放置數據的block號碼,固然也就可以讀出該文件的實際數據了。日誌
3,關於Linux的Ext2文件系統blog
(1)Ext2文件系統再格式化的時候就是區分多個塊組,每一個塊組都有獨立的inode/block/superblock系統,在整個規劃中,文件系統也就是分區的最前面有一個啓動扇區(boot sector),這個啓動扇區能夠安裝引導裝載程序。ip
示意圖以下內存
每一個block-group示意圖:
a,data block(數據塊)
數據塊是用來存放數據的地方,每個block有特定的大小,能夠在格式化的時候來指定大小,大小分別是1KB、2KB、4KB。
因爲block大小的區別,會致使文件系統可以支持的最大磁盤容量與最大單一文件容量並不相同。
以下表示的大小:
分析一下,inode/block與文件大小的關係,inode的大小隻有128bytes,記錄一個block號碼須要花掉4byte,系統將inode記錄block號碼的區域定義爲12個直接、一個間接與一個三間接記錄區
inode有12個直接指向block號碼,所謂的間接就是再拿一個block來記錄block號碼,以此類推
以最小的block大小1KB來講明最大單一文件限制
直接指向:12x1K=12K
間接指向:256x1K=256k (256的來源就是1KB=1000byte,1000byte / 4byte = 256 個)
雙間接指向:256 x 256 x 1K = 256^2K
三間接指向:256 x 256 x 256 x1K = 256^3K
總額:12+256+256^2+256^3=16G
以上方法不能用再2K及4K的block大小的計算中,由於大於2K的block將會收到Ext2文件系統自己的限制,因此計算結果會不太符合。
b,inodetable
inodetable主要記錄文件屬性以及該文件的實際數據是放置再哪幾號block內!屬性包括:文件的訪問模式、該文件的全部者與組、該文件的大小、該文件建立或狀態改變的時間、最近一次的讀取時間、最近一次修改的時間、每一個文件會佔用一個inode,建立文件的數量與inode的數量有關;系統讀取文件時須要先找到inode,並分析Inode所記錄的權限與用戶是否符合,若符合才能開始實際讀取block內容。
c,superblock
記錄整個文件系統的地方,好比:block和inode的總量、未使用與已使用的inode/block數量、block與inode大小(block爲1K、2K、4K,inode爲128bytes)等等
d,file system description (文件系統描述說明)
描述每一個block、group的開始與結束的block號碼,以及說明每一個區段分別介於哪一個block號碼之間(能夠經過獨門dumpe2fs命令查看)
e,block bitmap (block 對照表)
記錄使用與未使用的block號碼
f,inode bitmap (inode 對照表)
記錄使用與未使用的inode號碼
關於Linux的命令。以上的每一個區段與superblock的信息均可以使用dumpe2fs命令去查詢
4,關於文件系統與目錄樹的關係
首先了解到每個文件(不論是目錄文件仍是通常文件)都會佔用一個inode,且能夠依據文件內容的大小來分配多個block給該文件使用
(1)目錄:當在Ext2系統中,新建一個目錄時,Ext2會分配一個inode與至少一塊block給該目錄,其中,inode記錄該目錄的相關權限與屬性,而且記錄分配到那塊的block號碼;而block則是記錄在這個目錄下的文件名與該文件名佔用的inode號碼數據,若是一個分區使用的block大小爲4K,所以每個目錄都是4K的倍數。若是某個目錄下面文件數太多會致使一個block沒法容納全部的文件名與inode對照表時,Linux會給與該目錄多一個block來繼續記錄相關的數據。
(2)目錄樹的讀取:好比/etc/passwd文件讀取。/的inode查詢權限 > /的block找到etc目錄的inode > etc/的inode查詢權限 > etc/的block找到passwd的inode >passwd的inode查詢權限 >passwd的block讀取內容
5,文件的訪問與日誌系統功能
(1)新增文件:a,先肯定用戶對添加文件的目錄是否有w、x的權限;b,根據inode bitmap找沒有使用的inode號碼,將新文件的權限屬性寫入;c,根據block bitmap找到沒有使用的block號碼,將實際數據寫入block中,而且更新inode的block的指向;d,更新inode bitmap 和block bitmap、superbolock
(2)關於日誌文件系統:在文件系統中規劃處一個塊,用來記錄寫入或修訂文件的步驟;a,當系統要寫入一個文件時,先在日誌記錄塊中記錄某個文件須要寫入的信息;b.開始寫入文件的權限與數據,並開始更新metadata,c,完成數據與metadata的更新後,日誌記錄塊中完成對該文件的記錄。
6,Linux文件系統的操做
首先爲了解決等待磁盤的寫入與讀取的時間長的問題,Linux採起異步處理的方式
系統讀取一個完整的文件放到內存中,此時該數據會被設置成clean的 >修改該文件,內存中該數據會被設置成dirty的(此時全部的操做都是在內存中進行的)>系統會不定時的將內存設爲dirty的數據寫入磁盤,以保持內存與磁盤中數據的一致性(也可使用sync命令強制將數據寫入磁盤)
7,掛載點的意義
每一個文件系統都有獨立的inode、block、superblock等等信息,這個文件系統要鏈接到目錄樹中才能被咱們使用,將文件系統與目錄樹結合的操做就稱爲掛載(掛載點必定時一個目錄,該目錄稱爲該文件系統的入口)
8,VFS
整個Linux文件系統都是經過一個名爲VFS(虛擬文件系統)的內核功能去讀取文件系統的,它來進行管理
好了,上面是屬於第一部分,這是第一個博客,emmm,繼續努力,固然也有引用鳥哥私房菜中的介紹,主要仍是爲了幫助本身學習