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