1. 程式人生 > >Linux有關硬盤知識

Linux有關硬盤知識

alt 臺電腦 互聯 ruby ota 陣列 是我 標準 存在

磁盤知識詳解

2.1磁盤知識的體系結構

技術分享圖片

2.2 回顧Linux buffer和cache的區別

[root@chensiqi1 ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           980        407        572          0         82        191
-/+ buffers/cache:        133        847
Swap:          767          0        767

提示:
1)linux系統的特性是將系統不用的物理內存做為緩存區緩沖區使用,因此572不是系統的真是內存。
2)系統真正的可用內存是847M
3)buffers為寫入緩沖區,sync將緩沖區數據寫入磁盤
4)cache為讀取數據的緩存區
5)硬盤是機械的,無論是寫入還是讀取都太慢了,所以讀取和寫入都是用了緩存及緩沖技術。
6)門戶架構網站都會用緩存技術,來讓用戶寫入讀取盡可能不接觸磁盤,或者說把用戶的請求盡可能往前推。

2.3 磁盤

2.3.1 固態硬盤與普通磁盤比較,擁有以下優點

固態磁盤優點優點說明備註
啟動塊 沒有電機加速旋轉的過程
讀取延遲小 不用磁頭,快速隨機讀取,讀延遲極小。根據相關測試:同樣配置的兩臺電腦下,搭載固態磁盤的筆記本從開機到出現桌面一共18秒,而搭載傳統磁盤的筆記本總共用31秒,兩者幾乎有將近一半差距
碎片不影響讀取時間 相對固定的讀取時間。由於尋址時間與數據存儲位置無關,因此磁盤碎片不會影響讀取時間 機械磁盤
寫入速度快 基於DRAM的固態磁盤寫入速度極快
無噪音 因為沒有機械馬達和風扇,工作時噪音值為0分貝。某些高端或大容量產品裝有風扇,因此仍會產生噪音
發熱量較低 低容量的基於閃存的固態磁盤在工作狀態下能耗和發熱量較低,但高端或大容量產品能耗會較高
無機械故障 內部不存在任何機械活動部件,不會發生機械故障,也不怕碰撞,沖擊,震動。這樣即使在高速移動甚至伴隨翻轉傾斜的情況下也不會影響到正常使用,而且在筆記本電腦發生意外掉落或與硬物碰撞時能夠將數據丟失的可能性降到最小
工作溫度範圍更大 典型的磁盤驅動器只能在5度到55度範圍內工作。而大多數固態磁盤可在-10~70度工作,一些工業級的固態磁盤還可在-40~85度,甚至更大的溫度範圍下工作
體積小重量輕 低容量的固態磁盤比同容量磁盤體積小,重量輕。但這一優勢隨容量增大而逐漸減弱。直至256GB,固態磁盤仍比相同容量的普通磁盤輕
抗振動 比起傳統磁盤,固態磁盤抗震能力要強很多,使得數據能更加安全的保存

2.3.2 固態磁盤SSD缺點

固態磁盤與傳統磁盤比較,擁有以下缺點:

固態磁盤缺點缺點說明備註
成本高 每單位容量價格是傳統磁盤的5~10倍(基於閃存),甚至200~300倍(基於DRAM)
容量低 目前固態磁盤最大容量遠低於傳統磁盤。傳統磁盤的容量仍在迅速增長,據稱IBM已測試過4TB的傳統磁盤
寫入壽命有限 寫入壽命有限(基於閃存)。一般閃存寫入壽命為1萬到10萬次,特制的可達100萬到500萬次,然而整臺計算機壽命期內文件系統的某些部分的寫入次數仍將超過這一極限。特制的文件系統或者固件可以分擔寫入的位置,使固態磁盤的整體壽命達到20年以上
數據難以恢復 數據損壞後難以恢復。一旦在硬件上發生損壞,如果是傳統的磁盤或者磁帶存儲方式,通過數據恢復也許還能挽救一部分數據。但是如果是固態存儲,一旦芯片發生損壞,要想在碎成幾瓣或者被電流擊穿的芯片中找回數據那幾乎就是不可能的。當然這種不足也是可以犧牲存儲空間來彌補的,主要用RAID

