Linux 磁碟與硬體管理

2021-04-13 07:10:47 字數 4561 閱讀 3443

《本人認為不錯的文章》特轉

磁碟分割 ( partition )

在了解了硬碟的物理元件之後,再接著下來介紹的就是硬碟的分割( partition )囉!為什麼要進行硬碟分割啊?!因為我們必須要告訴作業系統:『

我這塊硬碟可以訪問的區域是由 a 磁柱到 b 磁柱

』,如此一來,作業系統才能夠控制硬碟磁頭去 a-b 範圍內的磁柱訪問資料;如果沒有告訴作業系統這個資訊,那麼作業系統就無法利用我們的硬碟來進行資料的訪問了,因為作業系統將無法知道他要去**讀取資料啊!這 就是磁碟分割( partition )的重點了:也就是記錄每乙個分割區( partition )的起始與結束磁柱!好了,那麼這個分割區的起始與結束磁柱的資料放在**呢?!那就是我們在 linux 安裝與多重開機技巧 那個章節提到的主要開機扇區( master boot recorder, mbr )囉!事實上,

mbr 就是在一塊硬碟的第零軌上面

,這也是計算機開機之後要去利用該硬碟時,必須要讀取的第乙個區域!在這個區域內記錄的就是硬碟裡面的所有分割資訊,以及開機的時候可以進行該機管理程式的寫入的處所啊!所以,當乙個硬碟的 mbr 壞掉時,由於分割的資料不見了,呵呵,那麼這個硬碟也就幾乎可以說是壽終正寢了,因為作業系統不知道該去哪個磁柱上讀取資料啊~~

那麼 mbr 有什麼限制呢?他最大的限制來自於他的大小不夠大到儲存所有分割與開機管理程式的資訊,因此,他僅提供最多四個 partition 的記憶,這就是所謂的 primary (p)與 extended (e) 的 partition 最多只能有四個的原因了。所以說,如果你預計分割超過 4 個 partition 的話,那麼勢必需要使用 ** + 1e ,並且將所有的剩餘空間都撥給 extended 才行( 記得呦! extended 最多只能有乙個 ),否則只要 ** + e 之後還有剩下的空間,那麼那些容量將成為廢物而浪費了,所以結論就是『如果您要分割硬碟時,並且已經預計規劃使用掉 mbr 所提供的 4 個 partition ( ** + e 或 4p )那麼磁碟的全部容量需要使用光,否則剩下的容量也不能再被使用』。不過,如果您僅是分割出 1p + 1e 的話,那麼剩下的空間就還能再分割兩個 partition !

檔案系統( filesystem )

在告知系統我的 partition 所在的起始與結束磁柱之後,再來則是需要將 partition 格式化為『我的作業系統認識的檔案系統( filesystem )』囉!因為每個作業系統認識的 filesystem 並不相同!例如 windows 作業系統在預設狀態下就無法認識 linux 的檔案系統 ( 這裡指 linux 的標準檔案系統 ext2 )。所以當然要針對我們的作業系統來格式化 partition 囉!

我們可以說,每乙個 partition 就是乙個 filesystem ,那麼乙個 partition 是否可以具有兩個 filesystem 呢?!理論上應該是不行的!因為每個檔案系統都有其獨特的支援方式,例如 linux 的 ext3 就無法被 windows 系統所讀取!而你將乙個 partition 格式化的時候,總不能格式化為 ext3 也同時格式化為 fat32 吧?!那是不可能的啊!

不論是哪一種 filesystem ,資料總是需要儲存的吧!既然硬碟是用來儲存資料的,想當然爾,資料就必須寫入硬碟啦!剛剛我們提到硬碟的最小儲存單位是 sector ,不過資料所儲存的最小單位並不是 sector 喔,因為用 sector 來儲存太沒有效率了。怎麼說呢?因為乙個 sector 只有 512 bytes ,而磁頭是乙個乙個 sector 的讀取,也就是說,如果我的檔案有 10 mbytes ,那麼為了讀這個檔案,我的磁頭必須要進行讀取 (i/o) 20480 次!

為了克服這個效率上的困擾,所以就有邏輯區塊( block )的產生了!邏輯區塊是在 partition 進行 filesystem 的格式化時,所指定的『最小儲存單位』,這個最小儲存單位當然是架構在 sector 的大小上面( 因為 sector 為硬碟的最小物理儲存單位啊! ),所以啦, block 的大小為 sector 的 2 的次方倍數。此時,磁頭一次可以讀取乙個 block ,如果假設我們在格式化的時候,指定 block 為 4 kbytes ( 亦即由連續的八個 sector 所構成乙個 block ),那麼同樣乙個 10 mbytes 的檔案,磁頭要讀取的次數則大幅降為 2560 次,這個時候可就大大的增加檔案的讀取效能啦!

不過,block 單位的規劃並不是越大越好喔!怎麼說呢?因為乙個 block 最多僅能容納乙個檔案!這有什麼問題呢?舉例來說好了,假如您的 block 規劃為 4 kbytes ,而您有乙個檔案大小為 0.1 kbytes ,這個小檔案將占用掉乙個 block 的空間,也就是說,該 block 雖然可以容納 4 kbytes 的容量,然而由於檔案只占用了 0.1 kbytes ,所以,實際上剩下的 3.9 kbytes 是不能再被使用了,所以,在考慮 block 的規劃時,需要同時考慮到:

