1. 程式人生 > >NTFS檔案系統詳解(一)之硬碟基本資訊

NTFS檔案系統詳解(一)之硬碟基本資訊

本文參考自部落格

這裡寫圖片描述

一般硬碟正面貼有產品標籤,主要包括廠家資訊和產品資訊,如商標、型號、序列號、生產日期、容量、引數和主從設定方法等。這些資訊是正確使用硬碟的基本依據,下面將逐步介紹它們的含義。

硬碟主要由盤體、控制電路板和介面部件等組成,如圖1-1所示。盤體是一個密封的腔體。硬碟的內部結構通常是指盤體的內部結構;控制電路板上主要有硬碟BIOS、硬碟快取(即CACHE)和主控制晶片等單元,如圖1-2所示;硬碟介面包括電源插座、資料介面和主、從跳線,如圖1-3所示。

這裡寫圖片描述

電源插座連線電源,為硬碟工作提供電力保證。資料介面是硬碟與主機板、記憶體之間進行資料交換的通道,使用一根40針40線(早期)或40針80線(當前)的IDE介面電纜進行連線。新增加的40線是訊號遮蔽線,用於遮蔽高速高頻資料傳輸過程中的串擾。中間的主、從盤跳線插座,用以設定主、從硬碟,即設定硬碟驅動器的訪問順序。其設定方法一般標註在盤體外的標籤上,也有一些標註在介面處,早期的硬碟還可能印在電路板上。

此外,在硬碟表面有一個透氣孔(見圖1-1),它的作用是使硬碟內部氣壓與外部大氣壓保持一致。由於盤體是密封的,所以,這個透氣孔不直接和內部相通,而是經由一個高效過濾器和盤體相通,用以保證盤體內部的潔淨無塵,使用中注意不要將它蓋住。

1.2 硬碟的內部結構

硬碟的內部結構通常專指盤體的內部結構。盤體是一個密封的腔體,裡面密封著磁頭、碟片(磁片、碟片)等部件,如圖1-4所示。

這裡寫圖片描述

硬碟的碟片是硬質磁性合金碟片,片厚一般在0.5mm左右,直徑主要有1.8in(1in=25.4mm)、2.5in、3.5in和5.25in 4種,其中2.5in和3.5in碟片應用最廣。碟片的轉速與碟片大小有關,考慮到慣性及碟片的穩定性,碟片越大轉速越低。一般來講,2.5in硬碟的轉速在5 400 r/min~7 200 r/ min之間;3.5in硬碟的轉速在4 500 r/min~5 400 r/min之間;而5.25in硬碟轉速則在3 600 r/min~4 500 r/min之間。隨著技術的進步,現在2.5in硬碟的轉速最高已達15 000 r/min,3.5in硬碟的轉速最高已達12 000 r/min。

有的硬碟只裝一張碟片,有的硬碟則有多張碟片。這些碟片安裝在主軸電機的轉軸上,在主軸電機的帶動下高速旋轉。每張碟片的容量稱為單碟容量,而硬碟的容量就是所有碟片容量的總和。早期硬碟由於單碟容量低,所以,碟片較多,有的甚至多達10餘片,現代硬碟的碟片一般只有少數幾片。一塊硬碟內的所有碟片都是完全一樣的,不然控制部分就太複雜了。一個牌子的一個系列一般都用同一種碟片,使用不同數量的碟片,就出現了一個系列不同容量的硬碟產品。

盤體的完整構造如圖1-5所示。

這裡寫圖片描述

硬碟驅動器採用高精度、輕型磁頭驅動/定位系統。這種系統能使磁頭在盤面上快速移動,可在極短的時間內精確地定位在由計算機指令指定的磁軌上。目前,磁軌密度已高達5 400Tpi(每英寸磁軌數)或更高;人們還在研究各種新方法,如在盤上擠壓(或刻蝕)圖形、凹槽和斑點等作為定位和跟蹤標記,以提高到和光碟相等的道密度,從而在保持磁碟機高速度、高位密度和高可靠性的優勢下,大幅度提高儲存容量。

