1、磁盤基礎知識
1.1 磁頭
磁頭是利用氣流漂浮在盤片上,并沒有接觸到盤片,因而可以在各軌間高速來回移動,但如果磁頭距離盤片太高,讀取的信號就會太弱;太低又會磨到盤片表面,所以盤片表面必須相當光滑平整,任何異物和塵埃均會使得磁頭摩擦到表面而造成數據永久性損壞。
硬盤讀寫磁頭為了能在磁盤表面高速來回移動讀取數據,則需漂浮在磁盤表面上,但是不能接觸,接觸就會造成劃傷。實現這種技術,完全是靠磁盤旋轉時,在盤片上空產生氣流,利用空氣動力學使磁頭懸浮于磁片上空。
磁盤每個時刻只允許一個磁頭來讀寫數據,也就是說,不管盤體內盤片和磁頭再多,也不可能提高硬盤的吞吐量和IO性能,只能提高容量。
1.2 盤面
硬盤的每一個盤片都有兩個盤面,即上、下盤面;每個盤面都能利用,都可以存儲數據。
盤面號從上到下的順序從0開始依次編號。
每個盤片的每個面都有一個對應的讀寫磁頭,磁頭起初停在盤片的最內圈,這是一個特殊區域,它不存放任何數據,稱為啟停區或著陸區,啟停區外就是數據區。
在最外圈,離主軸最遠的地方是0磁道(track),硬盤數據的存放就是從最外圈開始的。
0磁道存放著用于操作系統啟動所必需的程序代碼,因為PC啟動后BIOS程序在加載任何操作系統或其它程序時,總是默認從磁盤的0磁道讀取程序代碼來運行。
1.3 磁道
磁盤在格式化時被劃分為許多同心圓,這些同心圓軌跡叫做磁道。
磁道從最外圈向內圈從0開始順序編號。
這些同心圓磁道不是連續記錄數據,而是被劃分成一段段的圓弧。
在同樣的轉速下,外圈在相同的時間段里,劃過的圓弧長度要比內圈劃過的圓弧長度大,因此外圈數據的讀寫要比內圈塊。
每段圓弧叫做一個扇區,扇區從1開始編號,每個扇區中的數據作為一個單元同時讀出或寫入,是讀寫的最小單位;不可能發生讀寫半個或者四分之一個這種小于一個扇區的情況,因為磁頭只能定位到某個扇區的開頭或者結尾,而不能在扇區內部定位。所以,一個扇區內部的數據是連續流式記錄的。
劃分磁道和扇區的過程,叫做低級格式化,通常在硬盤出廠時就已經格式化完畢了;相對于低級格式化來說,高級格式化指的對磁盤上所存儲的數據進行文件系統的標記,而不是對扇區和磁道進行磁化標記。
1.4 柱面
所有盤面上的同一編號的磁道,在豎直方向上構成一個圓柱,通常稱作柱面。
每個圓柱上的磁頭由上而下從0開始編號。
數據的讀寫按柱面進行,即磁頭讀寫數據時首先在同一柱面內從0磁頭開始進行操作,依次向下在同一柱面的不同盤面(磁頭)上進行操作;只有在同一柱面所有的磁頭全部讀寫完畢后磁頭才轉移到下一柱面,因為選取磁頭只需通過電子切換即可,而選取柱面則必須通過機械切換,即尋道。
電子切換相當快,比使用機械將磁頭向鄰近磁道移動要快得多,所以數據的讀寫按柱面進行,而不按盤面進行。也就是說,一個磁道寫滿數據后,就在同一柱面的下一個盤面來寫。一個柱面寫滿后,才移到下一個柱面開始寫數據,這樣可以減少尋道的頻繁度。
1.5 扇區
將每個環形磁道等距離切割,形成等長度的圓弧,每個圓弧就是一個扇區。
劃分扇區的目的是為了使數據存儲更加條理化,就像一個大倉庫要劃分更多的房間一樣。每個扇區可以存放512B的數據和一些其它數據。
一個扇區有兩個主要部分:存儲數據地點的標識符和存儲數據的數據段。
扇區頭標包括組成扇區三級地址的三個數字:
(1) 扇區所在的柱面(磁道)
(2) 磁頭編號
(3) 扇區在磁道上的位置,即扇區號
柱面(Cylinder)、磁頭(Head)和扇區(Sector)三者簡稱CHS,所以扇區的地址又稱為CHS地址。
磁頭通過讀取當前扇區的頭標中的CHS地址,就可以知道當前是處于盤片上的哪個位置,比如內圈還是外圈,哪個磁頭正在讀寫(同一時刻只能有一個磁頭在讀寫)等。
CHS編址方式在早期的小容量硬盤中非常流行,但是目前的大容量硬盤的設計和低級格式化方式已經有所變化,所以CHS編址方式已不再使用,而轉為LBA編址方式。LBA編址方式不再劃分柱面和磁頭號,這些數據由硬盤自身保留,而硬盤對外提供的地址全部為線性的地址,即LBA地址。
所謂線性,指的是把磁盤想象成只有一個磁道,這個磁道是無限長的直線,扇區為這條直線上的等長線段,從1開始編號,直到無限遠。
1.6 基于CHS編址方式的磁盤最大容量
柱面數cylinders表示硬盤盤片每一面上有多少條磁道,最大為1023(用10個二進制位存儲)。
磁頭數heads表示硬盤總共有幾個磁頭,也就是幾個盤面,最大為255(用8個二進制位存儲)。
扇區數sectors表示每一條磁道上有多少扇區,最大為63(用6個二進制位存儲)。
每個扇區一般是512B,目前很多大型磁盤陣列所使用的硬盤,由于陣列控制器需要做一些諸如校驗信息之類的特殊存儲,這些磁盤都被格式化為每扇區520B。
如果按照每扇區512B來計算,磁盤最大容量為1023*255*63*512B/(1024*1024)=8024MB,這就是所謂8GB容量限制的原因。
磁盤驅動器內怎樣放下255個磁頭呢?這是不可能的。目前的硬盤一般可以有1盤片、2盤片或者4盤片,這樣就對應著2、4磁頭或者8磁頭。那么這樣算來,硬盤實際容量一定小于8GB了?顯然不是這樣的,所謂255個磁頭,這只是一個邏輯上的說法。而每條磁道上真的最多只有64個扇區么?當然也不是,一條磁道上實際的扇區數遠大于64,這樣就分攤了磁頭數實際少于255個所產生的“容量減小”。CHS編址方式沿襲了老的傳統,不愿意去作修改導致的;而這種沿襲達到了極限之后,最終導致LBA編址方式替代了CHS編址方式。
頭標中還包括一個字段,其中有顯示扇區是否能可靠存儲數據,或者是已發現某個故障因而不宜使用的標記。有些硬盤控制器在扇區頭標中還記錄有指示字,可在原扇區出錯時指引磁頭跳轉到替換扇區或磁道。最后扇區頭標以循環冗余校驗CRC值作為結束,以供控制器檢驗扇區頭標的讀出情況,確保準確無誤。
系統在磁盤上寫入信息時,寫滿一個磁道后會轉到同一柱面的下一個磁頭,當柱面寫滿時,再轉向下一柱面。從同一盤面的一個磁道轉到另一個磁道,也就是從一個柱面轉到下一個柱面,這個動作叫做換道。
本文參考引用了<<大話存儲Ⅱ—存儲系統架構與底層原理極限剖析>>
原創文章,作者:yangsh,如若轉載,請注明出處:http://www.www58058.com/44427