20191310李燁龍第十一章讀書筆記
第十一章讀書筆記
知識點歸納
EXT2檔案系統
一個磁碟可以劃分成多個分割槽,每個分割槽必須先用格式化工具(例如某種mkfs
命令)格式化成某種格式的檔案系統,然後才能儲存檔案,格式化的過程會在磁碟上寫一些管理儲存佈局的資訊。下圖是一個磁碟分割槽格式化成ext2檔案系統後的儲存佈局。
一個很巨集觀的結構圖:
塊點陣圖和節點點陣圖
在EXT2檔案系統中,採用點陣圖描述資料塊和索引節點的使用情況,每個塊組中佔用兩個塊,即一個用來描述該資料塊的使用情況,另一個描述該組索引節點的使用情況。這兩個塊分別稱為資料點陣圖塊和索引節點點陣圖塊。資料點陣圖塊中的每一位表示該塊組中的每一個塊的使用情況,如果為0,則表示相應資料塊空閒,如果是1,則表示已分配。
索引節點表
每個塊組中的索引節點都儲存在各自的索引節點表中,並且按索引節點號依次儲存。索引節點表通常佔好幾個資料塊,索引節點表所佔的塊使用時也想普通的資料塊一樣被調入塊快取記憶體。
EXT2整個磁碟的邏輯結構如圖所示:
EXT2超級塊
(Super Block)超級塊中包含了描述檔案系統基本尺寸和形態的資訊。檔案系統管理器利用他們來使用和維護檔案系統。EXT2超級塊是用來描述EXT2檔案系統整體資訊的資料結構,是EXT2的核心所在。超級塊經函式ext2_fill_supter讀入後,又在記憶體中建立一個映像super_block.u.ext2_sb_info結構。
塊組描述符表
(GDT,Group Descriptor Table)由很多塊組描述符組成,整個分割槽分成多個塊組就對應有多少個塊組描述符。
每個塊組描述符儲存一個塊組
塊點陣圖
(Block Bitmap)用來描述整個塊組中哪些塊已用哪些塊空閒。塊點陣圖本身佔一個塊,其中的每個bit代表本塊組的一個block,這個bit為1代表該塊已用,為0表示空閒可用。假設格式化時block大小為1KB,這樣大小的一個塊點陣圖就可以表示1024*8個塊的佔用情況,因此一個塊組最多可以有10248個塊。
inode點陣圖
(inode Bitmap)和塊點陣圖類似,本身佔一個塊,其中每個bit表示一個inode是否空閒可用。 Inode bitmap的作用是記錄block group中Inode區域的使用情況,Ext檔案系統中一個block group中可以有16384個Inode,代表著這個Ext檔案系統中一個block group最多可以描述16384個檔案。
inode表
(inode Table)由一個塊組中的所有inode組成。一個檔案除了資料需要儲存之外,一些描述資訊也需要儲存,如檔案型別,許可權,檔案大小,建立、修改、訪問時間等,這些資訊存在inode中而不是資料塊中。inode表佔多少個塊在格式化時就要寫入塊組描述符中。 在Ext2/Ext3檔案系統中,每個檔案在磁碟上的位置都由檔案系統block group中的一個Inode指標進行索引,Inode將會把具體的位置指向一些真正記錄檔案資料的block塊,需要注意的是這些block可能和Inode同屬於一個block group也可能分屬於不同的block group。我們把檔案系統上這些真實記錄檔案資料的block稱為Data blocks。
資料塊
(Data Block)是用來放置檔案內容資料的地方。根據不同的檔案型別有以下幾種情況:
對於普通檔案,檔案的資料儲存在資料塊中。
對於目錄,該目錄下的所有檔名和目錄名儲存在所在目錄的資料塊中,除了檔名外,ls -l命令看到的其它資訊儲存在該檔案的inode中。
對於符合連結,如果目標路徑名較短則直接儲存在inode中,如果較長則分配一個數據塊來儲存。
裝置檔案、FIFO和socket等特殊檔案沒有資料塊。
問題與解決思路
實踐內容
1.fdisk實踐
建立分割槽
列印分割槽表
顯示所有檔案系統型別的十六進位制唯一值
寫入修改磁碟分割槽
2.mkfs實踐
使用1440(1KB)個塊將mydisk格式化為EXT2檔案系統,Linux的mkfs會在根目錄下建立一個預設的lost+found目錄。接著掛載到根檔案系統中的現有目錄中,/mnt目錄通常用於掛載其他檔案系統,由於虛擬檔案系統不是真正的裝置,它們必須作為迴圈裝置掛載。掛載後的裝置使用完成後,將cd從/mnt中取出。
不帶任何引數的mount會顯示Linux系統所有掛載裝置。
虛擬磁碟如果包含多個分割槽,需要將這些分割槽與虛擬裝置關聯起來。
此處還不是很明確
3.連結檔案實踐
硬連結,可以直接在新路徑下建立檔案並連結到舊路徑。
硬連結特徵:
- 原始檔和硬連結檔案使用相同的 Inode 和 Block
- 修改任意一個檔案,另一個都改變
- 刪除任意一個檔案,另一個都能使用
- 硬連結標記不清,很難確認硬連結檔案位置,不建議使用
- 硬連結不能連結目錄
- 硬連結不能跨分割槽
軟連結特徵:
- 軟連結和原始檔使用不同的 Inode 和 Block
- 兩個檔案修改任意一個,另一個都改變
- 刪除軟連結,原始檔不受影響;刪除原始檔,軟連結不能使用
- 軟連結沒有實際資料,只儲存原始檔的 Inode,不論原始檔多大,軟連結大小不變
- 軟連結的許可權是最大許可權 lrwxrwxrwx.,但是由於沒有實際資料,最終訪問時需要參考原始檔許可權
- 軟連結可以連結目錄
- 軟連結可以跨分割槽
- 軟連結特徵明顯,建議使用軟連線