硬碟驅動器內的電機都是無刷電機,在高速軸承支援下機械磨損很小,可以長時間連續工作。高速旋轉的盤體產生明顯的陀螺效應,所以,在硬碟工作時不宜搬動,否則,將增加軸承的工作負荷。為了高速儲存和讀取資訊,硬碟驅動器的磁頭質量小,慣性也小,所以,硬碟驅動器的尋道速度明顯快於軟碟機和光碟機。

硬碟驅動器磁頭與磁頭臂及伺服定位系統是一個整體。伺服定位系統由磁頭臂後的線圈和固定在底板上的電磁控制系統組成。由於定位系統限制,磁頭臂只能在碟片的內外磁軌之間移動。因此,不管開機還是關機,磁頭總在碟片上;所不同的是,關機時磁頭停留在碟片啟停區,開機時磁頭“飛行”在磁碟片上方。

硬碟上的資料是如何組織與管理的呢?硬碟首先在邏輯上被劃分為磁軌、柱面以及扇區,其結構關係如圖1-6所示。

這裡寫圖片描述

每個碟片的每個面都有一個讀寫磁頭,磁碟盤面區域的劃分如圖1-7所示。磁頭靠近主軸接觸的表面,即線速度最小的地方,是一個特殊的區域,它不存放任何資料,稱為啟停區或著陸區(Landing Zone),啟停區外就是資料區。在最外圈,離主軸最遠的地方是“0”磁軌,硬碟資料的存放就是從最外圈開始的。那麼,磁頭是如何找到“0”磁軌的位置的呢?從圖1-5中可以看到,有一個“0”磁軌檢測器,由它來完成硬碟的初始定位。“0”磁軌是如此的重要,以致很多硬碟僅僅因為“0”磁軌損壞就報廢,這是非常可惜的。這種故障的修復技術在後面的章節中有詳細的介紹。

這裡寫圖片描述

早期的硬碟在每次關機之前需要執行一個被稱為Parking的程式,其作用是讓磁頭回到啟停區。現代硬碟在設計上已摒棄了這個雖不復雜卻很讓人不愉快的小缺陷。硬碟不工作時,磁頭停留在啟停區,當需要從硬碟讀寫資料時,磁碟開始旋轉。旋轉速度達到額定的高速時,磁頭就會因碟片旋轉產生的氣流而擡起,這時磁頭才向盤片存放資料的區域移動。碟片旋轉產生的氣流相當強,足以使磁頭托起,並與盤面保持一個微小的距離。這個距離越小,磁頭讀寫資料的靈敏度就越高,當然對硬碟各部件的要求也越高。早期設計的磁碟驅動器使磁頭保持在盤面上方几微米處飛行。稍後一些設計使磁頭在盤面上的飛行高度降到約0.1μm~0.5μm,現在的水平已經達到0.005μm~0.01μm,這只是人類頭髮直徑的千分之一。氣流既能使磁頭脫離開盤面,又能使它保持在離盤面足夠近的地方,非常緊密地跟隨著磁碟表面呈起伏運動,使磁頭飛行處於嚴格受控狀態。磁頭必須飛行在盤面上方,而不是接觸盤面,這種位置可避免擦傷磁性塗層,而更重要的是不讓磁性塗層損傷磁頭。但是,磁頭也不能離盤面太遠,否則,就不能使盤面達到足夠強的磁化,難以讀出盤上的磁化翻轉(磁極轉換形式,是磁碟上實際記錄資料的方式)。

