磁盤級別概念
這里講的主要是網上所謂的老式磁盤,它是由一個個盤片組成的,我們先從個盤片結構講起。如圖1所示,圖中的一圈圈灰色同心圓為一條條磁道,從圓心向外畫直線,可以將磁道劃分為若干個弧段,每個磁道上一個弧段被稱之為一個扇區(圖踐綠色部分)。扇區是磁盤的最小組成單元,通常是512字節。圖2展示了由一個個盤片組成的磁盤立體結構,一個盤片上下兩面都是可讀寫的,圖中藍色部分叫柱面(cylinder)。

簡簡單介紹了磁盤結構后,下面我們將對磁盤的參數進行講解。磁盤的常見參數如下:
圖2中磁盤是一個 3個圓盤6個磁頭,7個柱面(每個盤片7個磁道) 的磁盤,圖2中每條磁道有12個扇區,所以此磁盤的容量為6*7*12*512字節。
即:
存儲容量 = 磁頭數 × 磁道(柱面)數 × 每道扇區數 × 每扇區字節數
下面講一下現代磁盤,在老式磁盤中,盡管磁道周長不同,但每個磁道上的扇區數是相等的,越往圓心扇區弧段越短,但其存儲密度越高。不過這種方式顯然比較浪費空間,因此現代磁盤則改為等密度結構,這意味著外圍磁道上的扇區數量要大于內圈的磁道,尋址方式也改為以扇區為單位的線性尋址。為了兼容老式的3D尋址方式,現代磁盤控制器中都有一個地址翻譯器將 3D 尋址參數翻譯為線性參數。
扇區(sector):最小的物理存儲單位,每個扇區512bytes 柱面(cylinder):扇區組成的一個圓,柱面是分區(partition)的最小單位 第一個扇區:包含開機啟動記錄(MBR,Master boot record)以及分區表(partition table),其中MBR為446bytes,partition table為64byte 因為分區表大小只有64byte,所以只能存儲4個分區信息,這也是為什么一塊硬盤只能分為四個主分區,或者將其中一個作為擴展分區,在其中再劃分邏輯分區。 多重引導
圖中藍色為MBR,黃色為每個分區的啟動扇區(boot sector)
一塊硬盤最開始是MBR和分區表,并且每個分區都有各自的boot sector。文件系統概念 文件系統定義了以什么樣的結構存儲數據。每個分區可以是不同的文件系統,文件系統的劃分是針對分區的。 Linux文件系統ext2主要分為三種類型的結構,superblock,inode,block。 superblock(超級塊) superblock記錄了整個filesystem相關信息的地方,沒有superblock,就沒有filesystem
另外還有其他部分Filesystem Description (文件系統描述說明)這個區段可以描述每個 block group 的開始和結束的block號碼,以及說明每個區段 (superblock,bitmap, inodemap, data block) 分別位于哪一個 block 號碼之間。這部分也能夠用 dumpe2fs 來觀察。block bitmap (區塊對照表)如果你想要新增文件時總會用到 block 吧!那你要使用那個 block 來記錄呢?當然是選擇『空的block 』來記錄新文件的數據。 那你怎么知道那個 block 是空的?這就得要透過 block bitmap了。從 block bitmap 當中可以知道哪些 block 是空癿,因此我們的系統就能夠迅速的找到可使用的空間來處置文件。inode bitmap (inode 對照表)這個其實不 block bitmap 是類似的功能,叧是 block bitmap 記錄的是使用不未使用的block 號碼,至于inode bitmap 則是記錄使用不未使用的inode 號碼啰!目錄和文件的存儲方式目錄存儲方式當我們在 Linux 下癿 ext2 文件系統建立一個目彔時, ext2 會分配一個 inode 不至少一塊 block 給該目錄。其中,inode 記錄該目錄的相關權限和屬性,并可記錄分配到的那塊 block 號碼; 而 block 則是記錄在這個目錄下的文件名與該文件名占用的 inode 號碼數據。文件存儲方式文件存儲也是分配一個inode,并且這個inode中有12個直接,一個間接,一個雙間接,一個三間接記錄區
文件檢索過程
比如打開/var/test文件過程 首先找到/目錄,然后找到其對應block下面的目錄名var對應的inode 在var的inode中找到對應的block,在block中找到文件test對應的inode 在test的inode中找到對應的block,即為test文件的內容。如下圖所示
參考文章:http://www.CUOXin.com/vamei/p/3506566.html http://www.CUOXin.com/joydinghappy/articles/2511948.html鳥哥的linux私房菜來自為知筆記(Wiz)新聞熱點
疑難解答