日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

32 块大小_详解Linux文件系统的完整结构--引导块、超级块、GDT等

發(fā)布時間:2024/7/23 linux 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 32 块大小_详解Linux文件系统的完整结构--引导块、超级块、GDT等 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

概述

今天主要介紹一下Linux系統(tǒng)的文件系統(tǒng),一起來看看吧~


文件系統(tǒng)組成

網上看到的一張完整的文件系統(tǒng)圖,如下:

首先,該圖中有Boot Block、Super Block、GDT、Reserver GDT這幾個概念,下面會分別介紹它們。

然后,圖中指明了塊組中每個部分占用的block數量,除了superblock、bmap、imap能確定占用1個block,其他的部分都不能確定占用幾個block。

最后,圖中指明了Superblock、GDT和Reserved GDT是同時出現(xiàn)且不一定存在于每一個塊組中的,也指明了bmap、imap、inode table和data blocks是每個塊組都有的。


1 、引導塊

即上圖中的Boot Block部分,也稱為boot sector。它位于分區(qū)上的第一個塊,占用1024字節(jié),并非所有分區(qū)都有這個boot sector,只有裝了操作系統(tǒng)的主分區(qū)和裝了操作系統(tǒng)的邏輯分區(qū)才有。里面存放的也是boot loader,這段boot loader稱為VBR(主分區(qū)裝操作系統(tǒng)時)或EBR(擴展分區(qū)裝操作系統(tǒng)時),這里的Boot loader和mbr上的boot loader是存在交錯關系的。開機啟動的時候,首先加載mbr中的bootloader,然后定位到操作系統(tǒng)所在分區(qū)的boot serctor上加載此處的boot loader。如果是多系統(tǒng),加載mbr中的bootloader后會列出操作系統(tǒng)菜單,菜單上的各操作系統(tǒng)指向它們所在分區(qū)的boot sector上。

但是,這種方式的操作系統(tǒng)菜單早已經棄之不用了,而是使用grub來管理啟動菜單。盡管如此,在安裝操作系統(tǒng)時,仍然有一步是選擇boot loader安裝位置的步驟。


2 、超級塊(superblock)

既然一個文件系統(tǒng)會分多個塊組,那么文件系統(tǒng)怎么知道分了多少個塊組呢?每個塊組又有多少block多少inode號等等信息呢?還有,文件系統(tǒng)本身的屬性信息如各種時間戳、block總數量和空閑數量、inode總數量和空閑數量、當前文件系統(tǒng)是否正常、什么時候需要自檢等等,它們又存儲在哪里呢?

毫無疑問,這些信息必須要存儲在block中。存儲這些信息占用1024字節(jié),所以也要一個block,這個block稱為超級塊(superblock),它的block號可能為0也可能為1。如果block大小為1K,則引導塊正好占用一個block,這個block號為0,所以superblock的號為1;如果block大小大于1K,則引導塊和超級塊同置在一個block中,這個block號為0。總之superblock的起止位置是第二個1024(1024-2047)字節(jié)。

使用df命令讀取的就是每個文件系統(tǒng)的superblock,所以它的統(tǒng)計速度非常快。相反,用du命令查看一個較大目錄的已用空間就非常慢,因為不可避免地要遍歷整個目錄的所有文件。

superblock對于文件系統(tǒng)而言是至關重要的,超級塊丟失或損壞必將導致文件系統(tǒng)的損壞。


3、 塊組描述符表(GDT)

既然文件系統(tǒng)劃分了塊組,那么每個塊組的信息和屬性元數據又保存在哪里呢?

ext文件系統(tǒng)每一個塊組信息使用32字節(jié)描述,這32個字節(jié)稱為塊組描述符,所有塊組的塊組描述符組成塊組描述符表GDT(group descriptor table)。

雖然每個塊組都需要塊組描述符來記錄塊組的信息和屬性元數據,但是不是每個塊組中都存放了塊組描述符。ext文件系統(tǒng)的存儲方式是:將它們組成一個GDT,并將該GDT存放于某些塊組中,存放GDT的塊組和存放superblock和備份superblock的塊相同,也就是說它們是同時出現(xiàn)在某一個塊組中的。讀取時也總是讀取Group0中的塊組描述符表信息。

假如block大小為4KB的文件系統(tǒng)劃分了143個塊組,每個塊組描述符32字節(jié),那么GDT就需要143*32=4576字節(jié)即兩個block來存放。這兩個GDT block中記錄了所有塊組的塊組信息,且存放GDT的塊組中的GDT都是完全相同的。

下圖是一個塊組描述符的信息(通過dumpe2fs獲取)。


4 、保留GDT(Reserved GDT)

保留GDT用于以后擴容文件系統(tǒng)使用,防止擴容后塊組太多,使得塊組描述符超出當前存儲GDT的blocks。保留GDT和GDT總是同時出現(xiàn),當然也就和superblock同時出現(xiàn)了。

例如前面143個塊組使用了2個block來存放GDT,但是此時第二個block還空余很多空間,當擴容到一定程度時2個block已經無法再記錄塊組描述符了,這時就需要分配一個或多個Reserved GDT的block來存放超出的塊組描述符。

由于新增加了GDT block,所以應該讓每一個保存GDT的塊組都同時增加這一個GDT block,所以將保留GDT和GDT存放在同一個塊組中可以直接將保留GDT變換為GDT而無需使用低效的復制手段備份到每個存放GDT的塊組。

同理,新增加了GDT需要修改每個塊組中superblock中的文件系統(tǒng)屬性,所以將superblock和Reserved GDT/GDT放在一起又能提升效率。


后面會分享更多devops和DBA方面的內容,感興趣的朋友可以關注一下~

總結

以上是生活随笔為你收集整理的32 块大小_详解Linux文件系统的完整结构--引导块、超级块、GDT等的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。