硬碟驅動器磁頭的飛行懸浮高度低、速度快,一旦有小的塵埃進入硬碟密封腔內,或者一旦磁頭與盤體發生碰撞,就可能造成資料丟失,形成壞塊,甚至造成磁頭和盤體的損壞。所以,硬碟系統的密封一定要可靠,在非專業條件下絕對不能開啟硬碟密封腔,否則,灰塵進入後會加速硬碟的損壞。另外,硬碟驅動器磁頭的尋道伺服電機多采用音圈式旋轉或直線運動步進電機,在伺服跟蹤的調節下精確地跟蹤碟片的磁軌,所以,硬碟工作時不要有衝擊碰撞,搬動時要小心輕放。

這種硬碟就是採用溫徹斯特(Winchester)技術製造的硬碟,所以也被稱為溫盤。其結構特點如下。

①磁頭、碟片及運動機構密封在盤體內。

②磁頭在啟動、停止時與碟片接觸,在工作時因碟片高速旋轉,帶動磁頭“懸浮”在碟片上面呈飛行狀態(空氣動力學原理),“懸浮”的高度約為0.1μm~0.3μm,這個高度非常小,圖1-8標出了這個高度與頭髮、煙塵和手指印的大小比較關係,從這裡可以直觀地“看”出這個高度有多“高”。

這裡寫圖片描述

③磁頭工作時與碟片不直接接觸,所以,磁頭的載入較小,磁頭可以做得很精緻,檢測磁軌的能力很強,可大大提高位密度。

④磁碟表面非常平整光滑,可以做鏡面使用。

下面對“盤面”、“磁軌”、“柱面”和“扇區”的含義逐一進行介紹。

  1. 盤面號

硬碟的碟片一般用鋁合金材料做基片,高速硬碟也可能用玻璃做基片。玻璃基片更容易達到所需的平面度和光潔度,且有很高的硬度。磁頭傳動裝置是使磁頭部件作徑向移動的部件,通常有兩種型別的傳動裝置。一種是齒條傳動的步進電機傳動裝置;另一種是音圈電機傳動裝置。前者是固定推算的傳動定位器,而後者則採用伺服反饋返回到正確的位置上。磁頭傳動裝置以很小的等距離使磁頭部件做徑向移動,用以變換磁軌。

硬碟的每一個碟片都有兩個盤面(Side),即上、下盤面,一般每個盤面都會利用,都可以儲存資料,成為有效碟片,也有極個別的硬碟盤面數為單數。每一個這樣的有效盤面都有一個盤面號,按順序從上至下從“0”開始依次編號。在硬碟系統中,盤面號又叫磁頭號,因為每一個有效盤面都有一個對應的讀寫磁頭。硬碟的碟片組在2~14片不等,通常有2~3個碟片,故盤面號(磁頭號)為0~3或0~5。

  1. 磁軌

磁碟在格式化時被劃分成許多同心圓,這些同心圓軌跡叫做磁軌(Track)。磁軌從外向內從0開始順序編號。硬碟的每一個盤面有300~1 024個磁軌,新式大容量硬碟每面的磁軌數更多。資訊以脈衝串的形式記錄在這些軌跡中,這些同心圓不是連續記錄資料,而是被劃分成一段段的圓弧,這些圓弧的角速度一樣。由於徑向長度不一樣,所以,線速度也不一樣,外圈的線速度較內圈的線速度大,即同樣的轉速下,外圈在同樣時間段裡,劃過的圓弧長度要比內圈劃過的圓弧長度大。每段圓弧叫做一個扇區,扇區從“1”開始編號,每個扇區中的資料作為一個單元同時讀出或寫入。一個標準的3.5in硬碟盤面通常有幾百到幾千條磁軌。磁軌是“看”不見的,只是盤面上以特殊形式磁化了的一些磁化區,在磁碟格式化時就已規劃完畢。

  1. 柱面

