磁碟工作原理與IO效能分析

2022-07-13 09:15:11 字數 3325 閱讀 9989

最近,在研究如何優化產品裝置的磁碟io效能,需要深入研究磁碟及檔案系統原理和工作機制,下面簡要總結下關於磁碟方面的東西,下篇文章再分享檔案系統的。

機械磁碟結構:

無論哪種機械硬碟,都主要由碟片、磁頭、碟片主軸、控制電機、磁頭控制器、資料轉換器、介面、快取等幾個部份組成。其中所有的碟片都固定在乙個旋轉軸上,這個軸即碟片主軸。而所有碟片之間是絕對平行的,在每個碟片的儲存面上都有乙個磁頭,磁頭與碟片之間的距離比頭髮 絲的直徑還小。所有的磁頭連在乙個磁頭控制器上,由磁頭控制器負責各個磁頭的運動。磁頭可沿碟片的半徑方向動作,而碟片以每分鐘數千轉到上萬轉的速度在高速旋轉,這樣磁頭就能對碟片上的指定位置進行資料的讀寫操作。

機械磁碟工作原理:

硬碟在邏輯上被劃分為磁頭、柱面以及扇區,磁碟上檔案的位置也是通過這幾個去標識的。下面對這幾個重要的概念先做下講解:

1.盤面

硬碟的碟片一般用鋁合金材料做基片,高速硬碟也可能用玻璃做基片。硬碟的每乙個碟片都有兩個盤面(side

),即上、下盤面,一般每個盤面都會利 用,都可以儲存資料,成為有效碟片,也有極個別的硬碟盤面數為單數。每乙個這樣的有效盤面都有乙個盤面號,按順序從上至下從「

0」開始依次編號。在硬碟系 統中,盤面號又叫磁頭號,因為每乙個有效盤面都有乙個對應的讀寫磁頭。硬碟的碟片組在2~

14片不等,通常有2~

3個碟片,故盤面號(磁頭號)為0~

3或 0~

5。2.磁軌

磁碟在格式化時被劃分成許多同心圓,這些同心圓軌跡叫做磁軌(track

)。磁軌從外向內從

0開始順序編號。硬碟的每乙個盤面有

300~

1 024

個磁軌,新式大容量硬碟每面的磁軌數更多。資訊以脈衝串的形式記錄在這些軌跡中,這些同心圓不是連續記錄資料,而是被劃分成一段段的圓弧,這些圓弧 的角速度一樣。由於徑向長度不一樣。

所以,線速度也不一樣,外圈的線速度較內圈的線速度大,即同樣的轉速下,外圈在同樣時間段裡,劃過的圓弧長度要比內圈 劃過的圓弧長度大。每段圓弧叫做乙個扇區,扇區從「1

」開始編號,每個扇區中的資料作為乙個單元同時讀出或寫入。乙個標準的3。

5寸硬碟盤面通常有幾百到 幾千條磁軌。磁軌是「看」不見的,只是盤面上以特殊形式磁化了的一些磁化區,在磁碟格式化時就已規劃完畢。

3.柱面

所有盤面上的同一磁軌構成乙個圓柱,通常稱做柱面(cylinder

),每個圓柱上的磁頭由上而下從「

0」開始編號。資料的讀

/寫按柱面進行,即磁 頭讀

/寫資料時首先在同一柱面內從「

0」磁頭開始進行操作,依次向下在同一柱面的不同盤面即磁頭上進行操作,只在同一柱面所有的磁頭全部讀

/寫完畢後磁頭才轉移到下一柱面,因為選取磁頭只需通過電子切換即可,而選取柱面則必須通過機械切換。

電子切換相當快,比在機械上磁頭向鄰近磁軌移動快得多,所以,資料 的讀/

寫按柱面進行,而不按盤面進行。也就是說,乙個磁軌寫滿資料後,就在同一柱面的下乙個盤面來寫,乙個柱面寫滿後,才移到下乙個柱面開始寫資料。讀資料也按照這種方式進行,這樣就提高了硬碟的讀/

寫效率。

4.扇區

作業系統以扇區(sector

)形式將資訊儲存在硬碟上,每個扇區包括

512個位元組的資料和一些其他資訊。乙個扇區有兩個主要部分:儲存資料地點的識別符號和儲存資料的資料段。

扇區的第乙個主要部分是識別符號。識別符號,就是扇區頭標,包括組成扇區三維位址的三個數字:扇區所在的磁頭(或盤面)、磁軌(或柱面號)以及扇區在磁 道上的位置即扇區號。頭標中還包括乙個字段,其中有顯示扇區是否能可靠儲存資料,或者是否已發現某個故障因而不宜使用的標記。有些硬碟控制器在扇區頭標中 還記錄有指示字,可在原扇區出錯時指引磁碟轉到替換扇區或磁軌。最後,扇區頭標以迴圈冗餘校驗(crc

)值作為結束,以供控制器檢驗扇區頭標的讀出情況, 確保準確無誤。