2.3.3 SSD固態磁盤與傳統機械磁盤優劣對比

項目固態磁盤傳統機械磁盤
容量 較小
價格
隨機存取 極快 一般
寫入次數 SLC:10萬次,MLC:1萬次 無限制
盤內陣列 極難
工作噪音
工作溫度 極低 較明顯
數據恢復 可以
重量

上表是對固態磁盤和傳統磁盤特性的一個比較。從中可以看出固態盤的優勢和缺點。
重要優勢:隨機存取速度,功耗,防震,重量方面優勢很大。
重要缺點:容量,價格,寫壽命,數據恢復難

2.4 生產環境磁盤的選型和應用案例

2.4.1 生產工作中服務器的選型

DELL,HP,IBM等,其中DELL,HP是互聯網公司的主流服務器,這兩個品牌的服務器綜合性價比比較高。百度很多用IBM的服務器,後面的章節會細說,這裏就不多做介紹了。

2.4.2 企業生產工作中磁盤的選型

磁盤:
當前服務器市場:主流磁盤為SAS,SATA,SSD硬盤

1)企業級SAS硬盤(默認)

  • 企業裏常見的SAS硬盤是15000轉/分(這裏是主軸的轉數)。當前主流300G,600G,1000G,從具體的業務需求及性價比考慮,我在工作中多用300-600G的SAS硬盤。
  • 一般選6300G,6600G,單盤容量不要太大,除非純備份!(比如RAID 5,磁盤越大損失越大 )
  • 用途:用於提供生產線上的普通對外提供服務的業務服務器:
  • 例如:生產線上的數據庫業務,存儲業務,圖片業務及相關高並發業務(web http,cache服務),總的來說,如果沒有特殊業務需求,SAS磁盤是生產環境首選的磁盤配置。

2)企業級SATA硬盤:
企業級SATA硬盤,7200-10000轉/分,常見的容量為1T和2T,4T,6T,優點是經濟實惠,容量大,從具體的業務需求及性價比考慮,我在工作中多用SATA磁盤做線下不提供服務的數據存儲或者並發業務訪問不是很大的業務應用。比如站點程序及數據庫,圖片的線下備份等。
特性:容量性價比高,一般2T的SATA磁盤較佳

磁盤選購小結:
1)線上的業務,用SAS磁盤。
2)線下的業務,用SATA磁盤,磁帶庫
3)線上高並發,小容量的業務,SSD磁盤
4)成本思想:根據數據的訪問熱度(熱點存儲),智能分析分層存儲。SATA+SSD

特別註意:
【企業案例】千萬不要用SATA磁盤來做在線高並發服務的數據存儲或數據庫業務,這是有教訓的。
某公司采用SATA做數據庫的存儲盤,結果導致數據庫連續當機一月。
5臺SATA盤RAID5
解決:重新買5臺,把磁盤從SATA(RAID5)換成SAS(RAID10)。6個月內沒事。

3)SSD固態電子盤:
特點:容量小,價格貴,速度快。一般用於數據量小並且有超大規模高並發的業務(這不是唯一的辦法,還可以通過磁盤加內存緩存的技術方式解決這個大規模並發的問題)
百度,騰訊,360核心業務都會采用SSD磁盤,應用層也必須已經做了各種緩存。
特別提示:
大公司如taobao,某些業務可能會根據數據的熱度來綜合使用分層存儲,以達到性價比最佳的情況。80GSSD+500GSATA

2.4.3 不同類型磁盤的一些使用數據比較

類型性質轉數主流產品價格(企業級)
SATA 機械 7.2K-10K轉/分 1T-2T 2T 800RMB 1400RMB(7.2K 2T)
SAS 機械 15K轉/分 300-600G-1000G 1200-2000RMB(15K)
SSD 電子 40-600GB 600RMB-7500RMB