所有盤面上的同一磁軌構成一個圓柱,通常稱做柱面(Cylinder),每個圓柱上的磁頭由上而下從“0”開始編號。資料的讀/寫按柱面進行,即磁頭讀/寫資料時首先在同一柱面內從“0”磁頭開始進行操作,依次向下在同一柱面的不同盤面即磁頭上進行操作,只在同一柱面所有的磁頭全部讀/寫完畢後磁頭才轉移到下一柱面,因為選取磁頭只需通過電子切換即可,而選取柱面則必須通過機械切換。電子切換相當快,比在機械上磁頭向鄰近磁軌移動快得多,所以,資料的讀/寫按柱面進行,而不按盤面進行。也就是說,一個磁軌寫滿資料後,就在同一柱面的下一個盤面來寫,一個柱面寫滿後,才移到下一個扇區開始寫資料。讀資料也按照這種方式進行,這樣就提高了硬碟的讀/寫效率。

一塊硬碟驅動器的圓柱數(或每個盤面的磁軌數)既取決於每條磁軌的寬窄(同樣,也與磁頭的大小有關),也取決於定位機構所決定的磁軌間步距的大小。更深層的內容請參考其他書籍,限於篇幅,這裡不再深入介紹。

  1. 扇區

作業系統以扇區(Sector)形式將資訊儲存在硬碟上,每個扇區包括512個位元組的資料和一些其他資訊。一個扇區有兩個主要部分:儲存資料地點的識別符號和儲存資料的資料段,如圖1-9所示。

這裡寫圖片描述

識別符號就是扇區頭標,包括組成扇區三維地址的三個數字:扇區所在的磁頭(或盤面)、磁軌(或柱面號)以及扇區在磁軌上的位置即扇區號。頭標中還包括一個欄位,其中有顯示扇區是否能可靠儲存資料,或者是否已發現某個故障因而不宜使用的標記。有些硬碟控制器在扇區頭標中還記錄有指示字,可在原扇區出錯時指引磁碟轉到替換扇區或磁軌。最後,扇區頭標以迴圈冗餘校驗(CRC)值作為結束,以供控制器檢驗扇區頭標的讀出情況,確保準確無誤。

扇區的第二個主要部分是儲存資料的資料段,可分為資料和保護資料的糾錯碼(ECC)。在初始準備期間,計算機用512個虛擬資訊位元組(實際資料的存放地)和與這些虛擬資訊位元組相應的ECC數字填入這個部分。

扇區頭標包含一個可識別磁軌上該扇區的扇區號。有趣的是,這些扇區號物理上並不連續編號,它們不必用任何特定的順序指定。扇區頭標的設計允許扇區號可以從1到某個最大值,某些情況下可達255。磁碟控制器並不關心上述範圍中什麼編號安排在哪一個扇區頭標中。在很特殊的情況下,扇區還可以共用相同的編號。磁碟控制器甚至根本就不管資料區有多大,只管讀出它所找到的資料,或者寫入要求它寫的資料。

給扇區編號的最簡單方法是l,2,3,4,5,6等順序編號。如果扇區按順序繞著磁軌依次編號,那麼,控制器在處理一個扇區的資料期間,磁碟旋轉太遠,超過扇區間的間隔(這個間隔很小),控制器要讀出或寫入的下一扇區已經通過磁頭,也許是相當大的一段距離。在這種情況下,磁碟控制器就只能等待磁碟再次旋轉幾乎一週,才能使得需要的扇區到達磁頭下面。

