<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          硬盤的讀寫原理詳解

          共 8630字,需瀏覽 18分鐘

           ·

          2021-05-29 20:22

          關(guān)注「開(kāi)源Linux」,選擇“設(shè)為星標(biāo)”
          回復(fù)「學(xué)習(xí)」,有我為您特別篩選的學(xué)習(xí)資料~

          前言

          硬盤的種類主要是SCSI 、IDE 、以及現(xiàn)在流行的SATA等;任何一種硬盤的生產(chǎn)都要一定的標(biāo)準(zhǔn);隨著相應(yīng)的標(biāo)準(zhǔn)的升級(jí),硬盤生產(chǎn)技術(shù)也在升級(jí);比如 SCSI標(biāo)準(zhǔn)已經(jīng)經(jīng)歷了SCSI-1 、SCSI-2、SCSI-3;其中目前咱們經(jīng)常在服務(wù)器網(wǎng)站看到的 Ultral-160就是基于SCSI-3標(biāo)準(zhǔn)的;IDE 遵循的是ATA標(biāo)準(zhǔn),而目前流行的SATA,是ATA標(biāo)準(zhǔn)的升級(jí)版本;IDE是并口設(shè)備,而SATA是串口,SATA的發(fā)展目的是替換IDE;

          我們知道信息存儲(chǔ)在硬盤里,把它拆開(kāi)也看不見(jiàn)里面有任何東西,只有些盤片。假設(shè),你用顯微鏡把盤片放大,會(huì)看見(jiàn)盤片表面凹凸不平,凸起的地方被磁化,凹的地方是沒(méi)有被磁化;凸起的地方代表數(shù)字1(磁化為1),凹的地方代表數(shù)字0。因此硬盤可以以二進(jìn)制來(lái)存儲(chǔ)表示文字、圖片等信息。

          01 硬盤的組成

          硬盤大家一定不會(huì)陌生,我們可以把它比喻成是我們電腦儲(chǔ)存數(shù)據(jù)和信息的大倉(cāng)庫(kù)。一般說(shuō)來(lái),無(wú)論哪種硬盤,都是由盤片、磁頭、盤片主軸、控制電機(jī)、磁頭控制器、數(shù)據(jù)轉(zhuǎn)換器、接口、緩存等幾個(gè)部分組成。

          立體圖

          所有的盤片都固定在一個(gè)旋轉(zhuǎn)軸上,這個(gè)軸即盤片主軸。而所有盤片之間是絕對(duì)平行的,在每個(gè)盤片的存儲(chǔ)面上都有一個(gè)磁頭,磁頭與盤片之間的距離比頭發(fā) 絲的直徑還小。所有的磁頭連在一個(gè)磁頭控制器上,由磁頭控制器負(fù)責(zé)各個(gè)磁頭的運(yùn)動(dòng)。磁頭可沿盤片的半徑方向動(dòng)作,(實(shí)際是斜切向運(yùn)動(dòng)),每個(gè)磁頭同一時(shí)刻也必須是同軸的,即從正上方向下看,所有磁頭任何時(shí)候都是重疊的(不過(guò)目前已經(jīng)有多磁頭獨(dú)立技術(shù),可不受此限制)。而盤片以每分鐘數(shù)千轉(zhuǎn)到上萬(wàn)轉(zhuǎn)的速度在高速旋轉(zhuǎn),這樣磁頭就能對(duì)盤片上的指定位置進(jìn)行數(shù)據(jù)的讀寫操作。

          由于硬盤是高精密設(shè)備,塵埃是其大敵,所以必須完全密封。

          02 硬盤的工作原理

          硬盤在邏輯上被劃分為磁道、柱面以及扇區(qū)

          硬盤的每個(gè)盤片的每個(gè)面都有一個(gè)讀寫磁頭,磁盤盤面區(qū)域的劃分如圖所示。

          磁頭靠近主軸接觸的表面,即線速度最小的地方,是一個(gè)特殊的區(qū)域,它不存放任何數(shù)據(jù),稱為啟停區(qū)或著陸區(qū)(LandingZone),啟停區(qū)外就是數(shù)據(jù)區(qū)。在最外圈,離主軸最遠(yuǎn)的地方是“0”磁道,硬盤數(shù)據(jù)的存放就是從最外圈開(kāi)始的。那么,磁頭是如何找到“0”磁道的位置的 呢?在硬盤中還有一個(gè)叫“0”磁道檢測(cè)器的構(gòu)件,它是用來(lái)完成硬盤的初始定位。“0”磁道是如此的重要,以致很多硬盤僅僅因?yàn)椤?”磁道損壞就報(bào)廢,這是 非常可惜的。

          早期的硬盤在每次關(guān)機(jī)之前需要運(yùn)行一個(gè)被稱為Parking的程序,其作用是讓磁頭回到啟停區(qū)。現(xiàn)代硬盤在設(shè)計(jì)上已摒棄了這個(gè)雖不復(fù)雜卻很讓人不愉快的小缺陷。硬盤不工作時(shí),磁頭停留在啟停區(qū),當(dāng)需要從硬盤讀寫數(shù)據(jù)時(shí),磁盤開(kāi)始旋轉(zhuǎn)。旋轉(zhuǎn)速度達(dá)到額定的高速時(shí),磁頭就會(huì)因盤片旋轉(zhuǎn)產(chǎn)生的氣流而抬起, 這時(shí)磁頭才向盤片存放數(shù)據(jù)的區(qū)域移動(dòng)。

          盤片旋轉(zhuǎn)產(chǎn)生的氣流相當(dāng)強(qiáng),足以使磁頭托起,并與盤面保持一個(gè)微小的距離。這個(gè)距離越小,磁頭讀寫數(shù)據(jù)的靈敏度就越高,當(dāng)然對(duì)硬盤各部件的要求也越 高。早期設(shè)計(jì)的磁盤驅(qū)動(dòng)器使磁頭保持在盤面上方幾微米處飛行。稍后一些設(shè)計(jì)使磁頭在盤面上的飛行高度降到約0.1μm~0.5μm,現(xiàn)在的水平已經(jīng)達(dá)到 0.005μm~0.01μm,這只是人類頭發(fā)直徑的千分之一。

          氣流既能使磁頭脫離開(kāi)盤面,又能使它保持在離盤面足夠近的地方,非常緊密地跟隨著磁盤表面呈起伏運(yùn)動(dòng),使磁頭飛行處于嚴(yán)格受控狀態(tài)。磁頭必須飛行在盤面上方,而不是接觸盤面,這種位置可避免擦傷磁性涂層,而更重要的是不讓磁性涂層損傷磁頭。

          但是,磁頭也不能離盤面太遠(yuǎn),否則,就不能使盤面達(dá)到足夠強(qiáng)的磁化,難以讀出盤上的磁化翻轉(zhuǎn)(磁極轉(zhuǎn)換形式,是磁盤上實(shí)際記錄數(shù)據(jù)的方式)。

          硬盤驅(qū)動(dòng)器磁頭的飛行懸浮高度低、速度快,一旦有小的塵埃進(jìn)入硬盤密封腔內(nèi),或者一旦磁頭與盤體發(fā)生碰撞,就可能造成數(shù)據(jù)丟失,形成壞塊,甚至造成 磁頭和盤體的損壞。所以,硬盤系統(tǒng)的密封一定要可靠,在非專業(yè)條件下絕對(duì)不能開(kāi)啟硬盤密封腔,否則,灰塵進(jìn)入后會(huì)加速硬盤的損壞。另外,硬盤驅(qū)動(dòng)器磁頭的尋道伺服電機(jī)多采用音圈式旋轉(zhuǎn)或直線運(yùn)動(dòng)步進(jìn)電機(jī),在伺服跟蹤的調(diào)節(jié)下精確地跟蹤盤片的磁道,所以,硬盤工作時(shí)不要有沖擊碰撞,搬動(dòng)時(shí)要小心輕放。

          這種硬盤就是采用溫徹斯特(Winchester)技術(shù)制造的硬盤,所以也被稱為溫盤,目前絕大多數(shù)硬盤都采用此技術(shù)。

          03 盤面、磁道、柱面和扇區(qū)

          硬盤的讀寫是和扇區(qū)有著緊密關(guān)系的。在說(shuō)扇區(qū)和讀寫原理之前先說(shuō)一下和扇區(qū)相關(guān)的”盤面”、“磁道”、和“柱面”。

          1. 盤面

          硬盤的盤片一般用鋁合金材料做基片,高速硬盤也可能用玻璃做基片。硬盤的每一個(gè)盤片都有兩個(gè)盤面(Side),即上、下盤面,一般每個(gè)盤面都會(huì)利用,都可以存儲(chǔ)數(shù)據(jù),成為有效盤片,也有極個(gè)別的硬盤盤面數(shù)為單數(shù)。每一個(gè)這樣的有效盤面都有一個(gè)盤面號(hào),按順序從上至下從“0”開(kāi)始依次編號(hào)。在硬盤系統(tǒng)中,盤面號(hào)又叫磁頭號(hào),因?yàn)槊恳粋€(gè)有效盤面都有一個(gè)對(duì)應(yīng)的讀寫磁頭。硬盤的盤片組在2~14片不等,通常有2~3個(gè)盤片,故盤面號(hào)(磁頭號(hào))為0~3或 0~5。

          2. 磁道

          磁盤在格式化時(shí)被劃分成許多同心圓,這些同心圓軌跡叫做磁道(Track)。磁道從外向內(nèi)從0開(kāi)始順序編號(hào)。硬盤的每一個(gè)盤面有300~1 024個(gè)磁道,新式大容量硬盤每面的磁道數(shù)更多。信息以脈沖串的形式記錄在這些軌跡中,這些同心圓不是連續(xù)記錄數(shù)據(jù),而是被劃分成一段段的圓弧,這些圓弧的角速度一樣。由于徑向長(zhǎng)度不一樣,所以,線速度也不一樣,外圈的線速度較內(nèi)圈的線速度大,即同樣的轉(zhuǎn)速下,外圈在同樣時(shí)間段里,劃過(guò)的圓弧長(zhǎng)度要比內(nèi)圈 劃過(guò)的圓弧長(zhǎng)度大。每段圓弧叫做一個(gè)扇區(qū),扇區(qū)從“1”開(kāi)始編號(hào),每個(gè)扇區(qū)中的數(shù)據(jù)作為一個(gè)單元同時(shí)讀出或?qū)懭搿R粋€(gè)標(biāo)準(zhǔn)的3.5寸硬盤盤面通常有幾百到幾千條磁道。磁道是“看”不見(jiàn)的,只是盤面上以特殊形式磁化了的一些磁化區(qū),在磁盤格式化時(shí)就已規(guī)劃完畢。

          3. 柱面

          所有盤面上的同一磁道構(gòu)成一個(gè)圓柱,通常稱做柱面(Cylinder),每個(gè)圓柱上的磁頭由上而下從“0”開(kāi)始編號(hào)。數(shù)據(jù)的讀/寫按柱面進(jìn)行,即磁 頭讀/寫數(shù)據(jù)時(shí)首先在同一柱面內(nèi)從“0”磁頭開(kāi)始進(jìn)行操作,依次向下在同一柱面的不同盤面即磁頭上進(jìn)行操作,只在同一柱面所有的磁頭全部讀/寫完畢后磁頭 才轉(zhuǎn)移到下一柱面(同心圓的再往里的柱面),因?yàn)檫x取磁頭只需通過(guò)電子切換即可,而選取柱面則必須通過(guò)機(jī)械切換。電子切換相當(dāng)快,比在機(jī)械上磁頭向鄰近磁道移動(dòng)快得多,所以,數(shù)據(jù)的讀/寫按柱面進(jìn)行,而不按盤面進(jìn)行。也就是說(shuō),一個(gè)磁道寫滿數(shù)據(jù)后,就在同一柱面的下一個(gè)盤面來(lái)寫,一個(gè)柱面寫滿后,才移到下一個(gè)扇區(qū)開(kāi)始寫數(shù)據(jù)。讀數(shù)據(jù)也按照這種方式進(jìn)行,這樣就提高了硬盤的讀/寫效率。

          一塊硬盤驅(qū)動(dòng)器的圓柱數(shù)(或每個(gè)盤面的磁道數(shù))既取決于每條磁道的寬窄(同樣,也與磁頭的大小有關(guān)),也取決于定位機(jī)構(gòu)所決定的磁道間步距的大小。

          4.扇區(qū)

          操作系統(tǒng)以扇區(qū)(Sector)形式將信息存儲(chǔ)在硬盤上,每個(gè)扇區(qū)包括512個(gè)字節(jié)的數(shù)據(jù)和一些其他信息。一個(gè)扇區(qū)有兩個(gè)主要部分:存儲(chǔ)數(shù)據(jù)地點(diǎn)的標(biāo)識(shí)符和存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)段。

          扇區(qū)的第一個(gè)主要部分是標(biāo)識(shí)符。標(biāo)識(shí)符,就是扇區(qū)頭標(biāo),包括組成扇區(qū)三維地址的三個(gè)數(shù)字:

          盤面號(hào):扇區(qū)所在的磁頭(或盤面)

          柱面號(hào):磁道,確定磁頭的徑向方向。

          扇區(qū)號(hào):在磁道上的位置。也叫塊號(hào)。確定了數(shù)據(jù)在盤片圓圈上的位置。

          頭標(biāo)中還包括一個(gè)字段,其中有顯示扇區(qū)是否能可靠存儲(chǔ)數(shù)據(jù),或者是否已發(fā)現(xiàn)某個(gè)故障因而不宜使用的標(biāo)記。有些硬盤控制器在扇區(qū)頭標(biāo)中還記錄有指示字,可在原扇區(qū)出錯(cuò)時(shí)指引磁盤轉(zhuǎn)到替換扇區(qū)或磁道。最后,扇區(qū)頭標(biāo)以循環(huán)冗余校驗(yàn)(CRC)值作為結(jié)束,以供控制器檢驗(yàn)扇區(qū)頭標(biāo)的讀出情況,確保準(zhǔn)確無(wú)誤。

          扇區(qū)的第二個(gè)主要部分是存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)段,可分為數(shù)據(jù)和保護(hù)數(shù)據(jù)的糾錯(cuò)碼(ECC)。在初始準(zhǔn)備期間,計(jì)算機(jī)用512個(gè)虛擬信息字節(jié)(實(shí)際數(shù)據(jù)的存放地)和與這些虛擬信息字節(jié)相應(yīng)的ECC數(shù)字填入這個(gè)部分。

          5. 訪盤請(qǐng)求完成過(guò)程 :

          確定磁盤地址(柱面號(hào),磁頭號(hào),扇區(qū)號(hào)),內(nèi)存地址(源/目):

          當(dāng)需要從磁盤讀取數(shù)據(jù)時(shí),系統(tǒng)會(huì)將數(shù)據(jù)邏輯地址傳給磁盤,磁盤的控制電路按照尋址邏輯將邏輯地址翻譯成物理地址,即確定要讀的數(shù)據(jù)在哪個(gè)磁道,哪個(gè)扇區(qū)。

          為了讀取這個(gè)扇區(qū)的數(shù)據(jù),需要將磁頭放到這個(gè)扇區(qū)上方,為了實(shí)現(xiàn)這一點(diǎn):

          首先必須找到柱面,即磁頭需要移動(dòng)對(duì)準(zhǔn)相應(yīng)磁道,這個(gè)過(guò)程叫做尋道,所耗費(fèi)時(shí)間叫做尋道時(shí)間,

          然后目標(biāo)扇區(qū)旋轉(zhuǎn)到磁頭下,即磁盤旋轉(zhuǎn)將目標(biāo)扇區(qū)旋轉(zhuǎn)到磁頭下。這個(gè)過(guò)程耗費(fèi)的時(shí)間叫做旋轉(zhuǎn)時(shí)間。

          即一次訪盤請(qǐng)求(讀/寫)完成過(guò)程由三個(gè)動(dòng)作組成:

          尋道(時(shí)間):磁頭移動(dòng)定位到指定磁道

          旋轉(zhuǎn)延遲(時(shí)間):等待指定扇區(qū)從磁頭下旋轉(zhuǎn)經(jīng)過(guò)

          數(shù)據(jù)傳輸(時(shí)間):數(shù)據(jù)在磁盤與內(nèi)存之間的實(shí)際傳輸

          因此在磁盤上讀取扇區(qū)數(shù)據(jù)(一塊數(shù)據(jù))所需時(shí)間:

          Ti/o=tseek +tla + n *twm

          其中:tseek 為尋道時(shí)間、tla為旋轉(zhuǎn)時(shí)間、twm 為傳輸時(shí)間

          04 磁盤的讀寫原理

          系統(tǒng)將文件存儲(chǔ)到磁盤上時(shí),按柱面、磁頭、扇區(qū)的方式進(jìn)行,即最先是第1磁道的第一磁頭下(也就是第1盤面的第一磁道)的所有扇區(qū),然后,是同一柱面的下一磁頭,……,一個(gè)柱面存儲(chǔ)滿后就推進(jìn)到下一個(gè)柱面,直到把文件內(nèi)容全部寫入磁盤。

          (文件的記錄在同一盤組上存放是,應(yīng)先集中放在一個(gè)柱面上,然后再順序存放在相鄰的柱面上,對(duì)應(yīng)同一柱面,則應(yīng)該按盤面的次序順序存放。)

          (從上到下,然后從外到內(nèi)。數(shù)據(jù)的讀/寫按柱面進(jìn)行,而不按盤面進(jìn)行,先)

          系統(tǒng)也以相同的順序讀出數(shù)據(jù)。讀出數(shù)據(jù)時(shí)通過(guò)告訴磁盤控制器要讀出扇區(qū)所在的柱面號(hào)、磁頭號(hào)和扇區(qū)號(hào)(物理地址的三個(gè)組成部分)進(jìn)行。磁盤控制器則 直接使磁頭部件步進(jìn)到相應(yīng)的柱面,選通相應(yīng)的磁頭,等待要求的扇區(qū)移動(dòng)到磁頭下。在扇區(qū)到來(lái)時(shí),磁盤控制器讀出每個(gè)扇區(qū)的頭標(biāo),把這些頭標(biāo)中的地址信息與期待檢出的磁頭和柱面號(hào)做比較(即尋道),然后,尋找要求的扇區(qū)號(hào)。待磁盤控制器找到該扇區(qū)頭標(biāo)時(shí),根據(jù)其任務(wù)是寫扇區(qū)還是讀扇區(qū),來(lái)決定是轉(zhuǎn)換寫電路, 還是讀出數(shù)據(jù)和尾部記錄。找到扇區(qū)后,磁盤控制器必須在繼續(xù)尋找下一個(gè)扇區(qū)之前對(duì)該扇區(qū)的信息進(jìn)行后處理。如果是讀數(shù)據(jù),控制器計(jì)算此數(shù)據(jù)的ECC碼,然 后,把ECC碼與已記錄的ECC碼相比較。如果是寫數(shù)據(jù),控制器計(jì)算出此數(shù)據(jù)的ECC碼,與數(shù)據(jù)一起存儲(chǔ)。在控制器對(duì)此扇區(qū)中的數(shù)據(jù)進(jìn)行必要處理期間,磁盤繼續(xù)旋轉(zhuǎn)。

          05 局部性原理與磁盤預(yù)讀

          由于存儲(chǔ)介質(zhì)的特性,磁盤本身存取就比主存慢很多,再加上機(jī)械運(yùn)動(dòng)耗費(fèi),磁盤的存取速度往往是主存的幾百分分之一,因此為了提高效率,要盡量減少磁盤I/O。為了達(dá)到這個(gè)目的,磁盤往往不是嚴(yán)格按需讀取,而是每次都會(huì)預(yù)讀,即使只需要一個(gè)字節(jié),磁盤也會(huì)從這個(gè)位置開(kāi)始,順序向后讀取一定長(zhǎng)度的數(shù)據(jù)放入內(nèi)存。這樣做的理論依據(jù)是計(jì)算機(jī)科學(xué)中著名的局部性原理:

          當(dāng)一個(gè)數(shù)據(jù)被用到時(shí),其附近的數(shù)據(jù)也通常會(huì)馬上被使用。

          程序運(yùn)行期間所需要的數(shù)據(jù)通常比較集中。

          由于磁盤順序讀取的效率很高(不需要尋道時(shí)間,只需很少的旋轉(zhuǎn)時(shí)間),因此對(duì)于具有局部性的程序來(lái)說(shuō),預(yù)讀可以提高I/O效率。

          預(yù)讀的長(zhǎng)度一般為頁(yè)(page)的整倍數(shù)。頁(yè)是計(jì)算機(jī)管理存儲(chǔ)器的邏輯塊,硬件及操作系統(tǒng)往往將主存和磁盤存儲(chǔ)區(qū)分割為連續(xù)的大小相等的塊,每個(gè)存儲(chǔ)塊稱為一頁(yè)(在許多操作系統(tǒng)中,頁(yè)得大小通常為4k),主存和磁盤以頁(yè)為單位交換數(shù)據(jù)。當(dāng)程序要讀取的數(shù)據(jù)不在主存中時(shí),會(huì)觸發(fā)一個(gè)缺頁(yè)異常,此時(shí)系統(tǒng)會(huì)向磁盤發(fā)出讀盤信號(hào),磁盤會(huì)找到數(shù)據(jù)的起始位置并向后連續(xù)讀取一頁(yè)或幾頁(yè)載入內(nèi)存中,然后異常返回,程序繼續(xù)運(yùn)行。

          06 磁盤碎片的產(chǎn)生

          俗話說(shuō)一圖勝千言,先用一張ACSII碼圖來(lái)解釋為什么會(huì)產(chǎn)生磁盤碎片。

          上面的ASCII圖表示磁盤文件系統(tǒng),由于目前上面沒(méi)有任何數(shù)據(jù)文件,所以我把他表示成0。

          在圖的最上側(cè)和左側(cè)各有a-z 26個(gè)字母,這是用來(lái)定位每個(gè)數(shù)據(jù)字節(jié)的具體位置,如第1行1列是aa,26行26列是zz。

          我們創(chuàng)建一個(gè)新文件,理所當(dāng)然的,我們的文件系統(tǒng)就產(chǎn)生了變化,現(xiàn)在是

          如圖所示:”內(nèi)容表”(TOC)占據(jù)了前四行,在TOC里存貯著每件文件在系統(tǒng)里所在的位置。

          在上圖,TOC包括了一個(gè)名字叫hello.txt的文件,其具體內(nèi)容是”Hello, world”,在系統(tǒng)里的位置是ae到le。

          接下來(lái)再新建一個(gè)文件

          如圖,我們新建的文件bye.txt緊貼著第一個(gè)文件hello.txt。

          其實(shí)這是最理想的系統(tǒng)結(jié)構(gòu),如果你將你的文件都按照上圖所表示的那樣一個(gè)挨著一個(gè),緊緊的貼放在一起的話,那么讀取他們將會(huì)非常的容易和迅速,這是因?yàn)樵谟脖P里動(dòng)得最慢的(相對(duì)來(lái)說(shuō))就是傳動(dòng)手臂,少位移一些,讀取文件數(shù)據(jù)的時(shí)間就會(huì)快一些。

          然而恰恰這就是問(wèn)題的所在。現(xiàn)在我想在”Hello, World”后加上些感嘆號(hào)來(lái)表達(dá)我強(qiáng)烈的感情,現(xiàn)在的問(wèn)題是:在這樣的系統(tǒng)上,文件所在的行就沒(méi)有地方讓我放這些感嘆號(hào)了,因?yàn)閎ye.txt占據(jù)了剩下的位置。

          現(xiàn)在有倆個(gè)方法可以選擇,但是沒(méi)有一個(gè)是完美的

          1.我們從原位置刪除文件,重新建個(gè)文件重新寫上”Hello, World!!”. –這就無(wú)意中延長(zhǎng)了文件系統(tǒng)的讀和寫的時(shí)間。

          2.打碎文件,就是在別的空的地方寫上感嘆號(hào),也就是”身首異處”–這個(gè)點(diǎn)子不錯(cuò),速度很快,而且方便,但是,這就同時(shí)意味著大大的減慢了讀取下一個(gè)新文件的時(shí)間。

          如果你對(duì)上面的文字沒(méi)概念,上圖

          這里所說(shuō)的方法二就像是我們的windows系統(tǒng)的存儲(chǔ)方式,每個(gè)文件都是緊挨著的,但如果其中某個(gè)文件要更改的話,那么就意味著接下來(lái)的數(shù)據(jù)將會(huì)被放在磁盤其他的空余的地方。

          如果這個(gè)文件被刪除了,那么就會(huì)在系統(tǒng)中留下空格,久而久之,我們的文件系統(tǒng)就會(huì)變得支離破碎,碎片就是這么產(chǎn)生的。

          試著簡(jiǎn)單點(diǎn),講給mm聽(tīng)的硬盤讀寫原理簡(jiǎn)化版

          硬盤的結(jié)構(gòu)就不多說(shuō)了,我們平常電腦的數(shù)據(jù)都是存在磁道上的,大致上和光盤差不多.讀取都是靠磁頭來(lái)進(jìn)行

          我們都知道,我們的數(shù)據(jù)資料都是以信息的方式存儲(chǔ)在盤面的扇區(qū)的磁道上,硬盤讀取是由搖臂控制磁頭從盤面的外側(cè)向內(nèi)側(cè)進(jìn)行讀寫的.所以外側(cè)的數(shù)據(jù)讀取速度會(huì)比內(nèi)側(cè)的數(shù)據(jù)快很多

          其實(shí)我們的文件大多數(shù)的時(shí)候都是破碎的,在文件沒(méi)有破碎的時(shí)候,搖臂只需要尋找1次磁道并由磁頭進(jìn)行讀取,只需要1次就可以成功讀取;但是如果文件破碎成 11處,那么搖臂要來(lái)回尋找11次磁道磁頭進(jìn)行11次讀取才能完整的讀取這個(gè)文件,讀取時(shí)間相對(duì)沒(méi)有破碎的時(shí)候就變得冗長(zhǎng)。

          因此,磁盤碎片往往也是拖慢系統(tǒng)的重要因素之一。

          07 硬盤容量及分區(qū)大小的計(jì)算

          在Linux系統(tǒng),要計(jì)算硬盤容量及分區(qū)大小,我們先通過(guò)fdsik -l查看硬盤信息:

          Disk /dev/hda: 80.0 GB, 80026361856 bytes
          255 heads, 63 sectors/track, 9729 cylinders
          Units = cylinders of 16065 * 512 = 8225280 bytes
          Device Boot Start End Blocks Id System
          /dev/hda1 * 1 765 6144831 7 HPFS/NTFS
          /dev/hda2 766 2805 16386300 c W95 FAT32 (LBA)
          /dev/hda3 2806 9729 55617030 5 Extended
          /dev/hda5 2806 3825 8193118+ 83 linux
          /dev/hda6 3826 5100 10241406 83 linux
          /dev/hda7 5101 5198 787153+ 82 linux swap / Solaris
          /dev/hda8 5199 6657 11719386 83 linux
          /dev/hda9 6658 7751 8787523+ 83 linux
          /dev/hda10 7752 9729 15888253+ 83 linux

          其中 heads 是磁盤面、sectors 是扇區(qū)、cylinders 是柱面;

          每個(gè)扇區(qū)大小是 512byte,也就是0.5K;

          通過(guò)上面的例子,我們發(fā)現(xiàn)此硬盤有 255個(gè)磁盤面,有63個(gè)扇區(qū),有9729個(gè)柱面;所以整個(gè)硬盤體積換算公式應(yīng)該是:磁面?zhèn)€數(shù) * 扇區(qū)個(gè)數(shù) * 每個(gè)扇區(qū)的大小512 * 柱面?zhèn)€數(shù) = 硬盤體積 (單位bytes)

          所以在本例中磁盤的大小應(yīng)該計(jì)算如下:

          255 x 63 x 512 x 9729 = 80023749120 bytes

          提示:由于硬盤生產(chǎn)商和操作系統(tǒng)換算不太一樣,硬盤廠家以10進(jìn)位的辦法來(lái)?yè)Q算,而操作系統(tǒng)是以2進(jìn)位制來(lái)?yè)Q算,所以在換算成M或者G 時(shí),不同的算法結(jié)果卻不一樣;所以我們的硬盤有時(shí)標(biāo)出的是80G,在操作系統(tǒng)下看卻少幾M;

          上面例子中,硬盤廠家算法 和 操作系統(tǒng)算數(shù)比較:

          硬盤廠家:80023749120 bytes = 80023749.120 K = 80023.749120 M (向大單位換算,每次除以1000)

          操作系統(tǒng):80023749120 bytes = 78148192.5 K = 76316.594238281 M (向大單位換算,每次除以1024)

          我們?cè)诓榭捶謪^(qū)大小的時(shí)候,可以用生產(chǎn)廠家提供的算法來(lái)簡(jiǎn)單推算分區(qū)的大小;把小數(shù)點(diǎn)向前移動(dòng)六位就是以G表示的大小;比如 hda1 的大小約為 6.144831G ;

          磁盤陣列

          磁盤陣列是由很多塊獨(dú)立的磁盤,組合成一個(gè)容量巨大的磁盤組,利用個(gè)別磁盤提供數(shù)據(jù)所產(chǎn)生加成效果提升整個(gè)磁盤系統(tǒng)效能。利用這項(xiàng)技術(shù),將數(shù)據(jù)切割成許多區(qū)段,分別存放在各個(gè)硬盤上。

          獨(dú)立磁盤冗余陣列(RAID,redundant array of independent disks)是把相同的數(shù)據(jù)存儲(chǔ)在多個(gè)硬盤的不同的地方(因此,冗余地)的方法。通過(guò)把數(shù)據(jù)放在多個(gè)硬盤上,輸入輸出操作能以平衡的方式交疊,改良性能。因?yàn)槎鄠€(gè)硬盤增加了平均故障間隔時(shí)間(MTBF),儲(chǔ)存冗余數(shù)據(jù)也增加了容錯(cuò)。

          RAID技術(shù)主要有以下三個(gè)基本功能:

          通過(guò)對(duì)磁盤上的數(shù)據(jù)進(jìn)行條帶化,實(shí)現(xiàn)對(duì)數(shù)據(jù)成塊存取,減少磁盤的機(jī)械尋道時(shí)間,提高了數(shù)據(jù)存取速度。

          通過(guò)對(duì)一個(gè)陣列中的幾塊磁盤同時(shí)讀取,減少了磁盤的機(jī)械尋道時(shí)間,提高數(shù)據(jù)存取速度。

          通過(guò)鏡像或者存儲(chǔ)奇偶校驗(yàn)信息的方式,實(shí)現(xiàn)了對(duì)數(shù)據(jù)的冗余保護(hù)。

          優(yōu)點(diǎn)

          提高傳輸速率。RAID通過(guò)在多個(gè)磁盤上同時(shí)存儲(chǔ)和讀取數(shù)據(jù)來(lái)大幅提高存儲(chǔ)系統(tǒng)的數(shù)據(jù)吞吐量(Throughput)。在RAID中,可以讓很多磁盤驅(qū)動(dòng)器同時(shí)傳輸數(shù)據(jù),而這些磁盤驅(qū)動(dòng)器在邏輯上又是一個(gè)磁盤驅(qū)動(dòng)器,所以使用RAID可以達(dá)到單個(gè)磁盤驅(qū)動(dòng)器幾倍、幾十倍甚至上百倍的速率。這也是RAID最初想要解決的問(wèn)題。因?yàn)楫?dāng)時(shí)CPU的速度增長(zhǎng)很快,而磁盤驅(qū)動(dòng)器的數(shù)據(jù)傳輸速率無(wú)法大幅提高,所以需要有一種方案解決二者之間的矛盾。RAID最后成功了。

          通過(guò)數(shù)據(jù)校驗(yàn)提供容錯(cuò)功能。普通磁盤驅(qū)動(dòng)器無(wú)法提供容錯(cuò)功能,如果不包括寫在磁盤上的CRC(循環(huán)冗余校驗(yàn))碼的話。RAID容錯(cuò)是建立在每個(gè)磁盤驅(qū)動(dòng)器的硬件容錯(cuò)功能之上的,所以它提供更高的安全性。在很多RAID模式中都有較為完備的相互校驗(yàn)/恢復(fù)的措施,甚至是直接相互的鏡像備份,從而大大提高了RAID系統(tǒng)的容錯(cuò)度,提高了系統(tǒng)的穩(wěn)定冗余性。

          缺點(diǎn)

          RAID0沒(méi)有冗余功能,如果一個(gè)磁盤(物理)損壞,則所有的數(shù)據(jù)都無(wú)法使用。

          RAID1磁盤的利用率最高只能達(dá)到50%(使用兩塊盤的情況下),是所有RAID級(jí)別中最低的。

          RAID0+1以理解為是RAID 0和RAID 1的折中方案。RAID 0+1可以為系統(tǒng)提供數(shù)據(jù)安全保障,但保障程度要比 Mirror低而磁盤空間利用率要比Mirror高。

          作者:hguisu 來(lái)源:https://reurl.cc/V3kAV6

          整理:公眾號(hào):開(kāi)源Linux,cnLinuxer

          — end —

          關(guān)注「開(kāi)源Linux」加星標(biāo),提升IT技能

          瀏覽 91
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲护士无码 | www.淫色 | 亚洲+变态+欧美 | 蜜桃久久精品成人无码AV | 激情av |