2.4.4 不同類型磁盤的價格容量普及度對比

生產環境主流磁盤的相關信息對比:
企業生產普及程度:SAS>SATA>SSD
單位容量對比性能價格:SSD>SAS>SATA
單位價格購買磁盤容量:SATA>SAS>SSD

當前的工作,SAS,SATA是主流生產環境使用,SSD固態磁盤,效率最高,非機械式的,是電子設備,價格高。

2.4.5 淘寶網CDN緩存對象分級存儲策略案例

提出問題
在存儲數據中,18KB以下的對象數量占總數的80%,而其存儲量占總量不到40%;同時,80%經常被訪問的對象所占用的存儲空間不到總量20%。

分析問題:
以上的問題意味著“熱點數據”(即訪問頻次高的內容)需要更快的性能,而占的空間並不大,而“冷數據”(訪問頻次低的內容)所需存儲量很大,對性能要求不需要高。

解決問題:
因此,服務器引入分層存儲機制,單臺服務器(實際會多臺)的磁盤可由一塊80GB的SSD磁盤和兩塊500GB的SATA盤組成。然後把“熱數據”存放在SSD盤上,“冷數據”存放在SATA盤上,冷熱數據可以動態調度,從而兼顧性能,容量與成本。另:分層存儲調度軟件由淘寶開發。
上面的策略是高效,低成本方案,這是我們運維工作要重視的,實際工作中不可能不考慮成本,而無限制的去提升性能。

3,磁盤知識與讀寫原理

3.1 磁盤相關名詞翻譯

英文漢語
Disk 磁盤
Head 磁頭
Sector 扇區
Track 磁道
Cylinder 柱面
Units 單元塊(一個柱面的大小)
Block 數據塊
Inode 索引節點

3.2 磁盤內部相關名詞知識

一般來說,一塊磁盤有1個到數個盤片不等,其中每個盤片的有效盤面對應一個讀寫磁頭,從上往下從0開始依次編號,不同的磁盤盤面在邏輯上被劃分為磁道,柱面以及扇區,一般在出廠時就設定好了這些,磁盤及盤片的刨面如下圖:

技術分享圖片

3.2.1 磁盤的磁頭

  • 磁盤的每個盤片的每個有效盤面都會有一個讀寫磁頭(磁頭數=盤片個數*2),磁盤盤面區域的劃分如圖所示:

技術分享圖片

  • 在磁盤不工作的時候,磁頭停靠在靠近主軸接觸盤片的表面,即線速度最小的地方,這裏是一個不存放任何數據的特殊區域,稱為啟停區或著陸區,啟停區以外就是數據區。
  • 在磁盤的最外圈,離主軸最遠的磁道稱為“0”磁道,磁盤數據的存放就是從最外圈“0”磁道開始的。既然磁盤數據從最外圈開始,而停止時磁頭又是在最內圈啟停區,那麽磁頭是如何找到“0”磁道的位置的呢?那是因為在磁盤中還有一個用來完成磁盤初始定位的“0”磁道檢測器構件,由這個構件完成磁頭對“0”磁道的定位。
  • “0”磁道非常重要,我們知道,系統的引導程序就在0柱面0磁道1扇區的前446Bytes。

3.2.2 磁盤的盤面

磁盤的盤片一般是用鋁合金材料或玻璃做基片。磁盤的每一個盤片都有兩個盤面,即上,下盤面,一般來說,每個盤面都可以存儲數據,成為有效盤面,也有極個別的磁盤盤面數為單數。每一個這樣的有效盤面都有一個盤面號,按順序從上至下從“0”開始依次編號。因為每一個有效盤面都有一個對應讀寫磁頭,盤面號又叫磁頭號。磁盤的盤片組在2~14片不等,通常有2~3個盤片(如300G15KSAS盤就是3個盤片),故盤面號(磁頭號)0~3或0~5不等,註意:盤面個數等於磁頭個數。

