Linux磁碟 Ext檔案系統 目錄樹

2022-05-12 06:48:09 字數 3150 閱讀 7476

硬碟,拆過機的同志應該知道就是一塊小剛體嘛。拆過主機硬碟和筆記本硬碟也應該知道不同的硬碟的介面是不一樣的,主機的硬碟一般會有一條線連線到主機板而筆記本的硬碟直接有插槽。這個概念只是為了引起硬碟有不同的種類存在,當我們在linux系統中輸出命令fdisk -l的時候,大致會有裝置名稱等資訊。其中有可能有/dev/sd[a-p][1-15]或者/dev/hd[a-d][1-63]等等,前者表示scsi,sata,usb等介面的磁碟檔名,後者表示ide介面磁碟檔名(這個比較老了)。

磁碟會有多個概念,為了方便理解,先設定乙個場景,假定我們在吃雞遊戲的地圖上,這個地圖只有乙個圓柱大樓,每層樓都是乙個環形操場跑道。

這是我的電腦的磁碟分布,乙個扇區是512bytes,一次io讀取是8個扇區能讀到4kb。總的容量很明顯是由255盤面*n柱面*m扇區(512bytes)構成的。

磁碟是如何讀取資料的呢,我們知道買磁碟是有轉速指標的,所以我們可以設想磁頭不動當靠旋轉就可以獲得某柱面的所有磁軌的資料。其實磁碟io步驟就是如此。

尋道時間,磁頭徑向移動到達指定的磁碟位置

旋轉延遲,等到指定的扇區到達磁頭下

訪問時間,讀取目標扇區的資料

時間花費,1w轉的磁碟旋轉一圈是不到6ms,訪問也就是零點幾毫秒不然磁碟都轉過去了是不是還要等一圈再來讀取。。所以我們可以猜到尋道時間是最長的大概是3-15ms。

因此進行磁碟分割槽的時候,我們劃分標準是以柱面作為分割槽partition的最小單位。不然按照盤面來分割槽,那尋道時間的比重會增加自然增加了io時間。可以看到上圖,按照扇區連續性進行了分割槽。

我們應該清楚,現在只是分割槽完成,每乙個區可以有自己獨立的檔案系統進行管理它所分配到的區域。有不同的檔案系統體制,我們假定分配到的區域每一扇區給個序號從1到100。對於fat格式,乙個檔案表示形式是鍊錶的樣式,可能是8->6->7->67->5等等,對於ext2格式,它將1-4作為乙個inode的節點代表了乙個檔案,儲存了這個檔案的實際資料儲存的block序號(5,6,7,8,67),我們成為索引式檔案系統。

以上說的概念可以這麼理解,地球就是一塊硬碟,每乙個國家就是乙個分割槽,每乙個國家自己的檔案系統格式可以是資本主義也可以是社會主義。

雖然我們標題說的是ext2檔案系統,但是放的是ext4檔案系統,區別只是gdt而已,為了跟進時代加進來無妨。

先談談該圖的總體概念,entire disk=mbr+partition table+partitions.  partition=boot sector+block group.  block group=super lock+group descriptors+reserved gdt blocks+data block bitmap+inode bitmap+inode table+data blocks.

其實這裡設計到了啟動作業系統的過程,這個以後再詳細描述。大概思路是當我們經過了通電自檢等進入bios到指定到磁碟啟動,第一扇區是mbr和partition table,分割槽表只有64b,我們知道磁碟分割槽最低單位是柱面,柱面範圍是0-255,八個bit就可以表示,所以16b表示乙個分割槽範圍。乙個磁碟理論上只能四個分割槽,所以為了拓展允許有3個主分割槽和乙個擴充套件分割槽,這個擴充套件分割槽可以擁有多個邏輯分割槽。那麼我們分好的每乙個分割槽就是乙個檔案系統了。每乙個分割槽都預留的boot sector是載入作業系統核心的引導**,它的副本將放在mbr中,當然說雙系統你可能更容易理解,每個分割槽可以指定乙個系統,但是只有乙個boot loader能放在mbr中,其中linux的boot loader可以釋放許可權載入別的檔案系統的boot sector從而載入雙系統了。

而且實際並不是每乙個block group都是如此排布,太多super block說實話浪費空間,冗餘的超級塊和組描述符的副本只保留在組號為 0 或組號為 3,5,7 的倍數的塊組中。同時還會有純粹的資料儲存塊,只有後四者。

超級塊資訊

group block,注意資訊有所不同

g0是起始的primary superblock,g1是存有super block,g2是純粹資料儲存。

inodetable

block data

這是block塊的一種線性目錄結構,它表述了儲存的特殊資料表示格式,例如是目錄檔案的block,它將目錄下的檔名及其對應的inode號記錄在目錄的block中。

我們知道目錄也是乙個檔案,乙個檔案的檔名由目錄檔案儲存,檔案系統新建乙個目錄時會分配乙個inode與至少乙個block給該目錄,inode記錄目錄的相關許可權和屬性,分配到的block記錄目錄下的檔名和該檔名占用的inode號碼資訊。所以indoe本身不記錄檔名,檔名記錄在目錄的block中,因此新增/刪除/重新命名檔名與目錄的w許可權有關。那麼因為檔名記錄在目錄的block中,因此當我們要讀某乙個檔案,必須經過目錄的inode與block然後才能找到哪個待讀取的檔案的inode才能讀到block資料。

目錄樹是由根目錄讀起,系統通過掛載點的掛載資訊就可以找到掛載點的inode號碼,通常乙個檔案系統的最頂層indoe號碼是2(1是指向不佔空間的proc目錄),然後通過根目錄一層層往下讀。

如圖我們訪問/etc/passwd需要通過/+rx許可權(r是讀,x是進入該目錄)然後一步步找到下乙個inode節點。

參考磁碟、分割槽及linux檔案系統 [disk, partition, linux file system]

ext4 檔案系統簡要總結

linux磁碟 檔案系統

計算機儲存和組織資料的方法或者機制。軟體 磁碟是物理介質 磁粒子物理元素。硬體需要軟體驅動使用。檔案系統實現通過磁碟管理規劃 儲存資料。windows ntfs fat32 msdos linux ext2 ext3 c5 ext4 c6 xfs centos7 8 btrfs 在虛擬機器建立乙個磁...

ext檔案系統

ext檔案系統 1.採用名為索引節點的系統來存放虛擬目錄中所儲存檔案的資訊。2.索引節點系統在每個物理裝置中建立乙個單獨的表 稱為索引節點表 來儲存這些檔案的資訊。3.儲存在虛擬目錄中的每乙個檔案在索引節點表中都有乙個條目 缺點 1.檔案大小不得超過2 gb 2.儲存資料用的塊很容易分散在整個裝置中...

EXT檔案系統

1 ext2 add link的執行過程,函式的定義如下 int ext2 add link struct dentry dentry,struct inode inode if de rec len 0 err eexist 如果名字匹配 if ext2 match namelen,name,de...