多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > 計算機底層知識拾遺(三)理解磁盤的機制

計算機底層知識拾遺(三)理解磁盤的機制

來源:程序員人生   發布時間:2015-01-26 09:43:56 閱讀次數:4448次
磁盤是1種重要的存儲器,位于主存結構的下方,是永久存儲的介質。在計算機底層知識拾遺(1)理解虛擬內存機制 這篇中說了虛擬內存是面向磁盤的,理解磁盤的工作原理對理解計算機的很多概念有很大的幫助。特別是在數據庫和散布式存儲領域,要常常和磁盤打交道。


磁盤這塊主要有幾個部份的概念:

1. 磁盤的基本結構和工作原理

2. 如何在虛擬內存機制下與內存高效地交換數據

3. 磁盤如何保證數據存儲的可靠性及故障恢復


磁盤的基本結構和工作原理


從單個磁盤來講,由1個個的同心圓組成,1個同心圓就是1個磁道,每一個磁道由多個扇區組成,每一個扇區之前由沒有磁性的間隙分隔。扇區有磁性物資,支持讀和寫操作

每一個磁道的扇區數量是1個常量,每一個扇區的大小1般是4KB。扇區是磁盤基本的物理單元

每個盤面對應1個傳動臂,傳動臂的頭部有1個讀/寫頭可以讀和寫磁盤介質。 傳動臂可以覆蓋所有的磁道,通過旋轉盤面和移動傳動臂,就能夠訪問到盤面所有扇區的數據。

1般的硬盤都有多個盤面構成,每一個盤面都有上述的結構。1個硬盤上的多個傳動臂是固定在1起的,也就是同時移動的半徑都是1樣的。這樣同1時刻位于多個磁頭下的的各個磁道構成1個柱面,采取多個盤面的好處是可以同時讀取同1個柱面的數據。

我們知道存儲系統都采取邏輯單元塊來表示基本的數據單位,這樣可以提高存儲的效力,比如虛擬內存采取頁為基本的存儲單位。一樣在磁盤領域,也用塊這個邏輯單元來管理磁盤。扇區是基本的物理單元,大小為4KB。磁盤塊1般為4KB - 64KB,包括1個或多個扇區。主存和磁盤交換數據時以塊為基本單位。


每個磁盤都有1個磁盤控制器來管理1個或多個磁盤。磁盤處理器的作用有:

1. 控制傳動臂,將磁頭定位到1個特定的半徑位置

2. 選擇1個準備讀寫的盤面,定位到特定的扇區

3. 將從所要求的扇區讀取的2進制數據傳送到主存,或將主存的數據寫回到磁盤的扇區


看1個實際的磁盤的參數,Megatron 747磁盤有以下參數:

1. 8個圓盤,16個盤面

2. 每一個盤面有2^16次個磁道

3. 每一個磁道平均有256個扇區

4. 每一個扇區有4KB個字節


所以它是 16個盤面 * 2^16個磁道 * 256個扇區 * 4KB個字節 = 1TB的大小。1個磁道寄存1MB字節。如果1個塊是16KB,那末1個塊使用4個連續的扇區,1個磁道上有32個塊


磁道的讀寫有3個步驟,即 尋道時間 + 旋轉延遲 + 傳輸時間

1. 磁盤控制器將磁頭組合定位在磁盤塊所在磁道的柱面上所需要的尋道時間

2. 磁盤控制器等待訪問塊的第1個扇區轉到磁頭下,即旋轉延遲

3. 磁盤控制器讀寫數據時,數據所在的扇區和扇區間的空隙經過磁頭,即傳輸時間


尋道時間取決于磁頭到它訪問位置的距離,如果磁頭恰好在要訪問的柱面,那末尋道時間為0,但需要1ms的時間來啟動磁頭。磁頭需要10ms的時間來經過所有的磁道,所以尋道時間在 0 - 10ms,平均5ms

磁盤旋轉1圈的時間約為10ms,因此旋轉延遲是0 - 10ms,平均為5ms

