新聞中心
聯(lián)系我們
Contact us
Contact us
- 總部電話010-51727811
- 客服熱線400 779 6696
- 更多聯(lián)系信息
磁盤存儲(chǔ)陣列DiskArray原理(一)
時(shí)間:2012-07-30 09:14 來源:飛客數(shù)據(jù)恢復(fù) 作者:飛客數(shù)據(jù)恢復(fù)工程師
1.為什么需要磁盤陣列?
如何增加磁盤的存取(access)速度,如何防止數(shù)據(jù)因磁盤的故障而失落及如何有效的利用磁盤空間,一直是電腦專業(yè)人員和用戶的困擾;而大容量磁盤的價(jià)格非常昂貴,對用戶形成很大的負(fù)擔(dān)。磁盤陣列技術(shù)的產(chǎn)生一舉解決了這些問題。
過去十幾年來,CPU的處理速度增加了五十倍有多,內(nèi)存(memory)的存取速度亦大幅增加,而數(shù)據(jù)儲(chǔ)存裝置--主要是磁盤(harddisk)--的存取速度只增加了三、四倍,形成電腦系統(tǒng)的瓶頸,拉低了電腦系統(tǒng)的整體性能(throughput),若不能有效的提升磁盤的存取速度,CPU、內(nèi)存及磁盤間的不平衡將使CPU及內(nèi)存的改進(jìn)形成浪費(fèi)。
目前改進(jìn)磁盤存取速度的的方式主要有兩種。一是磁盤快取控制(diskcachecontroller),它將從磁盤讀取的數(shù)據(jù)存在快取內(nèi)存(cachememory)中以減少磁盤存取的次數(shù),數(shù)據(jù)的讀寫都在快取內(nèi)存中進(jìn)行,大幅增加存取的速度,如要讀取的數(shù)據(jù)不在快取內(nèi)存中,或要寫數(shù)據(jù)到磁盤時(shí),才做磁盤的存取動(dòng)作。這種方式在單工環(huán)境(single-taskingenvioronment)如DOS之下,對大量數(shù)據(jù)的存取有很好的性能(量小且頻繁的存取則不然),但在多工(multi-tasking)環(huán)境之下(因?yàn)橐煌5淖鲾?shù)據(jù)交換(swapping)的動(dòng)作)或數(shù)據(jù)庫(database)的存取(因?yàn)槊恳挥涗浂己苄?就不能顯示其性能。這種方式?jīng)]有任何安全保障。
其二是使用磁盤陣列的技術(shù)。磁盤陣列是把多個(gè)磁盤組成一個(gè)陣列,當(dāng)作單一磁盤使用,它將數(shù)據(jù)以分段(striping)的方式儲(chǔ)存在不同的磁盤中,存取數(shù)據(jù)時(shí),陣列中的相關(guān)磁盤一起動(dòng)作,大幅減低數(shù)據(jù)的存取時(shí)間,同時(shí)有更佳的空間利用率。磁盤陣列所利用的不同的技術(shù),稱為RAIDlevel,不同的level針對不同的系統(tǒng)及應(yīng)用,以解決數(shù)據(jù)安全的問題。
一般高性能的磁盤陣列都是以硬件的形式來達(dá)成,進(jìn)一步的把磁盤快取控制及磁盤陣列結(jié)合在一個(gè)控制器(RAIDcontroler或控制卡上,針對不同的用戶解決人們對磁盤輸出入系統(tǒng)的四大要求:
(1)增加存取速度,
(2)容錯(cuò)(faulttolerance),即安全性
(3)有效的利用磁盤空間;
(4)盡量的平衡CPU,內(nèi)存及磁盤的性能差異,提高電腦的整體工作性能。
2.磁盤陣列原理
磁盤陣列中針對不同的應(yīng)用使用的不同技術(shù),稱為RAIDlevel,RAID是RedundentArrayofInexpensiveDisks的縮寫,而每一level代表一種技術(shù),目前業(yè)界公認(rèn)的標(biāo)準(zhǔn)是RAID0~RAID5。這個(gè)level并不代表技術(shù)的高低,level5并不高于level3,level1也不低過level4,至于要選擇那一種RAIDlevel的產(chǎn)品,純視用戶的操作環(huán)境(operatingenvironment)及應(yīng)用(application)而定,與level的高低沒有必然的關(guān)系。
RAID0及RAID1適用于PC及PC相關(guān)的系統(tǒng)如小型的網(wǎng)絡(luò)服務(wù)器(networkserver)及需要高磁盤容量與快速磁盤存取的工作站等,比較便宜;RAID3及RAID4適用于大型電腦及影像、CAD/CAM等處理;RAID5多用于OLTP,因有金融機(jī)構(gòu)及大型數(shù)據(jù)處理中心的迫切需要,故使用較多而較有名氣,RAID2較少使用,其他如RAID6,RAID7,乃至RAID10等,都是廠商各做各的,并無一致的標(biāo)準(zhǔn),在此不作說明。介紹各個(gè)RAIDlevel之前,先看看形成磁盤陣列的兩個(gè)基本技術(shù):
磁盤延伸(DiskSpanning):
譯為磁盤延伸,能確切的表示diskspanning這種技術(shù)的含義。磁盤陣列控制器,聯(lián)接了四個(gè)磁盤,這四個(gè)磁盤形成一個(gè)陣列(array),而磁盤陣列的控制器(RAIDcontroller)是將此四個(gè)磁盤視為單一的磁盤,如DOS環(huán)境下的C:盤。這是diskspanning的意義,因?yàn)榘研∪萘康拇疟P延伸為大容量的單一磁盤,用戶不必規(guī)劃數(shù)據(jù)在各磁盤的分布,而且提高了磁盤空間的使用率。并使磁盤容量幾乎可作無限的延伸;而各個(gè)磁盤一起作取存的動(dòng)作,比單一磁盤更為快捷。很明顯的,有此陣列的形成而產(chǎn)生RAID的各種技術(shù)。
磁盤或數(shù)據(jù)分段(DiskStripingorDataStriping):
因?yàn)榇疟P陣列是將同一陣列的多個(gè)磁盤視為單一的虛擬磁盤(virtualdisk),所以其數(shù)據(jù)是以分段(blockorsegment)的方式順序存放在磁盤陣列中,數(shù)據(jù)按需要分段,從第一個(gè)磁盤開始放,放到最後一個(gè)磁盤再回到第一個(gè)磁盤放起,直到數(shù)據(jù)分布完畢。至于分段的大小視系統(tǒng)而定,有的系統(tǒng)或以1KB最有效率,或以4KB,或以6KB,甚至是4MB或8MB的,但除非數(shù)據(jù)小于一個(gè)扇區(qū)(sector,即521bytes),否則其分段應(yīng)是512byte的倍數(shù)。因?yàn)榇疟P的讀寫是以一個(gè)扇區(qū)為單位,若數(shù)據(jù)小于512bytes,系統(tǒng)讀取該扇區(qū)后,還要做組合或分組(視讀或?qū)懚?的動(dòng)作,浪費(fèi)時(shí)間。數(shù)據(jù)以分段于在不同的磁盤,整個(gè)陣列的各個(gè)磁盤可同時(shí)作讀寫,故數(shù)據(jù)分段使數(shù)據(jù)的存取有最好的效率,理論上本來讀一個(gè)包含四個(gè)分段的數(shù)據(jù)所需要的時(shí)間約=(磁盤的accesstime數(shù)據(jù)的tranfertime)X4次,現(xiàn)在只要一次就可以完成。
若以N表示磁盤的數(shù)目,R表示讀取,W表示寫入,S表示可使用空間,則數(shù)據(jù)分段的性能為:
R:N(可同時(shí)讀取所有磁盤)
W:N(可同時(shí)寫入所有磁盤)
S:N(可利用所有的磁盤,并有最佳的使用率)
Diskstriping也稱為RAID0,很多人以為RAID0沒有甚么,其實(shí)這是非常錯(cuò)誤的觀念,
因?yàn)镽AID0使磁盤的輸出入有最高的效率。而磁盤陣列有更好效率的原因除數(shù)據(jù)分段外,它可以同時(shí)執(zhí)行多個(gè)輸出入的要求,因?yàn)殛嚵兄械拿恳粋(gè)磁盤都能獨(dú)立動(dòng)作,分段放在不同的磁盤,不同的磁盤可同時(shí)作讀寫,而且能在快取內(nèi)存及磁盤作并行存取(parallelaccess)的動(dòng)作,但只有硬件的磁盤陣列才有此性能表現(xiàn)。
從上面兩點(diǎn)我們可以看出,diskspanning定義了RAID的基本形式,提供了一個(gè)便宜、靈活、高性能的系統(tǒng)結(jié)構(gòu),而diskstriping解決了數(shù)據(jù)的存取效率和磁盤的利用率問題,RAID1至RAID5是在此基礎(chǔ)上提供磁盤安全的方案。