顯然,要解決這個問題,靠加大扇區間的間隔是不現實的,那會浪費許多磁碟空間。許多年前,IBM的一位傑出工程師想出了一個絕妙的辦法,即對扇區不使用順序編號,而是使用一個交叉因子(interleave)進行編號。交叉因子用比值的方法來表示,如3﹕1表示磁軌上的第1個扇區為1號扇區,跳過兩個扇區即第4個扇區為2號扇區,這個過程持續下去直到給每個物理扇區編上邏輯號為止。例如,每磁軌有17個扇區的磁碟按2﹕1的交叉因子編號就是:l,10,2,11,3,12,4,13,5,14,6,15,7,16,8,17,9,而按3﹕1的交叉因子編號就是:l,7,13,2,8,14,3,9,15,4,10,16,5,11,17,6,12。當設定1﹕l的交叉因子時,如果硬碟控制器處理資訊足夠快,那麼,讀出磁軌上的全部扇區只需要旋轉一週;但如果硬碟控制器的後處理動作沒有這麼快,磁碟所轉的圈數就等於一個磁軌上的扇區數,才能讀出每個磁軌上的全部資料。將交叉因子設定為2﹕1時,磁頭要讀出磁軌上的全部資料,磁碟只需轉兩週。如果2﹕1的交叉因子仍不夠慢,磁碟旋轉的週數約為磁軌的扇區數,這時,可將交叉因子調整為3﹕1,如圖1-10所示。

這裡寫圖片描述

圖1-10所示的是典型的MFM(Modified Frequency Modulation,改進型調頻制編碼)硬碟,每磁軌有17個扇區,畫出了用三種不同的扇區交叉因子編號的情況。最外圈的磁軌(0號柱面)上的扇區用簡單的順序連續編號,相當於扇區交叉因子是1﹕1。1號磁軌(柱面)的扇區按2﹕1的交叉因子編號,而2號磁軌按3﹕1的扇區交叉因子編號。

早期的硬碟管理工作中,設定交叉因子需要使用者自己完成。用BIOS中的低階格式化程式對硬碟進行低階格式化時,就需要指定交叉因子,有時還需要設定幾種不同的值來比較其效能,而後確定一個比較好的值,以期硬碟的效能較好。現在的硬碟BIOS已經自己解決這個問題,所以,一般低階格式化程式不再提供這一選項設定。

系統將檔案儲存到磁碟上時,按柱面、磁頭、扇區的方式進行,即最先是第1磁軌的第一磁頭下(也就是第1盤面的第一磁軌)的所有扇區,然後,是同一柱面的下一磁頭,……,一個柱面儲存滿後就推進到下一個柱面,直到把檔案內容全部寫入磁碟。系統也以相同的順序讀出資料。讀出資料時通過告訴磁碟控制器要讀出扇區所在的柱面號、磁頭號和扇區號(實體地址的三個組成部分)進行。磁碟控制器則直接使磁頭部件步進到相應的柱面,選通相應的磁頭,等待要求的扇區移動到磁頭下。在扇區到來時,磁碟控制器讀出每個扇區的頭標,把這些頭標中的地址資訊與期待檢出的磁頭和柱面號做比較(即尋道),然後,尋找要求的扇區號。待磁碟控制器找到該扇區頭標時,根據其任務是寫扇區還是讀扇區,來決定是轉換寫電路,還是讀出資料和尾部記錄。找到扇區後,磁碟控制器必須在繼續尋找下一個扇區之前對該扇區的資訊進行後處理。如果是讀資料,控制器計算此資料的ECC碼,然後,把ECC碼與已記錄的ECC碼相比較。如果是寫資料,控制器計算出此資料的ECC碼,與資料一起儲存。在控制器對此扇區中的資料進行必要處理期間,磁碟繼續旋轉。由於對資訊的後處理需要耗費一定的時間,在這段時間內,磁碟已轉了相當的角度。

交叉因子的確定是一個系統級的問題。一個特定硬碟驅動器的交叉因子取決於:磁碟控制器的速度、主機板的時鐘速度、與控制器相連的輸出匯流排的操作速度等。如果磁碟的交叉因子值太高,就需多花一些時間等待資料在磁碟上存入和讀出。如果交叉因子值太低,就會大大降低磁碟效能。