傳輸時間相對很小,在毫秒1下。

所以讀取磁盤的1個字節的平均延遲是10ms,最大延遲差不多是它的兩倍。


可以很自然地想到提高磁盤讀寫速度方法就是盡可能減小尋道時間和旋轉延遲,比如以下方式:

1. 按柱面組織數據,將要1起訪問的塊放在同1個柱面,這樣可以常常避免尋道時間,也可能避免旋轉延遲

2. 將數據分隔存儲在多個相對較小的磁盤而不是放在1個大磁盤,這樣可讓更多的磁頭組裝備分別區訪問磁盤塊,可增加單位時間內的磁盤塊訪問量

3. 鏡像磁盤,把兩個或更多的數據副本放在不同的磁盤上,1方面保證了數據的冗余存儲,另外一方面也能夠讓我們1次訪問多個磁盤塊

4. 把連續的快預加載到主存的緩沖區,這是空間局部性的使用,從緩存原理的角度來加速磁盤訪問


從虛擬內存的角度理解磁盤和主存的數據交換


首先理解1下CPU是如何來向磁盤IO要求數據的。我們知道計算機的各個組件通過總線連接,總線包括數據總線,地址總線,控制總線等。CPU采取內存映照IO的技術來訪問IO裝備。虛擬地址空間有專門的地址,稱為IO端口,來于IO裝備通訊,當1個裝備連接到總線后,它被映照到1個或多個端口。

假定磁盤控制器被映照到0xa0端口,CPU發起IO讀的流程以下:

1. CPU把命令,邏輯塊號,目的虛擬內存地址寫到0xa0端口,發起1個磁盤讀要求

2. 磁盤控制器把邏輯塊號翻譯成對應的扇區位置讀取扇區,由DMA(直接內存訪問,Direct Memery Access)控制器履行磁盤數據到內存的傳輸,不需要CPU的參與

3. 當DMA傳輸結束后,磁盤控制器采取中斷的方式通知CPU讀取終了


有幾個注意點:

1. CPU只發起讀要求和最后由中斷獲知讀操作結束,其他時間可以履行其他任務,提高了CPU的使用率

2. 內存1般都會有1個緩沖區來于磁盤交互,這實際也是緩存原理的使用,在內存中開辟了1個緩沖區,實際的內存讀寫與緩沖區交互,緩沖區和磁盤交互,這樣提高了內存讀寫的效力

3. 內存和磁盤的傳輸數據以塊為最小單位,這個也是緩存原理的利用,1次傳輸1個或多個塊。

從虛擬內存的角度來講,虛擬頁和磁盤中的塊映照起來,當虛擬頁被加載到內存的物理頁的時候,就由DMA把虛擬內存對應的磁盤塊加載到內存的對應地址的物理頁中。當物理頁寫回到磁盤時,也是由DMA把數據傳輸到磁盤控制器,由磁盤控制器寫到磁盤塊對應的扇區。內存和磁盤交換數據的時候實際采取了內存的緩沖區來加速磁盤的訪問速度。

緩沖區的目的是適配兩個速度不1致的裝備,從磁盤的工作原理我們看到磁盤操作是1個很慢的操作,內存操作相比磁盤操作是1個很快的操作,為了讓內存對磁盤的讀寫沒必要等待磁盤操作返回再返回,操作系統設置了內存緩沖區來加速對磁盤的訪問速度。


內存緩沖區是緩存原理的使用,它是磁盤和內存之間傳輸數據的1個重要的組件。后面會單獨寫1篇文章介紹內存緩沖區的原理。這里簡單說1下,內存緩沖區由緩存塊組成,緩存塊的大小和磁盤塊的大小是1樣的。每一個緩存塊都有1個buffer_head數據結構,里面存儲了這個緩存塊對應的磁盤的deviceId和磁盤塊,這樣相當于把1個緩存塊和1個物理的磁盤塊綁定了。磁盤和內存緩沖區之間交換數據以塊為基本單位。