技術分享圖片

3.2.3 磁盤的磁道

  • 磁盤在格式化時被劃分成許多同心圓,這些同心圓的軌跡叫做磁道。磁道由盤面從外向內依次從0開始順序編號。
  • 磁盤的每一個盤面一般有300~1024個磁道,新式大容量磁盤每個磁盤每個盤面的磁道數可能會更多。信息以脈沖串的形式記錄在這些軌跡中,這些同心圓軌跡不是連續的記錄數據,而是被劃分成一段段的圓弧,這些圓弧的角速度一樣。由於徑向長度不一樣,所以,線速度也不一樣,外圈的線速度較內圈的線速度大,即同樣的轉速下,外圈在同樣時間段裏,劃過的圓弧長度要比內圈劃過的圓弧長度大(但是讀取到的數據是一樣的)。這樣的每段圓弧叫做一個扇區,扇區從“1”開始編號,每個山區中的數據做為一個單元同時讀出或寫入。一個標準的3.5寸磁盤盤面通常有300~1024個磁道。特別說明,磁道是“看”不見得,只是在盤面上以特殊形式磁化了的一些磁化區,我們給大家畫的圖片是磁道形象的展示,在磁盤格式化時就已規劃完畢了。

提示:
前面講過的,給磁盤分區實際就是劃分柱面號及扇區號。
柱面是所有盤面上相同半徑的不同磁道的集合。

3.2.4 磁盤的柱面

  • 一個磁盤所有的盤面上同一個半徑相同的磁道的圓形軌跡從上倒下依次組成一個圓柱體,就稱作柱面,每個圓柱上的磁頭由上而下從“0”開始編號。
  • 一塊磁盤的柱面數(或每個盤面的磁道?數)既取決於每條磁道的寬窄(也會與磁頭的大小有關),也取決於定位機構所設定的磁道間步距的大小。這些都是在出廠前就完成設定的。特別註意:這裏的柱面數和前面的磁道數是一樣的。

3.2.5 磁盤的扇區

  • 操作系統是以扇區為單位將信息存儲在磁盤上的,一般情況下,每個扇區的大小是512字節。一個扇區主要有兩部分內容:存儲數據地點的標識符和存儲數據的數據段。
    技術分享圖片

技術分享圖片

  • 扇區的第一個主要部分是標識符。標識符就是扇區頭標,包括組成扇區三維地質的三個數字:扇區所在的磁頭(或盤面),磁道(或柱面號)以及扇區在磁道上的位置即扇區號。頭標中還包括一個字段,其中有顯示扇區是否能可靠存儲數據,或者是否已發現某個故障因而不宜使用的標記。
  • 有些磁盤控制器在扇區頭標中還記錄有指示字,可在原扇區出錯時指引磁盤轉到替換扇區或磁道。最後,扇區頭標以循環冗余校驗(CRC)值做為結束,以供控制器檢驗扇區頭標的讀出情況,確保準確無誤。
  • 扇區的第二個主要部分是存儲數據的數據段,可分為數據和保護數據的糾錯碼(ECC)。在初始準備期間,計算機用512個虛擬信息字節(實際數據的存放地)和與這些虛擬信息字節相應的ECC數字填入這個部分。

3.2.6 磁道柱面扇區總結

磁盤最基本的組成部分是由堅硬的金屬材料制成的塗以磁性介質的盤片,不同容量磁盤的盤片數不等。

記憶要點:
1)一塊磁盤有2-14個盤片,每個盤片有兩個面,每個面對應一個讀寫磁頭,用磁頭號來區分盤面,即盤面數就是磁頭數,盤片數*2=磁頭數(盤面數)
2)不同盤面的磁道被劃分為多個扇區區域,每個區域就是一個扇區(Sector)。
3)同一個盤面,以盤片中心為圓心,每個不同半徑的圓形軌跡就是一個磁道。
4)不同盤面相同半徑的磁道組成一個圓柱面就是柱面
5)一個柱面包含多個磁道(這些磁道的半徑相同),一個磁道包含多個扇區。
6)數據信息記錄可表示為:某磁頭,某磁道(柱面),某扇區