前面已經述及,系統在磁碟上寫入資訊時,寫滿一個磁軌後轉到同一柱面的下一個磁頭,當柱面寫滿時,再轉向下一柱面。從同一柱面的一個磁軌到另一個磁軌,從一個柱面轉到下一個柱面,每一個轉換都需要時間,在此期間磁碟始終保持旋轉,這就會帶來一個問題:假定系統剛剛結束對一個磁軌前一個扇區的寫入,並且已經設定了最佳交叉因子比值,現在準備在下一磁軌的第一扇區寫入,這時,必須等到磁頭轉換好,讓磁頭部件重新準備定位在下一道上。如果這種操作佔用的時間超過了一點,儘管是交叉存取,磁頭仍會延遲到達。這個問題的解決辦法是以原先磁軌所在位置為基準,把新的磁軌上全部扇區號移動約一個或幾個扇區位置,這就是磁頭扭斜。磁頭扭斜可以理解為柱面與柱面之間的交叉因子,已由生產廠設定好,使用者一般不用去改變它。磁頭扭斜的更改比較困難,但是,它們只在檔案很長、超過磁軌結尾進行讀出和寫入時才發揮作用,所以,扭斜設定不正確所帶來的時間損失比採用不正確的扇區交叉因子值帶來的損失要小得多。交叉因子和磁頭扭斜可用專用工具軟體來測試和更改。更具體的內容這裡就不再詳述,畢竟現在很多使用者都沒有見過這些引數。

扇區號儲存在扇區頭標中,扇區交叉因子和磁頭扭斜的資訊也存放在這裡。最初,硬碟低階格式化程式只是行使有關磁碟控制器的專門職能來完成設定任務。由於這個過程可能破壞低階格式化的磁軌上的全部資料,也極少採用。

扇區交叉因子由寫入到扇區頭標中的數字設定,所以,每個磁軌可以有自己的交叉因子。在大多數驅動器中,所有磁軌都有相同的交叉因子。但有時因為操作上的原因,也可能導致各磁軌有不同的扇區交叉因子。如在交叉因子重置程式工作時,由於斷電或人為中斷,就會造成一些磁軌的交叉因子發生了改變,而另一些磁軌的交叉因子沒有改變。這種不一致性對計算機不會產生不利影響,只是有最佳交叉因子的磁軌要比其他磁軌的工作速度更快。

介紹完硬碟的基本結構後,我們再來看看一個擁有三個基本分割槽加一個擴充套件分割槽的硬碟結構

這裡寫圖片描述

其中如果只用到四個分割槽,則第四個分割槽也可以做成基本分割槽,但是如果分割槽大於四個,因為在MBR裡只有四個分割槽表項,所以只能容下四個分割槽的資訊.需要多個分割槽的時候就需要一個分割槽是擴充套件分割槽,然後在擴充套件分割槽裡面再分出分割槽

擴充套件分割槽中的每個邏輯驅動器都存在一個類似於MBR的擴充套件引導記錄( Extended Boot Record, EBR),也有人稱之為虛擬mbr或擴充套件mbr,意思是一樣的。擴充套件引導記錄包括一個擴充套件分割槽表和該扇區的標籤。擴充套件引導記錄將記錄只包含擴充套件分割槽中每個 邏輯驅動器的第一個柱面的第一面的資訊。一個邏輯驅動器中的引導扇區一般位於相對扇區32或63。但是,如果磁碟上沒有擴充套件分割槽,那麼就不會有擴充套件引導記 錄和邏輯驅動器。第一個邏輯驅動器的擴充套件分割槽表中的第一項指向它自身的引導扇區。第二項指向下一個邏輯驅動器的EBR。如果不存在進一步的邏輯驅動器,第 二項就不會使用,而且被記錄成一系列零。如果有附加的邏輯驅動器,那麼第二個邏輯驅動器的擴充套件分割槽表的第一項會指向它本身的引導扇區。第二個邏輯驅動器的 擴充套件分割槽表的第二項指向下一個邏輯驅動器的EBR。擴充套件分割槽表的第三項和第四項永遠都不會被使用。

這裡寫圖片描述