有了內存緩沖區,CPU要訪問某個磁盤文件的某些數據,只需要提供該數據所處的磁盤塊號,就能夠從內存緩沖區尋覓是不是已緩存了該磁盤塊的內容。


另外磁盤還專門設置了1塊交換區swap來寄存從內存中交換出來的頁,swap是和操作系統的頁面回收子系統相干的,和內存緩沖區沒有直接關系,后面也會單獨寫1篇介紹磁盤上的交換區swap的機制。


磁盤如何保證數據的可靠性和故障恢復


磁盤保證數據存儲的可靠性主要就是靠冗余。而冗余又有很多策略,比如

1. 單塊磁盤的穩定存儲,把扇區依照兩兩結對,比如X和Y成對,每次寫的時候X和Y都要寫一樣的數據,這樣當其中之1出現故障,就能夠用另外1塊來恢復。兩個扇區同時出現故障的情況很小

2. 多塊磁盤組成的磁盤陣列RAID,RAID0就是采取冗余鏡像的方式

3. 軟件保證的冗余,比如HDFS采取了3份冗余存儲的策略


磁盤故障通常有幾種

1. 間歇性故障,讀或寫1個扇區的某次嘗試沒有成功,但是經過反復嘗試又能成功地讀寫

2. 介質破壞,磁盤的1位或多個位永久地破壞了,致使讀不可能讀取某些扇區

3. 寫故障,嘗試寫1個扇區時,即不能正確地寫,也不能檢索先前寫入的扇區,多是寫的時候供電中斷引發的

4. 磁盤崩潰,全部磁盤永久不可讀


對間歇性故障,采取奇偶校驗的方式,可以快速地檢查出某次讀寫是不是成功。磁盤控制器會通過奇偶校驗的方式來檢查讀寫是不是正確,失敗的話會進行重試,如果超過嘗試次數,就返回讀寫失敗


對磁盤中部份位的破壞,或寫故障,可以采取上面說的單塊磁盤穩定存儲的方式,把扇區結對存儲,這樣可以下降介質破壞和寫故障的影響


對全部磁盤的崩潰,可以采取硬件方式的RAID磁盤陣列,或則軟件保證的多個磁盤的冗余存儲,來應對全部磁盤崩潰的影響,并可以快速回復破壞磁盤的數據


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: www.黄com| 最近最新中文字幕免费大全 | 成人影院vs一区二区 | 岛国在线123456 | 亚洲欧美日韩综合在线 | 免费在线观看成年人视频 | 欧美亚洲国产精品久久高清 | 国产欧美在线视频免费 | 国产成人免费视频精品一区二区 | 国产亚洲人成在线影院 | 亚洲综合视频在线观看 | 亚洲免费视频在线观看 | 久久精品免费全国观看国产 | 国内精品一区视频在线播放 | 亚洲午夜久久久久中文字幕久 | 国产美女亚洲精品久久久综合91 | 亚洲国产日韩欧美综合久久 | 国产成人精品免费视频大全五级 | 日韩欧美在线观看视频一区二区 | 五月天国产 | 午夜私人影院在线观看 | 久久综合亚洲一区二区三区 | 亚洲精品第1页 | 亚洲免费视频网址 | 欧美xxxx做受欧美护士 | 精品国产福利第一区二区三区 | 欧美一级毛片高清视频 | 俄罗斯free性欧美hd | 亚洲欧洲日产国码二区在线 | 最新中文字幕在线视频 | 国产精品二区三区免费播放心 | 亚洲 欧美 自拍 另类 | 欧美日韩亚洲一区 | 狠狠色噜噜狠狠狠狠五月婷 | 毛片的网址 | 最近最新中文字幕大全免费10 | 99久久精品一区二区三区 | 激性欧美激情在线播放16页 | 五月花婷婷| 伦伦影院精品一区 | 国产一国产一区秋霞在线观看 |