因此,在規劃您的磁碟時,需要留意到您主機的用途來進行規劃較佳!例如 bbs 主機由於文章較短,也就是說檔案較小,那麼 block 小一點的好;而如果您的主機主要用在儲存大容量的檔案,那麼考慮到效能,當然 block 理論上,規劃的大一點會比較妥當啦!

superblock:如同前面說的,當我們在進行磁碟分割( partition )時,每個磁碟分割槽( partition )就是乙個檔案系統( filesystem ),而每個檔案系統開始的位置的那個 block 就稱為 superblock ,superblock的作用是儲存像是檔案系統的大小、空的和填滿的區塊,以及他各自的總數和其它諸如此類的資訊等等,這也就是說,當您要使用這乙個磁碟分割槽( 或者說是檔案系統 )來進行資料訪問的時候,第乙個要經過的就是 superblock 這個區塊了,所以囉, superblock 壞了,您的這個磁碟槽大概也就回天乏術了!

linux 的檔案系統( inode ):

看完了上面的說明,您應該對於硬碟有一定程度的認識了!好了,那麼接下來就是要談一談 linux 的檔案系統( filesystem )囉!我們這裡以 linux 最標準的 ext2 這個檔案系統來作為說明。還記得我們在

linux 檔案屬性與目錄配置 那個章節提到的,在 linux 系統當中,每個檔案不止有檔案的內容資料,還包括檔案的種種屬性,例如:所屬群組、所屬使用者、能否執行、檔案建立時間、檔案特殊屬性等等。由於 linux 作業系統是乙個多人多任務的環境,為了要保護每個使用者所擁有資料的隱密性,所以檔案屬性的增加是在所難免的!在標準的 ext2 檔案系統當中,我們將每個檔案的內容分為兩個部分來儲存,乙個是檔案的屬性,另乙個則是檔案的內容。

為了應付這兩個不同的咚咚,所以 ext2 規劃出 inode 與 block 來分別儲存檔案的屬性( 放在 inode 當中 )與檔案的內容( 放置在 block area 當中 )。當我們要將乙個 partition 格式化( format )為 ext2 時,就必須要指定 inode 與 block 的大小才行,也就是說,當 partition 被格式化為 ext2 的檔案系統時,他一定會有 inode table 與 block area 這兩個區域。

block 已經在前面說過了,他是資料儲存的最小單位。那麼 inode 是什麼?!簡單的說,block 是記錄『檔案內容資料』的區域,至於inode 則是記錄『該檔案的相關屬性,以及檔案內容放置在哪乙個 block 之內』的資訊。簡單的說, inode 除了記錄檔案的屬性外,同時還必須要具有指向( pointer )的功能,亦即指向檔案內容放置的區塊之中,好讓作業系統可以正確的去取得檔案的內容啊!底下幾個是 inode 記錄的資訊(當然不止這些):

至於乙個 inode 的大小為 128 bytes 這麼大!好了,那麼我的 linux 系統到底是如何讀取乙個檔案的內容呢?底下我們分別針對目錄與檔案來說明:

目錄:

當我們在 linux 下的 ext2 檔案系統建立乙個目錄時, ext2 會分配乙個 inode 與至少一塊 block 給該目錄。其中,inode 記錄該目錄的相關屬性,並指向分配到的那塊 block ;而 block 則是記錄在這個目錄下的相關連的檔案(或目錄)的關連性!

檔案:

當我們在 linux 下的 ext2 建立乙個一般檔案時, ext2 會分配至少乙個 inode 與相對於該檔案大小的 block 數量給該檔案。例如:假設我的乙個 block 為 4 kbytes ,而我要建立乙個 100 kbytes 的檔案,那麼 linux 將分配乙個 inode 與 25 個 block 來儲存該檔案!

由上面的說明當中,我們可以知道要讀取乙個樹狀目錄下的檔案時,作業系統會先讀取該檔案所在目錄的 inode ,並取得該目錄的關連區域(在 block 區域裡面),然後根據該關連資料讀取該檔案所在的 inode ,並再進一步經由檔案的 inode 來取得檔案的最後內容!舉個例子來說,假設我們要讀取 /etc/crontab 這個檔案,整個讀取的流程是如何呢?可由底下的圖三來作為說明: 

全文

Linux磁碟與檔案管理

dumpe2fs bh 裝置檔名 b 列出保留為壞道的部分 h 列出superblock 的資料df ahihtm 目錄與檔名 a 列出所有的檔案系統 k 以kb的容量顯示檔案系統 m 以mb的容量顯示檔案系統 h 以人易於閱讀的資料顯示檔案系統 h 以1000代替1024 t 連同該分割槽的檔案系...

Linux檔案與磁碟管理

寫在前面 磁碟管理 磁碟的構造 這部分的內容其實是很重要的,但是我現在還不想寫,雖然這部分的內容我是看了不下很多次,但是始終不是很明白。linux磁碟管理的命令 df 用來檢查檔案系統的磁碟空間占用情況 a 列出所有的檔案系統,包括系統特有的 proc等檔案系統 記得曾經寫過 proc是乙個虛擬的檔...

linux磁碟與檔案管理

一.硬碟的組成與分割槽 1.物理組成 圓形的碟片 主要記錄資料的部分 機械手臂與機械手臂上的磁頭 可讀寫碟片上的資料 主軸馬達,可以轉動碟片,讓機械手臂的磁頭在碟片上寫資料。扇區為最小的物理儲存單位,每個扇區為512bytes 將扇區圍城乙個圓,那就是柱面,柱面時分區最小的單位 第乙個扇區最重要,裡...