3.2.7 一句話概括定義(磁道,扇區,柱面)

  • 磁道:每個盤片有兩個面,都可記錄信息。盤片表面以盤片中心為圓心,用於記錄數據的不同半徑的圓形磁化軌跡就稱為磁道。磁化軌跡是磁化區域,是看不見的。磁道看起來是一個平面圓周形
  • 扇區:盤面由圓心向四周畫直線==半徑,不同的磁道被直線分成許多扇形的區域,每個弧形的區域叫做扇區,每個扇區大小一般為512字節,扇區看起來就是圓弧或扇形。
  • 柱面:磁盤中,不同的盤片(或盤面)相同半徑的磁道軌跡從上到下所組成的圓柱型區域就稱為柱面,柱面看起來是一個圓柱形。

3.2.8 磁盤工作原理

技術分享圖片

磁盤的讀寫流程及原理
磁盤的數據讀/寫一般是按柱面進行的,即次頭讀/寫數據時首先在同一柱面內從“0”磁頭開始進行操作,依次向下在同一柱面的不同盤面即不同磁頭上進行操作,只有?同一柱面所有的磁頭全部讀/寫完畢後,磁頭才轉移到下一柱面(即尋道),因為切換磁頭只需通過電子設備切換即可,而切換柱面則必須通過機械設備切換。電子磁頭間的切換比機械磁頭向臨近磁道或柱面切換要快的多。所以,數據的讀/寫按柱面進行,而不按盤面進行。也就是說,一個磁道寫滿數據後,就在同一柱面的下一個盤面的相同半徑磁道來寫,一個柱面寫滿後,才移到下一個柱面開始寫數據。讀數據也按照這種方式進行,這樣就大大提高了磁盤的讀/寫效率。

機械磁盤讀寫磁盤數據的原理小結
1)磁盤是按照柱面為單位讀寫數據的,即先讀取同一個盤面的某一個磁道,讀完之後,如果數據沒有讀完,磁頭也不會切換其他的磁道,而是選擇切換磁頭,讀取下一個盤面的相同半徑的磁道,直到所有盤面的相同半徑的磁道讀取完成之後,如果數據還沒有讀寫完成,才會切換其他不同半徑的磁道,這個切換磁道的過程稱為尋道。
2)不同磁頭間的切換是電子切換,而不同磁道間的切換需要磁頭做徑向運動,這個徑向運動需要步進電機調節,這個動作是機械的切換。
磁頭尋道是機械運動,切換磁頭是電子切換。

4,本部分重點小結:

1,名詞:磁道(track),柱面(cylinder),扇區(sector)
2,數據在磁盤的位置,三維地址,0磁頭0磁道1扇區。MBR 0磁頭0磁道1扇區前446字節

技術分享圖片

3,磁盤讀寫數據原理

5,為了下一節的知識做準備,我們最後說一下DPT(磁盤分區表)中的每一個分區表項的結構。16字節的表項,由低到高字節,如下表所示:

字節數說明
1Bytes State:分區狀態,0=未激活,0x80=激活
1Bytes StartHead:分區起始磁頭號
2Bytes StartSC:分區起始扇區和柱面號。低字節的低6位為扇區號,高2位為柱面號的第9,10位,高子節為柱面號的低8位
1Bytes Type:分區類型,如0x0B=FAT32,0x83=Linux等,00表示此項未用
1Bytes EndHead:分區結束磁頭號
2Bytes EndSC:分區結束扇區和柱面號,定義同前
4Bytes Relative:線性尋址方式下分區相對扇區地址(對於基本分區即為絕對地址)
4Bytes Sectors:分區大小(總扇區數)

說明:這就是一個磁盤分區的分區表,例如:/dev/sda1,使用fdisk,pated分區工具分區的實質就是改變上述64子節的分區表信息。

Linux有關硬盤知識