一、磁盤的電磁原理:
1.1 電磁效應(yīng):
電流通過導(dǎo)體時(shí),會(huì)在導(dǎo)體的周圍會(huì)產(chǎn)生感應(yīng)磁場(chǎng)。感應(yīng)磁場(chǎng)的磁極隨電流方向的改變而改變。

1.2 電磁感應(yīng):
當(dāng)閉合電路內(nèi)的磁場(chǎng)發(fā)生變化(磁通量變化)時(shí),閉合電路內(nèi)會(huì)產(chǎn)生感應(yīng)電動(dòng)勢(shì)。即閉合電路內(nèi)磁場(chǎng)的變化會(huì)使電路內(nèi)產(chǎn)生感應(yīng)電流。 電流的方向與磁極方向有關(guān)。

1.3 磁頭的結(jié)構(gòu):

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

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

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

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

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

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

磁盤讀寫數(shù)據(jù)是按柱面進(jìn)行,即在讀寫時(shí)磁頭先尋找到數(shù)據(jù)所在的柱面(尋找磁道),然后再判斷數(shù)據(jù)所在的盤面。這樣大大提升了磁盤的讀寫效率,因?yàn)楸P面的確定是電子操作速度非???,但磁道的尋找需要電動(dòng)馬達(dá)帶動(dòng)磁頭移到到指定磁道上,是機(jī)械操作。
2.5 磁盤讀寫耗時(shí):
磁盤讀寫時(shí)耗 = 尋道時(shí)間 + 旋轉(zhuǎn)延遲時(shí)間 + 操作時(shí)耗
尋道時(shí)間:讀寫數(shù)據(jù)時(shí)磁頭首先要移到到指定磁道(柱面),這段時(shí)間稱為尋道時(shí)間
旋轉(zhuǎn)延遲時(shí)間:當(dāng)磁頭移動(dòng)到指定磁道后,需要等待要操作的扇區(qū)旋轉(zhuǎn)到磁頭的下方,這段時(shí)間稱為轉(zhuǎn)延遲時(shí)間
操作時(shí)耗:磁頭進(jìn)行讀寫操作花費(fèi)的時(shí)間