今天在學習《鳥哥的linux私房菜》時,鳥哥講到了磁碟結構,看得我雲裡霧裡的。索性網上搜尋,看到一篇比較好的博文,主要是圖例比較精準,結合文字描述很快就搞明白了。
這裡講的主要是網上所謂的老式磁碟,它是由乙個個碟片組成的,我們先從個碟片結構講起。如圖1所示,圖中的一圈圈灰色同心圓為一條條磁軌,從圓心向外畫直線,可以將磁軌劃分為若干個弧段,每個磁軌上乙個弧段被稱之為乙個扇區(圖踐綠色部分)。扇區是磁碟的最小組成單元,通常是512位元組。
圖1 老式磁碟乙個碟片的結構
圖2展示了由乙個個碟片組成的磁碟立體結構,乙個碟片上下兩面都是可讀寫的,圖中藍色部分叫柱面(cylinder)。
圖2老式磁碟的整體結構
簡簡單介紹了磁碟結構後,下面我們將對磁碟的引數進行講解。磁碟的常見引數如下:
圖2中磁碟是乙個 3個圓盤6個磁頭,7個柱面(每個碟片7個磁軌) 的磁碟,圖2中每條磁軌有12個扇區,所以此磁碟的容量為6*7*12*512位元組。
即:儲存容量 = 磁頭數 × 磁軌(柱面)數 × 每道扇區數 × 每扇區位元組數
下面講一下現代磁碟,在老式磁碟中,儘管磁軌周長不同,但每個磁軌上的扇區數是相等的,越往圓心扇區弧段越短,但其儲存密度越高。不過這種方式顯然比較浪費空間,因此現代磁碟則改為等密度結構,這意味著外圍磁軌上的扇區數量要大於內圈的磁軌,定址方式也改為以扇區為單位的線性定址。為了相容老式的3d定址方式,現代磁碟控制器中都有乙個位址翻譯器將 3d 定址引數翻譯為線性引數。
圖3 一張linux的分割槽表
如圖3所示,在linux中是以柱面為單位來分割槽的。這裡分割槽大小除以blocks數的值約1024說明,在磁碟上讀寫時的最小單位是1024位元組----這是我猜的。
磁碟結構
傳統的硬碟盤結構是像下圖樣子的,它有乙個或多個碟片,用於儲存資料,碟片多採用鋁合金材料;中間有乙個主軸,所有的碟片都繞著這個主軸轉動,乙個組合臂上面有多個磁頭臂,每個磁頭臂上面都有乙個磁頭,負責讀寫資料。
盤面硬碟一般有乙個或多個碟片,每個碟片可以有兩面,即第乙個碟片的正面為0面,反面為1面;第二個碟片的正面為2面…….依次類推。磁頭的編號也和盤面的編號是一樣的,因此有多少個盤面就有多少個磁頭。盤面正檢視如下圖,磁頭的傳動臂只能在碟片的內外磁軌之間移動。因此不管開機還是開機,磁頭總是在碟片上面。關機時,磁頭停在碟片上面,抖動容易劃傷盤面造成資料損失,為了避免這樣的情況,所以磁頭都是停留在起停區的,起停區是沒有資料的。
每個碟片的盤面被劃分成多個狹窄的同心圓環,資料就儲存在這樣的同心圓環上面,我們將這樣的圓環稱為磁軌(track),每個盤面可以劃分多個磁軌。最外圈的磁軌是0號磁軌,向圓心增長依次為1磁軌、2磁軌……磁碟的資料存放就是從最外圈開始的。
扇區根據硬碟的規格不同,磁軌數可以從幾百到成千上萬不等。每個磁軌可以儲存數kb的資料,但是計算機不必要每次都讀寫這麼多資料。因此,再把每個磁軌劃分為若干個弧段,每個弧段就是乙個扇區(sector)。扇區是硬碟上儲存的物理單位,現在每個扇區可儲存512位元組資料已經成了業界的約定。也就是說,即使計算機只需要某乙個位元組的資料,但是也得把這個512個位元組的資料全部讀入記憶體,再選擇所需要的那個位元組。雖然扇區從裡面到外面面積越來越大,但是它們的容量是一樣的;貌似後來技術更加先進了,把外面的大面積扇區又劈成了更小的塊。��沒查抱歉。
柱面實際上就是我們抽象出來的乙個邏輯概念,簡單來說就是處於同乙個垂直區域的磁軌稱為柱面,即各盤面上面相同位置磁軌的集合。需要注意的是,磁碟讀寫資料是按柱面進行的,磁頭讀寫資料時首先在同一柱面內從0磁頭開始進行操作,依次向下在同一柱面的不同盤面(即磁頭上)進行操作,只有在同一柱面所有的磁頭全部讀寫完畢後磁頭才轉移到下一柱面。因為選取磁頭只需通過電子切換即可,而選取柱面則必須通過機械切換。資料的讀寫是按柱面進行的,而不是按盤面進行,所以把資料存到同乙個柱面是很有價值的。
讀寫資料過程
現代硬碟尋道都是採用chs(cylinder head sector)的方式,硬碟讀取資料時,讀寫磁頭沿徑向移動,移到要讀取的扇區所在磁軌的上方,這段時間稱為尋道時間(seek time)。因讀寫磁頭的起始位置與目標位置之間的距離不同,尋道時間也不同。磁頭到達指定磁軌後,然後通過碟片的旋轉,使得要讀取的扇區轉到讀寫磁頭的下方,這段時間稱為旋轉延遲時間(rotational latencytime)。然後再讀寫資料,讀寫資料也需要時間。
硬碟容量計算公式
硬碟容量=盤面數×柱面數×扇區數×512位元組
資料儲存在磁碟上的排列方式會影響i/o服務的效能,乙個圓環磁軌上有10個物理塊,10個資料記錄r1~r10存放在這個磁軌上,記錄的安排順序如下表所示:
物理塊123
4567
8910邏輯記錄
r1r2
r3r4
r5r6
r7r8
r9r10
假設磁碟的旋轉速度為20ms,磁碟當前處在r1的開頭處,若系統順序掃瞄後將資料放入單緩衝區內,處理資料的時間為4ms(然後再讀取下個記錄),則處理這10個記錄的最長時間是多少?
磁碟會一直朝某個方向旋轉,不會因為處理資料而停止。本題要求順序處理r1到r10,起始位置在r1,一周是20ms,共10個記錄,所以每個記錄的讀取時間為2ms。首先讀r1並處理r1,讀r1花2ms,讀好後磁碟處於r1的末尾或r2的開頭,此時處理r1,需要4ms,因為磁碟一直旋轉,所以r1處理好了後磁碟已經轉到r4的開始了,這時花的時間為2+4=6ms。這時候要處理r2,需要等待磁碟從r5一直轉到r2的開始才行,磁碟轉動不可反向,所以要經過8*2ms才能轉到r1的末尾,讀取r2需要2ms,再處理r2需要4ms,處理結束後磁碟已經轉到r5的開頭了,這時花的時間為2*8+2+4=22ms。等待磁碟再轉到r3又要8*2ms,加上r3自身2ms的讀取時間和4ms的處理時間,花的時間也為22ms,此時磁碟已經轉到r6的開頭了,寫到這裡,就可以看到規律了,讀取並處理後序記錄都為22ms,所以總時間為6+22*9=204ms。兩張硬碟結構示意圖
1. 硬碟示意圖 2. 磁軌、扇區與柱面示意圖
磁碟結構簡介
今天在學習 鳥哥的linux私房菜 時,鳥哥講到了磁碟結構,看得我雲裡霧裡的。索性網上搜尋,看到一篇比較好的博文,主要是圖例比較精準,結合文字描述很快就搞明白了。這裡講的主要是網上所謂的老式磁碟,它是由乙個個碟片組成的,我們先從個碟片結構講起。如圖1所示,圖中的一圈圈灰色同心圓為一條條磁軌,從圓心向...
磁碟結構簡介
今天在學習 鳥哥的linux私房菜 時,鳥哥講到了磁碟結構,看得我雲裡霧裡的。索性網上搜尋,看到一篇比較好的博文,主要是圖例比較精準,結合文字描述很快就搞明白了。這裡講的主要是網上所謂的老式磁碟,它是由乙個個碟片組成的,我們先從個碟片結構講起。如圖1所示,圖中的一圈圈灰色同心圓為一條條磁軌,從圓心向...
磁碟結構簡介
這裡講的主要是網上所謂的老式磁碟,它是由乙個個碟片組成的,我們先從個碟片結構講起。如圖1所示,圖中的一圈圈灰色同心圓為一條條磁軌,從圓心向外畫直線,可以將磁軌劃分為若干個弧段,每個磁軌上乙個弧段被稱之為乙個扇區 圖踐綠色部分 扇區是磁碟的最小組成單元,通常是512位元組。圖1 老式磁碟乙個碟片的結構...