[Linux] 硬盤構造與分區

  首先讓咱們從物理結構上了解一下硬盤的存儲原理。html

 

  硬盤構造示意圖:ide

  

 

  1. head:磁頭,磁盤盤面上的磁頭,有幾個磁頭,就有幾個盤面。從0開始編號,最大255,表示總共256個磁頭。spa

  2. cylinder:柱面。每一個盤面上的磁道疊加起來,看起來就像一個柱體,所以被稱爲柱面。對於單個磁盤盤面來講,一個柱面就是一個磁道,許多的同心圓磁道構成一個盤面。從0開始編號,最大1023,表示總共1024個磁道。操作系統

  3. sector:扇區。每一個磁道上能夠劃分爲若干段,每一段稱爲一個扇區,扇區是磁盤最小存儲單位,通常每一個扇區存儲 512 個字節數據。從1開始編號,最大63,表示63個扇區。code

 

  扇區示意圖:htm

  

  你能夠將一個硬盤想象爲這麼一棟圓柱體建築,建築有若干層,每一層正反面都是是一個圓形的田徑場,這就是磁盤;每一個田徑場是由 N 個跑道組成,這就是磁道;每一個田徑場都有一個運輸運動員進出場的接駁車,這就是磁頭;用 N 條直徑將整個田徑場劃分爲 2N 個扇形,每條磁道都被直徑劃分爲 2N 段,每條磁道的每一段就是扇區;每個運動員就是一個字節,每個扇區能夠容納 512 個運動員。對象

  

  硬盤(圓柱體建築)示意圖:blog

 

  單個磁盤單面(田徑場)示意圖:索引

 

  瞭解了 head, cylinder, sector 是什麼後,就能夠計算出硬盤容量。get

 

  例如如下硬盤信息:

$ sudo fdisk /dev/mmcblk0 -l

Disk /dev/mmcblk0: 31.9 GB, 31914983424 bytes 4 heads, 16 sectors/track, 973968 cylinders, total 62333952 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00062524 Device Boot Start End Blocks Id System /dev/mmcblk0p1 2048 43007 20480 6 FAT16 /dev/mmcblk0p2 43008 62332927 31144960 83 Linux

 

  以上信息顯示硬盤大小爲 31914983424 bytes,約爲 31.9 GB。

  該硬盤共有 4 個磁頭,973968 個柱面,16 個扇區,每一個扇區可存儲 512 字節。

  硬盤容量 = 4 heads × 973968 cylinders × 16 sectors × 512 bytes = 31914983424 bytes = 30.436 GB

 

  扇區大小爲 512 字節,但咱們實際上存儲的東西最小顆粒也可能會大於 512 字節,所以在進行格式化時,咱們能夠選擇分配單元大小,即邏輯區塊 Block,例如咱們指定格式化時數據最小存儲單位爲 1024 字節,那麼一個 Block 就是 1024 字節,即 1 個Block 等於 2 個 sectors。

 

  硬盤容量是如何增加的?

 

  (機械)硬盤容量雖然愈來愈大,但基本的構造原理沒有太大變化。

  隨着製造工藝技術提供,磁碟愈來愈薄,磁頭也愈來愈小,這樣一個硬盤儲存器就能夠裝下愈來愈多的磁片,因爲磁片表面密度愈來愈高,也就是磁道和扇區也愈來愈多,容量天然愈來愈大。

  另外還有一種叫作多區記錄技術,在此技術以前,每一個磁道都是被相同直徑劃分,這就意味着每一個磁道上的扇區是同樣多的,外圍的扇區明顯比內圍的扇區要寬,這就浪費了不少磁道長度。在多區記錄技術引入後,外圍的磁道就能夠劃分更多的扇區,從而增長容量。

 


 

  以上就是硬盤的物理構造,硬盤只是存儲介質,下面就讓咱們在硬盤上規劃出數據的存儲方案,這就是對硬盤進行分區。

 

  硬盤分區概念有三種,分別是主分區(primary partition)、擴展分區(extended partition)、邏輯分區(logical partition)

 

  在物理磁盤這個意義層面上,只有主分區和擴展分區,若是全部分區容量之和小於磁盤容量,剩餘的部分就是未分配空間(unallocated disk)。硬盤分區信息保存在分區表(partition table)中,對操做系統而言,未分配空間是文件系統以外的不可用區域。

 

  對於硬盤而言,最多有四個分區,最少有一個分區,其中至少得包含一個主分區,至多包含一個擴展分區。

 

  分區是什麼?爲何要有分區?

 

  分區就是將一個硬盤劃分爲若干連續的儲存區域,分區表保存硬盤分區的索引,分區信息保存在分區表中。若是一個硬盤上只有一個分區,那麼整個文件系統位於一個分區中,即整個文件系統存儲在一個連續區域。若是該存儲區域出現損壞,那麼文件系統將受到破壞,用戶可能丟失全部數據。對於文件系統而言,將系統數據和用戶數據分開保存在不一樣分區,能夠避免用戶數據增加以至填滿整個硬盤,從而致使系統崩潰或掛起。若是使用多個分區,也能夠根據存儲的文件對象不一樣,選擇使用不一樣容量的最小存儲單元進行分區格式化。 

 

  什麼是主分區和擴展分區?

 

  在 Windows 平臺下激活的主分區是硬盤的啓動分區,通常是 C 盤,也是硬盤的第一個分區。在 Linux 平臺主分區和擴展分區均可以用以安裝操做系統核心。

  主分區屬於原子分區,不能再將其劃分不一樣區域來使用,數據直接保存在主分區的存儲單元上。擴展分區不能直接用於儲存數據,必須將擴展分區劃分爲更小的存儲單元,即邏輯分區,數據都是保存在邏輯分區中。

  主分區和邏輯分區比如是文件,而擴展分區比如是目錄,硬盤空間主要由主分區、擴展分區(由邏輯分區組成)、未分配空間組成。

  通常來講,先分出主分區,剩下的就都劃爲擴展分區,沒有必要的話,通常不留未分配空間以避免浪費硬盤空間。

  總的說來,一個硬盤只能劃分爲四個分區(主分區和擴展分區),一個主分區就是一個分區,一個擴展分區能夠劃分爲任意數量的邏輯分區。

 

  什麼是主引導扇區?

 

  主引導扇區是位於磁盤最前面一段保存引導(loader)代碼的區域,該代碼也被稱爲主引導記錄(MBR,Main Boot Record),這段代碼的做用在於讓磁盤操做系統(DOS)對磁盤進行讀寫時分區合法性判斷、分區引導信息定位,它也是由磁盤操做系統(DOS)在對磁盤進行初始化的時候產生。

 

  該磁盤區域不屬於主分區和擴展分區,所以主引導程序更不屬於硬盤上安裝的任何操做系統。它做爲磁盤上一個很是小的特殊區域獨立存在,不會被分區空間內的格式化命令所擦除。該磁盤區域主要能夠分爲三個部分:

  1. 主引導程序(即主引導記錄 MBR),空間大小爲 446 個字節。它會在硬盤啓動後,將系統控制權轉交給在分區表中登記的操做系統,讓操做系統能夠操做磁盤。

  2. 分區表(DPT,Disk Partition Table),由四個分區表構成(每一個 16 字節,這也就是爲何硬盤至多隻有四個分區)。

  3. 結束標識(2字節),值爲 AA55(十六進制)。

 

  簡而言之,主引導程序的做用就是在硬盤啓動後,引導電腦設備進入安裝在硬盤上的操做系統程序。

 

 

1. 硬盤的扇面、磁道、扇區

相關文章
相關標籤/搜索