[if !supportLists]第一章 [endif]磁盤歷史和內外部物理結構介紹
[if !supportLists]1溶其、[endif]磁盤的歷史介紹
從1956年9月IBM向世界展示了第一臺磁盤存儲系統(tǒng)IBM 350 RAMAC至今钩杰,磁盤存儲系統(tǒng)已經經歷了近半個世紀的發(fā)展。經歷了這么多年洞翩,磁盤的變化非常巨大座舍。雖然最早的RAMAC容量只有5MB沮翔,然而卻需要使用50個直徑為24英寸的硬盤。而我們現(xiàn)在的一塊容量高達1000GB的磁盤曲秉,僅僅只需要三張磁盤片(還是一塊3.5寸盤)即可采蚀。
[if !supportLists]2、[endif]磁盤發(fā)展趨勢和實現(xiàn)措施
發(fā)展趨勢實現(xiàn)措施
體積更小存儲密度更高
速度更快讀寫更靈敏的磁頭承二,主軸轉數(shù)更高榆鼠,接口更先進
容量更大存儲密度更高、介質更好
使用更安全數(shù)據(jù)保持保護技術
第二章磁盤核心知識及數(shù)據(jù)讀寫原理
企業(yè)生產環(huán)境主流磁盤的相關信息對比:
?? 企業(yè)生產場景普及程度:SAS>SSD>SATA
?? 企業(yè)容量對比性能和價格:SSD>SAS>SATA(一塊SSD和一塊SATA)
?? 企業(yè)價格購買磁盤容量:SATA>SAS>SSD
2亥鸠、固態(tài)磁盤于傳統(tǒng)磁盤比較妆够,擁有以下缺點:
固態(tài)磁盤缺點缺點說明
成本高每單位容量價格是傳統(tǒng)磁盤的5~10倍,(基于內存)负蚊,甚至200~300倍(基于DRAM)神妹。
容量低目前固態(tài)磁盤最大容量遠低于傳統(tǒng)磁盤。(美國公司Foremay退出了EC188M系列固態(tài)盤2TB)盖桥。傳統(tǒng)磁盤的容量仍在迅速增長灾螃,據(jù)稱IBM已經測試過4TB的傳統(tǒng)硬盤题翻。
易受外界影響由于不像傳統(tǒng)磁盤那樣屏蔽于法拉第籠中揩徊,固態(tài)磁盤更易受到某些外界因素的不良影響。如斷電(基于DRAM的固態(tài)磁盤尤甚)嵌赠、磁場感染塑荒、靜電等。
寫入壽命有限寫入壽命有限(基于閃存)姜挺。一般閃存寫入壽命為1萬到10萬次齿税,特制的可達100萬到500萬次,然后整臺計算機壽命期內文件系統(tǒng)的某些部分(如文件分配表)的寫入次數(shù)仍將超過這一權限炊豪。特質的文件系統(tǒng)或者固件可以分擔寫入的位置凌箕,使固態(tài)磁盤的整體壽命達到20年以上拧篮。
數(shù)據(jù)難以恢復數(shù)據(jù)損壞后難以恢復。一旦在硬件上發(fā)生損壞牵舱,如果是傳統(tǒng)的磁盤或者磁帶存儲方式串绩,榮國數(shù)據(jù)恢復也許還能挽救一部分數(shù)據(jù)。但是如果是固態(tài)儲存芜壁,一旦芯片發(fā)生損壞礁凡,想要在碎成幾瓣或者被電流擊穿的芯片中找回數(shù)據(jù)那幾乎是不可能的。當然這種不足也是可以犧牲存儲空間來彌補的慧妄,主要用RAID
3顷牌、SSD固態(tài)粗盤與傳統(tǒng)機械磁盤優(yōu)劣勢對比:
項目固態(tài)磁盤傳統(tǒng)機械磁盤
容量較小大
價格高低
隨機存取極快一般
寫入次數(shù)SLC:10萬次?
? MLC:1萬次?
? 特制的可達到100-500W次
無限制
盤內陣列可極難
工作噪音無有
工作溫度極低較明顯
防震很好較差
數(shù)據(jù)恢復難可以
重量輕重
4、企業(yè)生產工作中磁盤的選型
磁盤:當前服務器市場:主流磁盤為SAS塞淹、SATA窟蓝、SSD硬盤。
[if !supportLists](1)[endif]企業(yè)級SAS硬盤(默認):
???? 企業(yè)里常見的SAS硬盤是15000轉/分(這里就是主軸的轉數(shù))窖铡。當前主流300G疗锐、600G、1000G,從具體的業(yè)務需求及性價比考慮费彼,在工作中多用146G滑臊、300-600G的SAS硬盤,
???? 一般選6*300G,6*600G箍铲,單盤容量不要太大雇卷,除非純備份!
用途:用戶提供生產線上的普通對外提供服務的業(yè)務服務器
例如:生產線上的數(shù)據(jù)庫業(yè)務颠猴、存儲業(yè)務关划、圖片業(yè)務及相關高并發(fā)業(yè)務(web http,cache服務),總的來說翘瓮,如果沒有特殊業(yè)務需求贮折,SAS磁盤是生產環(huán)境首選的磁盤配置。
(2)[endif]企業(yè)級SATA硬盤:
???? 企業(yè)級SATA硬盤资盅,7200-10000轉/分调榄,常見的容量為1T和2T,4T呵扛,6T每庆,優(yōu)點是經濟實惠,
容量大今穿,從具體的業(yè)務需求及性價比考慮缤灵,老男孩老師在工作中多用SATA磁盤做線下不提供服務的數(shù)據(jù)存儲或者并發(fā)業(yè)務訪問不是很大的業(yè)務應用,比如站點程序及數(shù)據(jù)庫、圖片的線下備份等腮出。
???? 特性:容量性價比高帖鸦,一般2T的SATA磁盤較佳。
???? 選擇SATA理由:1胚嘲、沒錢富蓄。2、量少慢逾,不給用戶提供服務立倍。3、備份侣滩。
磁盤選購小結:
(1)[endif]線上的業(yè)務口注,用SAS磁盤。
(2)[endif]線下的業(yè)務君珠,用SATA磁盤寝志,磁帶庫。
(3)[endif]線上高并發(fā)策添、容量小的業(yè)務材部,SSD磁盤。
(4)[endif]成本思想:根據(jù)數(shù)據(jù)的訪問熱度唯竹,只能分析分層存儲乐导。SATA+SSD
[if !supportLists]5、[endif]老男孩企業(yè)故障案例:
?? 不要用SATA磁盤來做在線高并發(fā)服務的數(shù)據(jù)存儲或數(shù)據(jù)庫業(yè)務浸颓,這是血的教訓物臂。
?? 某公司采用SATA做數(shù)據(jù)庫的存儲盤,結果導致數(shù)據(jù)庫連續(xù)宕機一個月产上。
?? 5臺SATA盤RAID5棵磷。
?? 解決:重新買5臺,把磁盤動SATA(RAID5)換成SAS(RAID10)晋涣。
?? 數(shù)據(jù)庫集群仪媒。
[if !supportLists]1、[endif]主庫選擇用SAS RAID10谢鹊,從庫SAS Raid0算吩。
[if !supportLists]2、[endif]當數(shù)據(jù)庫使用的引擎是MyISAM引擎撇贺,改成Innodb引擎赌莺。
6冰抢、磁盤相關名詞說明
英文:漢語
Disk磁盤
Head磁頭
Sector扇區(qū)
Track磁道
Cylinder柱面
Units單元塊(一個柱面的大兴伤弧)
Block數(shù)據(jù)塊
Inode索引節(jié)點
7、磁盤及盤片結構
[if !vml]
[endif]
8挎扰、盤片示意圖
[if !vml]
[endif]
[if !supportLists]9翠订、[endif]磁盤的磁道
?? 磁盤在格式化時被劃分成許多同心圓巢音,這些同心圓的軌跡叫做磁道(Track)。磁道由盤面從外向內依次從0開始順序編號尽超。一塊磁盤大約有300~1024個磁道官撼。
[if !supportLists]10、[endif]磁盤的扇區(qū)
[if !vml]
[endif]
扇區(qū)的第一個主要部分是標識符似谁,標識符就是扇區(qū)頭標傲绣,包括組成扇區(qū)三位地址的三個數(shù)字,扇區(qū)所在的磁頭(或盤面)巩踏。磁道(或柱面號)以及扇區(qū)在磁道上的位置即扇區(qū)號秃诵,頭標中還包括一個字段,其中有顯示扇區(qū)是否能可靠存儲數(shù)據(jù)塞琼,或者是否以及發(fā)現(xiàn)某個故障因而不宜使用的標記菠净。有些磁盤控制器在扇區(qū)頭標中還記錄有指示字,可在原扇區(qū)出錯時指引磁盤轉到替換扇區(qū)或磁道彪杉。最后扇區(qū)頭標以循環(huán)冗余校驗(CRC)值作為結束毅往,以供控制器檢驗扇區(qū)頭標的讀出情況,確保準確無誤派近。
???? 扇區(qū)的第二個主要部分是存儲數(shù)據(jù)的數(shù)據(jù)段攀唯,可分為數(shù)據(jù)和保護數(shù)據(jù)的糾錯碼(ECC)。在初始準備期間渴丸,計算機用512個虛擬信息字節(jié)(實際數(shù)據(jù)的存放地)和與這些虛擬信息字節(jié)相應的ECC數(shù)字填入這個部分革答。
記憶要點:
(1). 一塊磁盤有2-14個盤片,每個盤片有兩個面曙强,每個面對于一個讀寫磁頭残拐,用磁頭號來區(qū)分盤面,即盤面數(shù)就是磁頭數(shù)碟嘴。盤片數(shù)*2=磁頭數(shù)(盤面數(shù))
(2). 不同盤面的磁道被劃分為多個扇形區(qū)域溪食,每個區(qū)域就是一個扇區(qū)
(3). 同一個盤面,以盤片中心為圓心娜扇,每個不同半徑的圓形軌跡就是一個磁道
(4). 不同盤面相同半徑的磁道組成一個圓柱面就是柱面
(5). 一個柱面包含多個磁道(這些磁道的半徑一樣)错沃,一個磁道包含多個扇區(qū)
(6). 數(shù)據(jù)信息記錄可表示為:某磁頭,某磁道(柱面)雀瓢,某扇區(qū)枢析。
11、
[if !supportLists](1)[endif]磁道的一句話概括定義
???? 磁道:每個盤面有兩個面刃麸,都可記錄信息醒叁。盤片表面以盤片中心為圓心,用于記錄數(shù)據(jù)的不同半徑的原型磁化軌跡就稱為磁道。磁化軌跡就是磁化區(qū)域把沼,是看不見的啊易。磁道看起來是一個平面圓周形。
[if !supportLists](2)[endif]扇區(qū)的一句話概括定義
???? 扇區(qū):盤面由圓心向四周畫直線饮睬,不同的磁道被直線分成許多扇形(弧形)的區(qū)域租谈,每個弧形的區(qū)域叫做扇區(qū),每個扇區(qū)大小一般為512字節(jié)捆愁,扇區(qū)看起來就是圓弧或扇形割去。
[if !supportLists](3)[endif]柱面的一句話概括定義
???? 柱面:磁盤中,不同的盤片(或盤面)相同半徑的磁道軌跡從上到下所組成的圓柱形區(qū)域就稱為柱面昼丑,柱面看起來是一個圓柱形劫拗。
12、磁盤是機械式磁盤:
(1)盤片的旋轉靠馬達帶動主軸矾克,機械運動页慷。
(2)磁頭的徑向移動也是靠步進電機來完成的,機械運動胁附。
(3)所有的磁頭同時同向移動的酒繁。
磁盤在讀寫數(shù)據(jù)是,盡可能讓磁頭不懂控妻,或少移動磁頭就能讀到更多或全部的數(shù)據(jù)州袒。
[if !supportLists]13、[endif]磁盤讀取原理:
[if !vml]
[endif]
[if !supportLists]14弓候、[endif]機械磁盤讀寫磁盤數(shù)據(jù)的原理小結:
[if !supportLists](1)[endif]磁盤是按照柱面為單位讀寫數(shù)據(jù)的郎哭,即先讀取同一個盤面的某一個磁道,讀完之后菇存,如果數(shù)據(jù)沒有讀完夸研,磁頭也不會切換到其他的磁道,而是選擇切換磁頭依鸥,讀取下一個盤面的相同半徑的磁道亥至,知道所有盤面的相同半徑的磁道讀取完成會后,如果數(shù)據(jù)還沒有讀寫完成贱迟,才會切換其他不同半徑的磁道姐扮,這個切換磁道的過程稱為尋道。
[if !supportLists](2)[endif]不同磁頭間的切換時電子切換衣吠,而不同磁道間的切換需要磁頭做徑向運動茶敏,這個徑向運動需要步進電機調節(jié),這個動作是機械的切換缚俏。
?? 磁頭尋道是機械運動惊搏,切換磁頭是電子切換贮乳。
15、磁盤容量的計算:
512字節(jié)*每磁道扇區(qū)數(shù)=磁道大小
磁道大小*磁道數(shù)=盤面大小
盤面大小*磁頭數(shù)=磁盤容量
磁盤容量=512字節(jié)*每磁道扇區(qū)數(shù)*磁道數(shù)*磁頭數(shù)
柱面大小=磁道大小*磁頭數(shù)
磁道大小=521字節(jié)*沒磁道扇區(qū)數(shù)
磁盤容量=柱面大小*柱面數(shù)(磁道數(shù))
磁盤容量=521字節(jié)*每磁道扇區(qū)數(shù)*柱面數(shù)(磁道數(shù))*磁頭數(shù)
fdisk -l 查看磁盤對應的分區(qū)
[root@oldboy?~]#?fdisk?-l
Disk?/dev/sda:?21.5?GB,?21474836480?bytes
255?heads,?63?sectors/track,?2610?cylinders
Units?=?cylinders?of?16065?*?512?=?8225280?bytes
Sector?size?(logical/physical):?512?bytes?/?512?bytes
I/O?size?(minimum/optimal):?512?bytes?/?512?bytes
Disk?identifier:?0x000349ee
Device?Boot??????Start?????????End??????Blocks???Id??System
/dev/sda1???*???????????1??????????26??????204800???83??Linux
Partition?1?does?not?end?on?cylinder?boundary.
/dev/sda2??????????????26?????????124??????786432???82??Linux?swap?/?Solaris
Partition?2?does?not?end?on?cylinder?boundary.
/dev/sda3?????????????124????????2611????19979264???83??Linux
[root@oldboy?~]#?echo?512*63*2610*255|bc
21467980800
[root@oldboy?~]#?echo?512*63*2610*255/1000/1000
512*63*2610*255/1000/1000
[root@oldboy?~]#?echo?512*63*2610*255/1000/1000|bc
21467
[root@oldboy?~]#?echo?512*63*2610*255/1000/1000/1000|bc
21
[root@oldboy?~]#?echo?512?63?2610?255|awk?'{print?$1*$2*$3*$4/1000000000}'
21.468