扇區的第二個主要部分是儲存資料的資料段,可分為資料和保護資料的糾錯碼(ecc

)。在初始準備期間,計算機用

512個虛擬資訊位元組(實際資料的存放地)和與這些虛擬資訊位元組相應的

ecc數字填入這個部分。

講完這幾個概念之後,我們來看看磁碟讀寫原理:

系統將檔案儲存到磁碟上時,按柱面、磁頭、扇區的方式進行,即最先是第1

磁軌的第一磁頭下(也就是第

1盤面的第一磁軌)的所有扇區,然後,是同一柱面的下一磁頭,……,乙個柱面儲存滿後就推進到下乙個柱面,直到把檔案內容全部寫入磁碟。

系統也以相同的順序讀出資料。讀出資料時通過告訴磁碟控制器要讀出扇區所在的柱面號、磁頭號和扇區號(實體地址的三個組成部分)進行。磁碟控制器則直接使磁頭部件步進到相應的柱面,選通相應的磁頭,等待要求的扇區移動到磁頭下。

扇區到來時,磁碟控制器讀出每個扇區的頭標,把這些頭標中的位址資訊與 期待檢出的磁頭和柱面號做比較(即尋道),然後,尋找要求的扇區號。待磁碟控制器找到該扇區頭標時,根據其任務是寫扇區還是讀扇區,來決定是轉換寫電路, 還是讀出資料和尾部記錄。

找到扇區後,磁碟控制器必須在繼續尋找下乙個扇區之前對該扇區的資訊進行後處理。如果是讀資料,控制器計算此資料的ecc

碼,然後,把

ecc碼與已記錄的

ecc碼相比較。如果是寫資料,控制器計算出此資料的

ecc碼,與資料一起儲存。在控制器對此扇區中的資料進行必要處理期間,磁 盤繼續旋轉。

磁碟隨機讀寫&

順序讀寫:

相信了解了磁碟工作原理之後,就不難理解為什麼磁碟隨機讀寫和順序讀寫速度上存在那麼大的差距了,因為資料隨機儲存將會導致磁碟讀寫資料時多次機械移動磁頭臂,移動磁頭臂尋找磁軌的這個時間稱為尋道時間,而一般硬碟的平均尋道時間在7.5

~ 14ms,它比碟片旋轉尋找扇區的時間還要長(當前磁碟已經可達15000rpm),因此,想要提高磁碟的io讀寫效能,需在軟體上下功夫,如何減少磁碟的隨機讀寫。這裡可以簡單列舉幾個方法:

1、減少檔案個數,使用大檔案,尤其linux ext

系列檔案系統

2、資料庫表不要儲存太大資料,可以採用分表方式減少單錶容量,因為錶太大資料庫索引的原理就會導致磁碟隨機讀寫增多

3、提公升每次寫磁碟的資料大小,資料先快取到buffer,等滿了或超時了再寫磁碟

4、使用fsck.ext4 -fn /dev/sda可以檢測磁碟碎片率,利用e4defrag工具手動進行碎片整理

磁碟 I O 效能

如果將 sql server 配置成僅包含幾個千兆位元組 gb 的資料,且不承擔繁重的讀或寫活動,便沒有太大的必要關注磁碟 i o 主題,以及在硬碟之間平衡 sql server i o 活動以獲取最佳效能。但是要建立包含成百上千 gb 位元組的資料且 或承擔繁重的讀和 或寫活動的大型 sql se...

LINUX效能優化 IO工作原理

同 cpu 記憶體一樣,磁碟和檔案系統的管理,也是作業系統最核心的功能。有以下兩個基本功能 1 磁碟為系統提供了最基本的持久化儲存。2 檔案系統則在磁碟的基礎上,提供了乙個用來管理檔案的樹狀結構。索引節點和目錄項 在linux作業系統中,遵循 一切皆是檔案 的思想。包括檔案,目錄,塊裝置 套接字 管...

LINUX下磁碟IO效能監測分析

linux下磁碟io效能監測分析 2011 08 16 18 10 23 標籤 效能監測分析 linux 磁碟io 休閒suse linux 這兩天發現一台測試用的伺服器經常負載很高,但cpu和記憶體消耗卻很少,很是奇怪,經過診斷發現是由於大容量的測試資料導致高併發下的磁碟io消耗比較大,由於快取是...