磁盤陣列(Disk Array)原理
1.為什么需要磁盤陣列?
如何增加磁盤的存取(access)速度,如何防止數(shù)據(jù)因磁盤的故障而失落及如何有效的利用磁盤空間,一直是電腦專業(yè)人員和用戶的困擾;而大容量磁盤的價(jià)格非常昂貴,對(duì)用戶形成很大的負(fù)擔(dān)。磁盤陣列技術(shù)的產(chǎn)生一舉解決了這些問題。過去十幾年來,CPU的處理速度增加了五十倍有多,內(nèi)存(memory)的存取速度亦大幅增加,而數(shù)據(jù)儲(chǔ)存裝置--主要是磁盤(hard disk)--的存取速度只增加了三、四倍,形成電腦系統(tǒng)的瓶頸,拉低了電腦系統(tǒng)的整體性能(throughput),若不能有效的提升磁盤的存取速度, CPU、內(nèi)存及磁盤間的不平衡將使CPU及內(nèi)存的改進(jìn)形成浪費(fèi)。
目前改進(jìn)磁盤存取速度的的方式主要有兩種。一是磁盤快取控制(disk cache controller),它將從磁盤讀取的數(shù)據(jù)存在快取內(nèi)存(cache memory)中以減少磁盤存取的次數(shù),數(shù)據(jù)的讀寫都在快取內(nèi)存中進(jìn)行,大幅增加存取的速度,如要讀取的數(shù)據(jù)不在快取內(nèi)存中,或要寫數(shù)據(jù)到磁盤時(shí),才做磁盤的存取動(dòng)作。這種方式在單工環(huán)境(single-tasking environment)如DOS之下,對(duì)大量數(shù)據(jù)的存取有很好的性能(量小且頻繁的存取則不然),但在多工(multi-tasking)環(huán)境之下(因?yàn)橐煌5淖鲾?shù)據(jù)交換(swapping)的動(dòng)作)或數(shù)據(jù)庫(kù)(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ù),稱為RAID level,不同的level針對(duì)不同的系統(tǒng)及應(yīng)用,以解決數(shù)據(jù)安全的問題。一般高性能的磁盤陣列都是以硬件的形式來達(dá)成,進(jìn)一步的把磁盤快取控制及磁盤陣列結(jié)合在一個(gè)控制器(RAID control或控制卡上,針對(duì)不同的用戶解決人們對(duì)磁盤輸出入系統(tǒng)的四大要求:
(1)增加存取速度,
(2)容錯(cuò)(fault tolerance),即安全性
(3)有效的利用磁盤空間;
(4)盡量的平衡CPU,內(nèi)存及磁盤的性能差異,提高電腦的整體工作性能。
2.磁盤陣列
磁盤陣列中針對(duì)不同的應(yīng)用使用的不同技術(shù),稱為RAID level ,RAID是Red un dent Array of Inexpensive Disks的縮寫,而每一level代表一種技術(shù),目前業(yè)界公認(rèn)的標(biāo)準(zhǔn)是RAID0~RAID5。這個(gè)level并不代表技術(shù)的高低,level5并不高于level3,level1也不低過level4,至于要選擇那一種RAID level的產(chǎn)品,純視用戶的操作環(huán)境(operating environment)及應(yīng)用(application)而定,與level的高低沒有必然的關(guān)系。RAID0及RAID1適用于PC及PC相關(guān)的系統(tǒng)如小型的網(wǎng)絡(luò)服務(wù)器(network server)及需要高磁盤容量與快速磁盤存取的工作站等,比較便宜;RAID3及RAID4適用于大型電腦及影像、CAD/CAM等處理;RAID5多用于OLTP,因有金融機(jī)構(gòu)及大型數(shù)據(jù)處理中心的迫切需要,故使用較多而較有名氣,RAID2較少使用,其他如RAID6,RAID7,乃至RAID10 等,都是廠商各做各的,并無一致的標(biāo)準(zhǔn),在此不作說明。介紹各個(gè)RAID level之前,先看看形成磁盤陣列的兩個(gè)基本技術(shù):磁盤延伸(Disk Spanning):譯為磁盤延伸,能確切的表示disk spanning這種技術(shù)的含義。如圖磁盤陣列控制器,聯(lián)接了四個(gè)磁盤,這四個(gè)磁盤形成一個(gè)陣列(array),而磁盤陣列的控制器(RAID controller)是將此四個(gè)磁盤視為單一的磁盤,如DOS環(huán)境下的C:盤。這是disk spanning的意義,因?yàn)榘研∪萘康拇疟P延伸為大容量的單一磁盤,用戶不必規(guī)劃數(shù)據(jù)在各磁盤的分布,而且提高了磁盤空間的使用率。并使磁盤容量幾乎可作無限的延伸;而各個(gè)磁盤一起作取存的動(dòng)作,比單一磁盤更為快捷。很明顯的,有此陣列的形成而產(chǎn)生RAID的各種技術(shù)。磁盤或數(shù)據(jù)分段(Disk Striping or Data Striping):因?yàn)榇疟P陣列是將同一陣列的多個(gè)磁盤視為單一的虛擬磁盤(virtual disk),所以其數(shù)據(jù)是以分段(block or segment)的方式順序存放在磁盤陣列中,數(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í)間約=(磁盤的access time 數(shù)據(jù)的transfer time)X4次,現(xiàn)在只要一次就可以完成。若以N表示磁盤的數(shù)目,R表示讀取,W表示寫入,S表示可使用空間,則數(shù)據(jù)分段的性能為:
R:N(可同時(shí)讀取所有磁盤)
W:N(可同時(shí)寫入所有磁盤)
S:N(可利用所有的磁盤,并有的使用率)
另一個(gè)額外的容錯(cuò)功能是壞扇區(qū)轉(zhuǎn)移(bad sect or reassignment)。壞扇區(qū)是磁盤故障的主要原因,通常磁盤在讀寫時(shí)發(fā)生壞扇區(qū)的情況即表示此磁盤故障,不能再作讀寫,甚至有很多系統(tǒng)會(huì)因?yàn)椴荒芡瓿勺x寫的動(dòng)作而死機(jī),但若因?yàn)槟骋簧葏^(qū)的損壞而使工作不能完成或要更換磁盤,則使得系統(tǒng)性能大打折扣,而系統(tǒng)的維護(hù)成本也未免太高了。壞扇區(qū)轉(zhuǎn)移是當(dāng)磁盤陣列系統(tǒng)發(fā)現(xiàn)磁盤有壞扇區(qū)時(shí),以另一空白且無故障的扇區(qū)取代該扇區(qū),以延長(zhǎng)磁盤的使用壽命,減少壞磁盤的發(fā)生率以及系統(tǒng)的維護(hù)成本。所以壞扇區(qū)轉(zhuǎn)移功能使磁盤陣列具有更好的容錯(cuò)性,同時(shí)使整個(gè)系統(tǒng)有的成本效益比。其他如可外接電池備援磁盤陣列的快取內(nèi)存,以避免突然斷電時(shí)數(shù)據(jù)尚未寫回磁盤而損失;或在RAID1時(shí)作寫入一致性的檢查等,雖是小技術(shù),但亦不可忽視。
3.硬件磁盤陣列還是軟件磁盤陣列
市面上有所謂硬件磁盤陣列與軟件磁盤陣列之分,因?yàn)檐浖疟P陣列是使用一塊SCSI卡與磁盤連接,一般用戶誤以為是硬件磁盤陣列??荚?大提示以上所述主要是針對(duì)硬件磁盤陣列,其與軟件磁盤陣列有幾個(gè)的區(qū)別:
一個(gè)完整的磁盤陣列硬件與系統(tǒng)相接。
內(nèi)置CPU,與主機(jī)并行運(yùn)作, 所有的I/O都在磁盤陣列中完成,減輕主機(jī)的工作負(fù)載,增加系統(tǒng)整體性能。
有卓越的總線主控(bus mastering)及DMA(Direct Memory Access)能力,加速數(shù)據(jù)的存取及傳輸性能。
與快取內(nèi)存結(jié)合在一起,不但增加數(shù)據(jù)的存取及傳輸性能,更因減少對(duì)磁盤的存取而增加磁盤的壽命。
能充份利用硬件的特性,反應(yīng)快速。
軟件磁盤陣列是一個(gè)程序,在主機(jī)執(zhí)行,透過一塊SCSI卡與磁盤相接形成陣列,它的優(yōu)點(diǎn)是便宜,因?yàn)闆]有硬件成本(包括研發(fā)、生產(chǎn)、維護(hù)等),而SCSI卡很便宜(亦有的軟件磁盤陣列使用指定的很貴的SCSI卡);它的缺點(diǎn)是使主機(jī)多了很多進(jìn)程(process),增加了主機(jī)的負(fù)擔(dān), 尤其是輸出入需求量大的系統(tǒng)。目前市面上的磁盤陣列系統(tǒng)大部份是硬件磁盤陣列,軟件磁盤陣列較少。
4.磁盤陣列卡還是磁盤陣列控制器
磁盤陣列控制卡一般用于小系統(tǒng),供單機(jī)使用。與主機(jī)共用電源,在關(guān)閉主機(jī)電源時(shí)存在丟失Cache中的數(shù)據(jù)的的危險(xiǎn)。磁盤陣列控制卡只有常用總線方式的接口,其驅(qū)動(dòng)程序與主機(jī)、主機(jī)所用的操作系統(tǒng)都有關(guān)系,有軟、硬件兼容性問題并潛在地增加了系統(tǒng)的不安定因素。在更換磁盤陣列卡時(shí)要冒磁盤損壞,資料失落,隨時(shí)停機(jī)的風(fēng)險(xiǎn)數(shù)據(jù)恢復(fù)。
獨(dú)立式磁盤陣列控制一般用于較大型系統(tǒng),可分為兩種:?jiǎn)瓮ǖ来疟P陣列和多通道式磁盤陣列,單通道磁盤陣列只能接一臺(tái)主機(jī),有很大的擴(kuò)充限制。多通道磁盤陣列可接多個(gè)系統(tǒng)同時(shí)使用,以群集(cluster)的方式共用磁盤陣列,這使內(nèi)接式陣列控制及單接式磁盤陣列無用武之地。目前多數(shù)獨(dú)立形式的磁盤陣列子系統(tǒng)。
1.為什么需要磁盤陣列?
如何增加磁盤的存取(access)速度,如何防止數(shù)據(jù)因磁盤的故障而失落及如何有效的利用磁盤空間,一直是電腦專業(yè)人員和用戶的困擾;而大容量磁盤的價(jià)格非常昂貴,對(duì)用戶形成很大的負(fù)擔(dān)。磁盤陣列技術(shù)的產(chǎn)生一舉解決了這些問題。過去十幾年來,CPU的處理速度增加了五十倍有多,內(nèi)存(memory)的存取速度亦大幅增加,而數(shù)據(jù)儲(chǔ)存裝置--主要是磁盤(hard disk)--的存取速度只增加了三、四倍,形成電腦系統(tǒng)的瓶頸,拉低了電腦系統(tǒng)的整體性能(throughput),若不能有效的提升磁盤的存取速度, CPU、內(nèi)存及磁盤間的不平衡將使CPU及內(nèi)存的改進(jìn)形成浪費(fèi)。
目前改進(jìn)磁盤存取速度的的方式主要有兩種。一是磁盤快取控制(disk cache controller),它將從磁盤讀取的數(shù)據(jù)存在快取內(nèi)存(cache memory)中以減少磁盤存取的次數(shù),數(shù)據(jù)的讀寫都在快取內(nèi)存中進(jìn)行,大幅增加存取的速度,如要讀取的數(shù)據(jù)不在快取內(nèi)存中,或要寫數(shù)據(jù)到磁盤時(shí),才做磁盤的存取動(dòng)作。這種方式在單工環(huán)境(single-tasking environment)如DOS之下,對(duì)大量數(shù)據(jù)的存取有很好的性能(量小且頻繁的存取則不然),但在多工(multi-tasking)環(huán)境之下(因?yàn)橐煌5淖鲾?shù)據(jù)交換(swapping)的動(dòng)作)或數(shù)據(jù)庫(kù)(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ù),稱為RAID level,不同的level針對(duì)不同的系統(tǒng)及應(yīng)用,以解決數(shù)據(jù)安全的問題。一般高性能的磁盤陣列都是以硬件的形式來達(dá)成,進(jìn)一步的把磁盤快取控制及磁盤陣列結(jié)合在一個(gè)控制器(RAID control或控制卡上,針對(duì)不同的用戶解決人們對(duì)磁盤輸出入系統(tǒng)的四大要求:
(1)增加存取速度,
(2)容錯(cuò)(fault tolerance),即安全性
(3)有效的利用磁盤空間;
(4)盡量的平衡CPU,內(nèi)存及磁盤的性能差異,提高電腦的整體工作性能。
2.磁盤陣列
磁盤陣列中針對(duì)不同的應(yīng)用使用的不同技術(shù),稱為RAID level ,RAID是Red un dent Array of Inexpensive Disks的縮寫,而每一level代表一種技術(shù),目前業(yè)界公認(rèn)的標(biāo)準(zhǔn)是RAID0~RAID5。這個(gè)level并不代表技術(shù)的高低,level5并不高于level3,level1也不低過level4,至于要選擇那一種RAID level的產(chǎn)品,純視用戶的操作環(huán)境(operating environment)及應(yīng)用(application)而定,與level的高低沒有必然的關(guān)系。RAID0及RAID1適用于PC及PC相關(guān)的系統(tǒng)如小型的網(wǎng)絡(luò)服務(wù)器(network server)及需要高磁盤容量與快速磁盤存取的工作站等,比較便宜;RAID3及RAID4適用于大型電腦及影像、CAD/CAM等處理;RAID5多用于OLTP,因有金融機(jī)構(gòu)及大型數(shù)據(jù)處理中心的迫切需要,故使用較多而較有名氣,RAID2較少使用,其他如RAID6,RAID7,乃至RAID10 等,都是廠商各做各的,并無一致的標(biāo)準(zhǔn),在此不作說明。介紹各個(gè)RAID level之前,先看看形成磁盤陣列的兩個(gè)基本技術(shù):磁盤延伸(Disk Spanning):譯為磁盤延伸,能確切的表示disk spanning這種技術(shù)的含義。如圖磁盤陣列控制器,聯(lián)接了四個(gè)磁盤,這四個(gè)磁盤形成一個(gè)陣列(array),而磁盤陣列的控制器(RAID controller)是將此四個(gè)磁盤視為單一的磁盤,如DOS環(huán)境下的C:盤。這是disk spanning的意義,因?yàn)榘研∪萘康拇疟P延伸為大容量的單一磁盤,用戶不必規(guī)劃數(shù)據(jù)在各磁盤的分布,而且提高了磁盤空間的使用率。并使磁盤容量幾乎可作無限的延伸;而各個(gè)磁盤一起作取存的動(dòng)作,比單一磁盤更為快捷。很明顯的,有此陣列的形成而產(chǎn)生RAID的各種技術(shù)。磁盤或數(shù)據(jù)分段(Disk Striping or Data Striping):因?yàn)榇疟P陣列是將同一陣列的多個(gè)磁盤視為單一的虛擬磁盤(virtual disk),所以其數(shù)據(jù)是以分段(block or segment)的方式順序存放在磁盤陣列中,數(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í)間約=(磁盤的access time 數(shù)據(jù)的transfer time)X4次,現(xiàn)在只要一次就可以完成。若以N表示磁盤的數(shù)目,R表示讀取,W表示寫入,S表示可使用空間,則數(shù)據(jù)分段的性能為:
R:N(可同時(shí)讀取所有磁盤)
W:N(可同時(shí)寫入所有磁盤)
S:N(可利用所有的磁盤,并有的使用率)
另一個(gè)額外的容錯(cuò)功能是壞扇區(qū)轉(zhuǎn)移(bad sect or reassignment)。壞扇區(qū)是磁盤故障的主要原因,通常磁盤在讀寫時(shí)發(fā)生壞扇區(qū)的情況即表示此磁盤故障,不能再作讀寫,甚至有很多系統(tǒng)會(huì)因?yàn)椴荒芡瓿勺x寫的動(dòng)作而死機(jī),但若因?yàn)槟骋簧葏^(qū)的損壞而使工作不能完成或要更換磁盤,則使得系統(tǒng)性能大打折扣,而系統(tǒng)的維護(hù)成本也未免太高了。壞扇區(qū)轉(zhuǎn)移是當(dāng)磁盤陣列系統(tǒng)發(fā)現(xiàn)磁盤有壞扇區(qū)時(shí),以另一空白且無故障的扇區(qū)取代該扇區(qū),以延長(zhǎng)磁盤的使用壽命,減少壞磁盤的發(fā)生率以及系統(tǒng)的維護(hù)成本。所以壞扇區(qū)轉(zhuǎn)移功能使磁盤陣列具有更好的容錯(cuò)性,同時(shí)使整個(gè)系統(tǒng)有的成本效益比。其他如可外接電池備援磁盤陣列的快取內(nèi)存,以避免突然斷電時(shí)數(shù)據(jù)尚未寫回磁盤而損失;或在RAID1時(shí)作寫入一致性的檢查等,雖是小技術(shù),但亦不可忽視。
3.硬件磁盤陣列還是軟件磁盤陣列
市面上有所謂硬件磁盤陣列與軟件磁盤陣列之分,因?yàn)檐浖疟P陣列是使用一塊SCSI卡與磁盤連接,一般用戶誤以為是硬件磁盤陣列??荚?大提示以上所述主要是針對(duì)硬件磁盤陣列,其與軟件磁盤陣列有幾個(gè)的區(qū)別:
一個(gè)完整的磁盤陣列硬件與系統(tǒng)相接。
內(nèi)置CPU,與主機(jī)并行運(yùn)作, 所有的I/O都在磁盤陣列中完成,減輕主機(jī)的工作負(fù)載,增加系統(tǒng)整體性能。
有卓越的總線主控(bus mastering)及DMA(Direct Memory Access)能力,加速數(shù)據(jù)的存取及傳輸性能。
與快取內(nèi)存結(jié)合在一起,不但增加數(shù)據(jù)的存取及傳輸性能,更因減少對(duì)磁盤的存取而增加磁盤的壽命。
能充份利用硬件的特性,反應(yīng)快速。
軟件磁盤陣列是一個(gè)程序,在主機(jī)執(zhí)行,透過一塊SCSI卡與磁盤相接形成陣列,它的優(yōu)點(diǎn)是便宜,因?yàn)闆]有硬件成本(包括研發(fā)、生產(chǎn)、維護(hù)等),而SCSI卡很便宜(亦有的軟件磁盤陣列使用指定的很貴的SCSI卡);它的缺點(diǎn)是使主機(jī)多了很多進(jìn)程(process),增加了主機(jī)的負(fù)擔(dān), 尤其是輸出入需求量大的系統(tǒng)。目前市面上的磁盤陣列系統(tǒng)大部份是硬件磁盤陣列,軟件磁盤陣列較少。
4.磁盤陣列卡還是磁盤陣列控制器
磁盤陣列控制卡一般用于小系統(tǒng),供單機(jī)使用。與主機(jī)共用電源,在關(guān)閉主機(jī)電源時(shí)存在丟失Cache中的數(shù)據(jù)的的危險(xiǎn)。磁盤陣列控制卡只有常用總線方式的接口,其驅(qū)動(dòng)程序與主機(jī)、主機(jī)所用的操作系統(tǒng)都有關(guān)系,有軟、硬件兼容性問題并潛在地增加了系統(tǒng)的不安定因素。在更換磁盤陣列卡時(shí)要冒磁盤損壞,資料失落,隨時(shí)停機(jī)的風(fēng)險(xiǎn)數(shù)據(jù)恢復(fù)。
獨(dú)立式磁盤陣列控制一般用于較大型系統(tǒng),可分為兩種:?jiǎn)瓮ǖ来疟P陣列和多通道式磁盤陣列,單通道磁盤陣列只能接一臺(tái)主機(jī),有很大的擴(kuò)充限制。多通道磁盤陣列可接多個(gè)系統(tǒng)同時(shí)使用,以群集(cluster)的方式共用磁盤陣列,這使內(nèi)接式陣列控制及單接式磁盤陣列無用武之地。目前多數(shù)獨(dú)立形式的磁盤陣列子系統(tǒng)。