磁盘结构和工作原理以及LBA与CHS
硬盤(英語:Hard Disk Drive,縮寫:HDD)
硬盤(英語:Hard Disk Drive,縮寫:HDD)是電腦上使用堅硬的旋轉盤片為基礎的非易失性存儲器,它在平整的磁性表面存儲和檢索數字數據,數據通過離磁性表面很近的磁頭由電磁流來改變極性的方式被寫入到磁盤上,數據可以通過盤片被讀取,原理是磁頭經過盤片的上方時盤片本身的磁場導致讀取線圈中電氣信號改變。硬盤的讀寫是采用半隨機存取的方式,可以以任意順序讀取硬盤中的數據,但讀取不同位置的資料速度不相同。硬盤包括一至數片高速轉動的盤片以及放在執行器懸臂上的磁頭。
早期的硬盤存儲介質是可替換的,不過現在硬盤的存儲介質一般不能更換,碟片與磁頭是一起被密封在硬盤驅動器內。硬盤有一個有著過濾措施的氣孔,用來平衡工作時產生的熱量導致的硬盤內外的氣壓差。
總體來說,硬盤結構包括:盤片、讀寫磁頭、盤片主軸、控制電機、磁頭控制器、數據轉換器、接口、緩存等幾個部分。
磁盤結構和工作原理
磁盤結構作用拓撲圖
盤片(Platters)
例如,短語“ HARDDISK “可以寫在四個磁盤的兩面,如下圖所示。
作用:
- 盤片主要作用于劃分多個扇區用來存放數據。
磁頭(head)
- 磁頭放置在盤片的上面與下面,磁頭不會觸碰到盤面本身的,每個盤片會有兩個磁頭,稱為讀/寫磁頭,可以對數據進行讀寫。磁頭是硬盤中對盤片進行讀寫工作的工具。硬盤在工作時,磁頭通過感應旋轉的盤片上磁場的變化來讀取數據;通過改變盤片上的磁場來寫入數據。為避免磁頭和盤片的磨損,在工作狀態時,磁頭懸浮在高速轉動的盤片上方,而不與盤片直接接觸,只有在電源關閉之后,磁頭會自動回到在盤片上的固定位置(稱為著陸區,此處盤片并不存儲數據,是盤片的起始位置)。
- 磁頭沿盤片的半徑方向動作,而盤片則按照指定方向高速旋轉,這樣磁頭就可以到達盤片上的任意位置了。
作用:
- 磁頭是在盤片中起到讀寫數據的作用。
扇區(Sector)
作用:
- 扇區主要用來存放數據。
擴展知識
主引導扇區
- 主引導記錄(Master Boot Record,縮寫:MBR),又叫做主引導扇區,是計算機開機后訪問硬盤時所必須要讀取的首個扇區,它在硬盤上的三維地址為(柱面,磁頭,扇區)=(0,0,1)。
- 在深入討論主引導扇區內部結構的時候,有時也將其開頭的446字節內容特指為“主引導記錄”(MBR),其后是4個16字節的“磁盤分區表”(DPT),以及2字節的結束標志(55AA),也成為校驗魔數。因此,在使用“主引導記錄”(MBR)這個術語的時候,需要根據具體情況判斷其到底是指整個主引導扇區,還是主引導扇區的前446字節。
磁道(Track)
作用:
- 磁道是磁頭訪問盤面扇區的隧道,磁盤轉起后磁頭讀取扇區內的數據。
柱面(Cylinder)
- 離盤心最遠的磁道為0磁道,依此往里為1磁道,2磁道,3磁道…,不同面上相同磁道編號則組成了一個圓柱面,即所稱的柱面。
- 硬盤數據的讀寫是按柱面進行,即磁頭讀寫數據時首先在同一柱面內從0磁頭開始進行操作,依次向下在同一柱面的不同盤面( 即磁頭上)進行操作,只有在同一柱面所有的磁頭全部讀寫完畢后磁頭才轉移到下一柱面,因為選取磁頭只需通過電子切換即可 ,而選取柱面則必須通過機械切換。電子切換比從在機械上磁頭向鄰近磁道移動快得多。因此,數據的讀寫按柱面進行,而不 按盤面進行。 讀寫數據都是按照這種方式進行,盡可能提高了硬盤讀寫效率。
簇(Cluster)/ 塊(Block)
- 通俗的來講,在Windows下如NTFS等文件系統中叫做簇;在Linux下如Ext4等文件系統中叫做塊(block)。每個簇或者塊可以包括2、4、8、16、32、64…2的n次方個扇區。
- 將物理相鄰的若干個扇區稱為了一個簇。操作系統讀寫磁盤的基本單位是扇區,而文件系統的基本單位是簇。每個簇只能由一個文件占用,即使這個文件中有幾個字節,決不允許兩個以上的文件共用一個簇,否則會造成數據的混亂。這種以簇為最小分配單位的機制,使硬盤對數據的管理變得相對容易,但也造成了磁盤空間的浪費。在Windows下,隨便找個幾字節的文件,在其上面點擊鼠標右鍵選擇屬性,看看實際大小與占用空間兩項內容,如大小:15字節 (15 字節), 占用空間:4.00 KB (4096 字節)。這里的占用空間就是你機器分區的簇大小,因為再小的文件都會占用空 間,邏輯基本單位是4K,所以都會占用4K。簇一般有這幾類大小 4K,8K,16K,32K,64K等。簇越大存儲性能越好,但空間浪費嚴重。簇越小性能相對越低,但空間利用率高。NTFS格式的文件系統簇的大小為4K。
- 簇是操作系統中磁盤文件存儲管理的單位,可為一個或多個物理扇區組成,由格式化時選定文件系統而定。簇是操作系統所使用的邏輯概念,而非磁盤的物理特性。
- 由于物理硬盤中扇區是磁盤最小的物理存儲單元、在硬盤中存在的量很大并且每個扇區都必須有編號,所以操作系統無法對數目眾多的扇區進行尋址。因此操作系統將相鄰的扇區組合在一起,組成簇這一單位用以高效率地利用資源。文件系統是操作系統與硬盤驅動器之間的接口,當系統請求從硬盤里讀取一個文件時,會請求相應的文件系統打開文件,簇包含的扇區數是由文件系統格式與分配單元大小而定。一般每個簇可以包括2、4、8、16、32或64個扇區。
- 邏輯層面: 磁盤塊(虛擬出來的)。 塊是操作系統中最小的邏輯存儲單位。操作系統與磁盤打交道的最小單位是磁盤塊。磁盤塊是一個虛擬概念。是操作系統自己"杜撰"的,軟件的概念,不是真實的。所以大小由操作系統決定,操作系統可以配置一個塊多大。一個塊大小=一個扇區大小*2的n次方。N是可以修改的。
- 映射磁盤塊:磁盤控制器,其作用除了讀取數據、控制磁頭等作用外,還有的功能就是映射扇區和磁盤塊的關系。
硬盤讀寫數據的過程
有了柱面(cylinder),有了磁頭(head),有了扇區(sector),顯然可以定位數據了,這就是數據定位(尋址)方式之一,CHS(Cylinder Head Sector),對早期的磁盤非常有效,知道用哪個磁頭,讀取哪個柱面上的第幾扇區就OK了的方式。硬盤讀取數據時,讀寫磁頭沿徑向移動,移到要讀取的扇區所在磁道的上方,這段時間稱為尋道時間(seek time)。因讀寫磁頭的起始位置與目標位置之間的距離不同,尋道時間也不同。磁頭到達指定磁道后,然后通過盤片的旋轉,使得要讀取的扇區轉到讀寫磁頭的下方,這段時間稱 為旋轉延遲時間(rotational latencytime)。
- 硬盤的容量計算公式:硬盤容量=柱面數×盤面數×每道扇區數×512字節
假定硬盤有4個盤片,每個盤片有4條磁道,每條磁道有8個扇區,每個扇區就是512字節。所以一條磁道的容量=8x512字節。一個柱面的容量=4x每條磁道的容量=4x8x512字節。一個硬盤的容量=所有柱面容量=4 x 4 x 8 x 512字節=柱面數 × 盤面數 × 每道扇區數 × 512字節。
早期的硬盤每磁道扇區數相同,此時由磁盤基本參數可以計算出硬盤的容量:即上面的公式,硬盤容量=柱面數×盤面數x每道扇區數x每扇區字節數。
- CHS模式支持的硬盤容量有限,用10bit來存儲柱面地址,用8bit來存儲磁頭地址,用6bit來存儲扇區地址,而一個扇區共有512Byte,這樣使用CHS尋址一塊硬盤最大容量為1024 * 256 * 63 * 512B = 8064 MB(大致相當于7G)。
- CHS的BIOS規范只有24位: 磁柱10比特、磁頭8位、扇區6比特,定義在BIOS的INT 13H軟件中斷里。
由于每磁道扇區數相同,外圈磁道半徑大,里圈磁道半徑小,外圈和里圈扇區面積自然會不一樣。同時,為了更好的讀取數據,即使外圈扇區面積再大也只能和內圈扇區一樣存放相同的字節數(512字節)。這樣一來,外圈的記錄密度就要比內圈小,會浪費大量的存儲空間。
所以現在的硬盤都使用ZBR(Zoned Bit Recording,區位記錄)技術來劃分。盤片表面由里向外劃分為數個區域,不同區域的磁道扇區數目不同,同一區域內各磁道扇區數相同,盤片外圈區域磁道長扇區數目較多,內圈區域磁道短扇區數目較少,大體實現了等密度,從而獲得了更多的存儲空間。此時,由于每磁道扇區數各不相同,所以傳統的容量計算公式就不再適用。
實際上如今的硬盤大多使用LBA(Logical Block Addressing)邏輯塊尋址模式,知道LBA后即可計算出硬盤容量。現在很多硬盤采用同密度盤片,意味著內外磁道上的扇區數量不同,扇區數量增加,容量增加,CHS很難定位尋址,所以有了新的尋址模式:LBA(Logical Block Addressing)。在LBA地址中,地址不再表示實際硬盤的實際物理地址(柱面、磁頭和扇區)。LBA編址方式將CHS這種三維尋址方式轉變為一維的線性尋址,它把硬盤所有的物理扇區的C/H/S編號通過一定的規則轉變為一線性的編號,系統效率得到大大提高,避免了煩瑣的磁頭/柱面/扇區的尋址方式。在訪問硬盤時,由硬盤控制器再將這種邏輯地址轉換為實際硬盤的物理地址。
- LBA下的編號,扇區編號是從0開始。
邏輯扇區號LBA的公式:
- LBA(邏輯扇區號)=磁頭數 × 每磁道扇區數 × 當前所在柱面號 + 每磁道扇區數 × 當前所在磁頭號 + 當前所在扇區號 – 1
例如:
CHS=0/0/1,則根據公式LBA=255 × 63 × 0 + 63 × 0 + 1 – 1= 0,也就是說物理0柱面0磁頭1扇區,是邏輯0扇區。
CHS與LBA互換
CHS地址可用以下公式轉成LBA
其中
- #c、#h、#s分別是磁柱、磁頭、扇區的編號
- #lba是邏輯區塊編號
- H=heads per cylinder,每個磁柱的磁頭數
- S=sectors per track,每磁道的扇區數
LBA可用以下公式對應到CHS
#c =#lba /(S * H) #h =(#lba / S)%H #s =(#lba%S)+1其中
- / 是整數除法
- % 是取整數除法中的余數
- 請注意,當今的磁盤使用ZBR(Zone Bit Recording, 等密度記錄)方式,實際的每軌扇區數得根據它是哪一軌。不過磁盤還是會提供這個參數來符合公式,內部再自動調整。
- ZBR區位記錄:在計算機存儲中,區域位記錄(ZBR)是磁盤驅動器用來優化磁道以增加數據容量的一種方法。它通過在外部磁道上每個區域放置比內部磁道更多的扇區來實現此目的,了解即可。
例如:
CHS總數=[600, 10, 84],求#lba=1234所對應的CHS編號: 1234/84=14 余 58 #s = 1 + 58 = 59 14/10=1 余 4 #c = 1 #h = 4 #chs =(1,4,59) 驗算: (1*10+4)*84+59-1=14*84+58=1234硬盤讀寫數據的原理
在每個硬盤的中心都有大量高速旋轉的磁盤,在每個磁盤的表面都有高速掃過的讀寫磁頭。每個磁盤上都覆蓋著一層薄薄的微小的磁化金屬粒,數據以一種肉眼無法分辨的形式存在。很多組微小顆粒形成的磁化圖案,記錄形成了數據。每一組又稱為比特(bit),所有微粒都按照自身的磁性排列,形成兩種狀態之一,對應0或者1。將比特信息通過電磁鐵轉換成電流,數據就能被讀寫在硬盤上。這塊磁鐵會產生一個強大磁場,足以改變金屬微粒的磁性。當信息寫入磁盤,驅動使用磁讀取器將其還原成有意義的形式,類似于留聲機針將唱片紋路轉化成音樂。
TED的視頻用動畫的方式演示了硬盤的讀寫數據的原理,請看 [中字][TED-ED]計算機內部部件是如何工作的
磁盤讀寫數據所花費的時間
在了解了硬盤的基本原理之后,不難推算出,磁盤完成一個I/O請求(磁盤上數據讀取和寫入)所花費的時間,它由尋道時間、旋轉延遲和數據傳輸時間三部分構成。所花費的時間可以分為三個部分。
所謂尋道時間,其實就是磁臂移動到指定磁道所需要的時間,這部分時間又可以分為兩部分:
尋道時間=啟動磁臂的時間+常數*所需移動的磁道數
其中常數和驅動器的的硬件相關,啟動磁臂的時間也和驅動器的硬件相關
旋轉延遲指的是把扇區移動到磁頭下面的時間。這個時間和驅動器的轉數有關。通常用磁盤旋轉一周所需時間的1/2表示。大多數硬盤以5400(90赫茲)或7200(120赫茲)rpm(每分鐘轉數)的速度旋轉磁盤。比如:7200rpm的磁盤平均旋轉延遲大約為60*1000/7200/2 = 4.17ms,而轉速為15000rpm的磁盤其平均旋轉延遲為2ms。旋轉延遲只和硬件有關。
傳輸時間指的是從磁盤讀出或將數據寫入磁盤的時間。這個時間等于:所需要讀寫的字節數/每秒轉速*每扇區的字節數
硬盤與軟盤的扇區編號
硬盤在進行扇區編號時與軟盤有一些區別,在軟盤的一個磁道中,扇區號一次編排,即1、2、3…n扇區。由于硬盤的轉速較高,磁頭在完成某個扇區數據的讀寫后,必須將數據傳輸到微機,這需要一個時間,但是這時硬盤在繼續高速旋轉,當數據傳輸完成后,磁頭讀寫第二個扇區時,磁盤已經旋轉到了另外一個扇區。因此在早期硬盤中,扇區號是按照某個間隔系數跳躍編排的。比 如,2號扇區并不是1號扇區后的按順序的第一個,而是第八個,3號扇區又是2號扇區后的按順序的第八個,依此類推,這個“八”稱為 交叉因子。
硬盤驅動器如何工作?
交互式3D模型說明硬盤驅動器如何磁性存儲信息
總結
以上是生活随笔為你收集整理的磁盘结构和工作原理以及LBA与CHS的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MFS分布式存储 心得体会
- 下一篇: 外骨骼机器人(三):Lokomat减重系