一、磁盤的電磁原理:
1.1 電磁效應:
電流通過導體時,會在導體的周圍會產生感應磁場。感應磁場的磁極隨電流方向的改變而改變。

1.2 電磁感應:
當閉合電路內的磁場發(fā)生變化(磁通量變化)時,閉合電路內會產生感應電動勢。即閉合電路內磁場的變化會使電路內產生感應電流。 電流的方向與磁極方向有關。

1.3 磁頭的結構:

磁頭是一個外面被線圈纏繞著的U型磁芯,可以看出當磁頭通電時便會產生磁場,磁場的方向隨電流方向的變化而變化。
1.4 磁盤的結構:
磁盤的表面涂有一層磁性物質,在未沒有外部磁場影響的情況下,磁盤表面的磁性粒子的磁極方向是不會改變的。一般從未受到外部干擾的磁性粒子磁極方向是隨機的,于是出現(xiàn)互相抵消的情況,這時磁盤的表現(xiàn)出無磁極顯現(xiàn)。
1.5 磁盤的寫過程:
寫數(shù)據(jù)時磁頭移到到磁盤要寫入的位置,輸入電流產生感應磁場。受磁場的影響,磁頭下磁性粒子的磁極方向變?yōu)榕c磁場同向。如此通過給磁頭不同的電流方向,使得磁盤局部產生不同的磁極,產生的磁極在未受到外部磁場干擾下是不會改變的。如此便將電信號持久化到磁盤上(當然并不是一個磁極方向代表1另一個代表0).
1.6 磁盤的讀?。?/h4>
磁盤2.png

讀取磁盤信息時,不通電的磁頭在寫入數(shù)據(jù)的位置上移動,上面可知數(shù)據(jù)在磁盤上就是一些磁極方向不同的微小局部區(qū)域,由于各個域的磁極方向不完全同,所以磁頭在通過這些不同方向的區(qū)域時會產生不同方向的感應電流,這些微弱正負脈沖經過驅動的去噪擴大成為內存中的二進制數(shù)據(jù)。
在硬盤讀寫時,讀操作是遠快于寫操作的,而且讀/寫操作具有完全不同的特性,所以目前的硬盤一般都分離出讀和寫兩個磁頭,但原理還是不變的。
絕命毒師第五季第一季中,記錄著老白制毒過程的筆記本電腦被警方獲得并放到了物證室里。老白利用電磁效應,在物證室外弄了一個大‘磁鐵’破壞了筆記本里面的數(shù)據(jù),就是上面的原理。
二、磁盤結構

硬盤主要由碟片、磁頭、電機馬達、接口和控制電路控制芯片組成。
2.1 碟片與磁頭:
碟片的表面涂有磁性材料,厚度一般在0.5mm左右。碟片安裝在主軸馬達的轉軸上,工作時所有碟片在主軸馬達的帶動下高速旋轉。
每個碟片都有正反兩面,稱為盤面。第1個碟片的正面稱為0面,反面稱為1面,第2個碟片的正面稱為2面,反面稱為3面...依次類推。每個盤面都有一個對應磁頭負責讀寫該該盤面上的數(shù)據(jù)。盤面數(shù)和磁頭數(shù)是相等的。

關機時,磁頭停留在硬盤的停泊區(qū)。當磁盤工作時,磁頭移動到盤面上分,依靠磁盤的高速旋轉引起的空氣動力效應懸浮在盤面上,與盤面的距離不到1微米。磁頭在副軸馬達的帶動下可以在極短的時間內精確的切換到數(shù)據(jù)所在的磁道。
可以看出磁盤工作是一個極其細致活,哪怕一個灰塵都會造成磁盤的損壞,所以磁盤都是密封的,我們最好不要自行拆裝硬盤。也盡量不要再磁盤工作時劇烈的晃動磁盤。
2.2 磁道:
在碟片高速旋轉時磁頭保持不變,那么就會形成一個圓形的軌跡,這些同心的圓行軌跡就是磁道(Track)。數(shù)據(jù)保存在磁道上面。每個盤面上有多個磁道,但磁道之間并不是緊挨著的,因為磁化的單元挨的太近會互相影響。

在每個盤面的最外圈的磁道是“0”磁道,向盤心方向依次增長為1磁道,2磁...。數(shù)據(jù)從最外面的磁道開始存放。
2.3 扇區(qū):
盤面上可以劃分出很多的磁道,每條磁道容量從100多到300多kb不等,但我們讀寫并不需要每次都讀寫這么多數(shù)據(jù),所以又將磁道劃分為若干更小的弧段,每段稱為一個扇區(qū)(Sector)。扇區(qū)是磁盤進行讀寫操作的最小單位。
一般磁盤的一個扇區(qū)大小為512字節(jié),這也就意味著哪怕我們只存放1字節(jié)的數(shù)據(jù)也會占用磁盤的一個扇區(qū)512個字節(jié),讀取時也會讀取整個扇區(qū)的512個字節(jié)然后選擇需要的哪個字節(jié)。
2010年為了提升磁盤的效率和使用率又推出了4k大小的的扇區(qū)標準,這樣又出現(xiàn)了一個4k對齊問題,后面再講。
查看磁盤扇區(qū)大小:
cat /sys/block/sda/queue/physical_block_size
512
扇區(qū)是硬盤的最小操作單位,但扇區(qū)對于操作系統(tǒng)來說還是太小了,一般操作系統(tǒng)有自己的硬盤操作最小單位,在linux下一般為4k
查看操作系統(tǒng)IO大小:
tune2fs -l /dev/sda1|grep "Block size"
Block size: 4096
交叉因子
扇區(qū)是從1開始編號的而不是0,且扇區(qū)號是按照某個間隔交叉著編排,1扇區(qū)的后面并不是2號扇區(qū)。若1號扇區(qū)后面第八個扇區(qū)為2號扇區(qū),這個“八”就稱為交叉因子。
數(shù)據(jù)是存放在連續(xù)的扇區(qū)里(編號連續(xù)),系統(tǒng)對磁盤的io操作往往也是落在在連續(xù)的扇區(qū)。磁盤的旋轉速度非???,如果扇區(qū)按物理順序進行編號,那么當磁頭讀取完一個扇區(qū)后完全來不及定位到下一個連續(xù)的下扇區(qū),盤面就已經旋轉過了,這時只能等盤片旋轉完一圈,這極大浪費了時間,所以用交叉編排來解決這個問題。
交叉因子為1的扇區(qū)劃分:

2.4 柱面:
柱面是抽象出來的一個邏輯概念,盤面被劃分為1磁道,2磁道,3磁道....,不同盤面上相同編號的磁道組成了一個圓柱面,即柱面(Cylinder)。

磁盤讀寫數(shù)據(jù)是按柱面進行,即在讀寫時磁頭先尋找到數(shù)據(jù)所在的柱面(尋找磁道),然后再判斷數(shù)據(jù)所在的盤面。這樣大大提升了磁盤的讀寫效率,因為盤面的確定是電子操作速度非??欤诺赖膶ふ倚枰妱玉R達帶動磁頭移到到指定磁道上,是機械操作。
2.5 磁盤讀寫耗時:
磁盤讀寫時耗 = 尋道時間 + 旋轉延遲時間 + 操作時耗
尋道時間:讀寫數(shù)據(jù)時磁頭首先要移到到指定磁道(柱面),這段時間稱為尋道時間
旋轉延遲時間:當磁頭移動到指定磁道后,需要等待要操作的扇區(qū)旋轉到磁頭的下方,這段時間稱為轉延遲時間
操作時耗:磁頭進行讀寫操作花費的時間