1、cache
Cache和Buffer是兩個不同的概念,簡單的說,Cache是加速“讀”,而buffer是緩沖“寫”,前者解決讀的問題,儲存從磁盤上讀出的資料,後者是解決寫的問題,儲存即将要寫入到磁盤上的資料。在很多情況下,這兩個名詞并沒有嚴格區分,常常把讀寫混合類型稱為buffer cache,本文後續的論述中,統一稱為cache。
Oracle并不關心底層存儲的類型,可能是一套存儲系統,可能是本地磁盤,可能是RAID 10,也可能是RAID 5,可能是檔案系統,也可能是裸裝置,或是ASM。總之,Oracle把底層的存儲系統稱為存儲子系統。
在存儲系統中,cache幾乎無處不在(在後面的論述中,我們統稱為cache),檔案系統有cache,存儲有cache,RAID控制器上有cache,磁盤上也有cache。為了提高性能,Oracle的一個寫操作,很有可能寫在存儲的cache上就傳回了,如果這時存儲系統發生問題,Oracle如何來保證資料一緻性的問題。
Oracle資料庫最重要的特性是:Write ahead logging,在data block在寫入前,必須保證首先寫入redo log,在事務commit時,同時必須保證redo log被寫入。Oracle為了保證資料的一緻性,對于redo log采用了direct IO,Direct IO會跳過了OS上檔案系統的cache這一層。但是,OS管不了存儲這一層,雖然跳過了檔案系統的cache,但是依然可能寫在存儲的cache上。
一般的存儲都有cache,為了提高性能,寫操作在cache上完成就傳回給OS了,我們稱這種寫操作為write back,為了保證掉電時cache中的内容不會丢失,存儲都有電池保護,這些電池可以供存儲在掉電後工作一定時間,保證cache中的資料被刷入磁盤,不會丢失。不同于UPS,電池能夠支撐的時間很短,一般都在30分鐘以内,隻要保證cache中的資料被寫入就可以了。存儲可以關閉寫cache,這時所有的寫操作必須寫入到磁盤才傳回,我們稱這種寫操作為write
throuogh,當存儲發現某些部件不正常時,存儲會自動關閉寫cache,這時寫性能會下降。
RAID卡上也有cache,一般是256M,同樣是通過電池來保護的,不同于存儲的是,這個電池并不保證資料可以被寫入到磁盤上,而是為cache供電以保護資料不丢失,一般可以支撐幾天的時間。還有些RAID卡上有flash cache,掉電後可以将cache中的内容寫入到flash cache中,保證資料不丢失。如果你的資料庫沒有存儲,而是放在普通PC機的本地硬碟之上的,一定要确認主機中的RAID卡是否有電池,很多硬體提供商預設是不配置電池的。當然,RAID卡上的cache同樣可以選擇關閉。
磁盤上的cache,一般是16M-64M,很多存儲廠商都明确表示,存儲中磁盤的cache是禁用的,這也是可以了解的,為了保證資料可靠性,而存儲本身又提供了非常大的cache,相比較而言,磁盤上的cache就不再那麼重要。SCSI指令中有一個FUA(Force Unit Access)的參數,設定這個參數時,寫操作必須在磁盤上完成才可以傳回,相當于禁用了磁盤的寫cache。雖然沒有查證到資料,但是我個人認為一旦磁盤被接入到RAID控制器中,寫cache就會被禁用,這也是為了資料可靠性的考慮,我相信存儲廠商應該會考慮這個問題。
至此,我們可以看到Oracle的一個實體IO是經曆了一系列的cache之後,最終被寫入到磁盤上。cache雖然可以提高性能,但是也要考慮掉電保護的問題。關于資料的一緻性,是由Oracle資料庫,作業系統和存儲子系統共同來保證的。
2、存儲的評估名額
IOPS(每秒io個數):系統在機關時間内能處理的最大IO頻度,一般指機關時間内完成的随即IO個數。決定IOPS的主要因素:磁盤個數,cache命中率,陣列算法。
每個磁盤的最大iops個數是有限制的,一般情況下,存儲都會有cache,那麼磁盤陣列能夠支援的iops會大于單單用磁盤計算出來的iops。
下面用兩個計算來說明:···假定cache的命中率在正常業務下達到30%,那麼120塊15K rpm(iops=150)的硬碟能支撐多少iops?
計算如下:iops=120*150/(1-30%)=1800/0.7=25700 也就是說,正常情況下,整個存儲最大可以持證25700個iops,如果在網上漲,存儲系統将可能變得不能負荷。
···假定現在陣列接收到的iops為15000個,存儲命中率為20%,計算每塊磁盤的iops個數?
計算如下:15000*(1-20%)=100 是以,每塊磁盤負荷的iops個數為100.
影響iops的還有一些陣列的算法,cache算法,尋道算法,預讀算法等,詳情可以看陣列的參考手冊。
帶寬(throughput):每個實體磁盤最大能支撐的流量大小,2Gb 4Gb 光纖卡。一個陣列上需配置多塊光纖卡,才能滿足傳輸要求。
響應時間:經驗顯示,一個io的響應時間應在20ms以内,應用基本可以正常工作。作為一個核心的高可用OLTP系統,最佳的單io響應時間建議在10ms以内。
3、存儲架構
先介紹幾個名詞:
前端口(卡):主要是存儲連接配接主機的部分,如存儲上的可連接配接主機或者光纖交換機的FC光纖口,現在流行的為2Gb/4Gb速率。
在多控制器結構中,也叫前端卡,每個卡上有自己的cpu與多個前端口。
後端口(卡):主要是存儲連接配接磁盤的部分,在光纖技術的存儲中,後端通過光纖口與内部光纖線與磁盤連接配接,一般連接配接方式有環路方式與交換方式。
控制器:中低端存儲的核心部件,因為這種結構都是對稱體系結構,以控制器為中心,控制器中包括自己的OS,CPU,與記憶體,負責存儲的運作于排程。
4、RAID(Redundant Array of Indenpendent Disks)
RAID(獨立備援磁盤陣列是)指由多個獨立硬碟結合形成的一個較大的邏輯陣列。資料存儲在磁盤的此陣列并帶有附加的備援資訊。備援資訊可以是資料本身(鏡像),也可以是從多個資料塊(RAID4或RAID5)計算出的奇偶校驗資訊。使用RAID後,作業系統(Windows、NetWare或UNIX)不再單獨處理單個硬碟,而是把整個磁盤陣列作為一個邏輯磁盤來處理。
RAID 的主要目标是提高資料的可用性和安全性。一旦出現硬碟故障,RAID可以防止停機,但是它不可以恢複使用者删除或者由失竊或火災等重大事件破壞的資料。出于此原因,安裝 RAID後,為防止這些原因破壞系統,必須經常備份資料。
實施RAID解決方案有兩種方法:
其一,硬體RAID控制器是智能裝置,可以自行處理所有的RAID資訊。安裝這種系統後,主機對RAID陣列的控制完全解除,而是由 RAID 控制器對RAID陣列進行全面控制。
另一種方法是使用簡易的主擴充卡和RAID驅動程式實施RAID。在這種系統中,驅動程式被內建到作業系統中,如Windows NT。此時,RAID系統的性能完全依賴于主 CPU 的處理負荷,在陣列重建階段負荷帶有潛在的問題,随之會出現硬碟故障。
硬體RAID控制器需要關注的地方包括安裝和維護的簡便性、管理軟體的功能及制造商開發RAID元件的經驗。RAID控制器必須支援最重要的RAID級别(0、1、4、5和10),并且能夠跨通道同時處理不同RAID級别的多個陣列。
RAID級别--驅動器是如何組織:RAID的各個層次在陣列驅動器之間以不同方式分布資料,并依具體情況進行優化。根據目标,計劃集中在當今是最常用的RAID級别。
1.RAID 0
此RAID級别使兩個或更多硬碟驅動器以某種方式結合,如圖3-1所示,資料(深色存儲區的A、B、C、D……)從上方被分割成便于處理的塊,這些塊以條帶形式分布于不同驅動器的RAID 0陣列。這樣,兩個或更多硬碟驅動器組合後,讀/寫(尤其是序列性通路讀寫)性能可以改善,但是由于其中不儲存備援資訊,對于一個,RAID 0陣列,如果一個硬碟驅動器發生故障,所有資料都會丢失。是以,RAID 0通常不能在安全性較高的伺服器上使用。
圖3-1 RAID 0原理示意圖
特點和優點:RAID 0中,資料被分成塊,每個塊都被寫到一個驅動器中。由于I/O負載由多個通道和驅動器分擔,是以I/O性能很高。當使用多個控制器且每個控制器上隻連接配接一個驅動器時,性能達到最高。沒有使用奇偶校驗,設計簡單、容易實作。
缺點:由于沒有備援,是以并不是真正的RAID。其中任一個磁盤發生故障,所有資料将丢失。
應用:通常用于工作站臨時資料并要求高傳輸速率,如圖像或視訊等領域。
2.RAID 1
RAID 1,又稱鏡像,即每個工作盤都有一個鏡像盤,如圖3-2所示,每次寫資料時必須同時寫入鏡像盤,讀資料時隻從工作盤讀出,一旦工作盤發生故障立即轉入鏡像盤,從鏡像盤中讀出資料。當更換故障盤後,資料可以重構、恢複。這種陣列可靠性很高,但其有效容量減小到總容量的一半以下時,兩個磁盤驅動器共享一個SCSI通道。 如果每個磁盤驅動器連接配接到一個獨立的 SCSI通道,稱之為"磁盤雙工"(附加安全性)。
圖3-2 RAID 1原理示意圖
其特點如下。
RAID 1的每一個磁盤都具有一個對應的鏡像盤,任何時候資料都同步鏡像,系統可以從一組鏡像盤中的任何一個磁盤讀取資料。
磁盤所能使用的空間隻有磁盤容量總和的一半,系統成本高。
隻要系統中任何一對鏡像盤中至少有一塊磁盤可以使用,在一半數量的硬碟出現問題時系統都可以正常運作。
出現硬碟故障的RAID系統不再可靠,應當及時更換損壞的硬碟,否則如果剩餘的鏡像盤也出現問題,那麼整個系統就會崩潰。
更換新盤後原有資料會需要很長時間同步鏡像,外界對資料的通路不會受到影響,隻是這時整個系統的性能有所下降。
RAID 1磁盤控制器的負載相當大,用多個磁盤控制器可以提高資料的安全性和可用性。
應用:通常用于對容錯要求極嚴的應用場合,如财政、金融等領域。
3.RAID 2
RAID 2又稱位交叉,它采用漢明碼做盤錯校驗,采用按位交叉存取,運用于大資料的讀寫,但備援資訊開銷太大(校驗盤為多個),已被淘汰。
4.RAID 3
RAID 3為單盤容錯并行傳輸,即采用Stripping技術将資料分塊,對這些塊進行異或校驗,校驗資料寫到最後一個硬碟上。它的特點是有一個盤為校驗盤,資料以位或位元組的方式存于各盤中(分散記錄在組内相同扇區的各個硬碟上)。當一個硬碟發生故障時,除故障盤外,寫操作将繼續對資料盤和校驗盤進行操作。而讀操作是通過對剩餘資料盤和校驗盤的異或計算重構故障盤上應有的資料來進行的。在RAID 3中,資料塊被拆分寫到資料盤中,在寫入時計算校驗和并将校驗和寫到校驗盤中,在讀取資料時同時讀取校驗和。
優點:并行I/O傳輸和單盤容錯,具有很高可靠性、非常高的讀取速率和非常高的寫入速率。驅動器失敗對資料吞吐沒什麼影響,ECC槽與資料盤的比率較低,意味着使用率較高。
缺點:每次讀寫要牽動整個組,每次隻能完成一次I/O,理想處理能力與單驅動器相同。控制器的設計非常複雜,要使用軟體元件非常困難,非常耗費資源。
推薦的應用:視訊制作和線上視訊流、圖像編輯、視訊編輯、印刷應用、任何需要大吞吐量的場合。
5.RAID 4
RAID 4與RAID 3相似,差別是RAID 3是按位或位元組交叉存取,而RAID 4是按塊(扇區)存取,如圖3-3所示,可以單獨地對某個盤進行操作,無須像RAID 3那樣,每一次I/O操作都要涉及全組,RAID 4隻需涉及組中兩塊硬碟(一塊資料盤,一塊校驗盤)即可,進而提高了小量資料I/O速度。
缺點:對于随機分散的小資料量I/O,固定的校驗盤又成為I/O瓶頸,例如:事務處理。做兩個很小的寫操作,一個寫在硬碟2(drive2)的條帶1(stripe1)上,一個寫在硬碟3(drive3)的條帶2(stripe2)上,它們都要往校驗盤上寫,是以會發生争用校驗盤的問題。
圖3-3 RAID 4原理示意圖
優點:可用性高,即使一個磁盤發生故障,邏輯硬碟上的資料依然可用;很好地利用了磁盤容量(N個磁盤的陣列,N-1用于資料存儲)。
缺點:必須計算備援資訊,這樣就限制了寫入性能。
應用:由于安裝容量與實際可用容量的比率較高,通常用于較大的資料存儲系統。
6.RAID 5
RAID 5是一種旋轉奇偶校驗獨立存取的陣列方式,它與RAID 3、RAID 4不同的是沒有固定的校驗盤,而是按某種規則分布在陣列所屬的硬碟上,是以在每塊硬碟上,既有資料資訊也有校驗資訊,如圖3-4所示。這一改變解決了争用校驗盤的問題,使得在同一組内并發進行多個寫操作。是以RAID 5既适用于大資料量的操作,也适用于各種事務處理,它是一種快速、大容量和容錯分布合理的磁盤陣列。可用容量為(n-1)/n的總磁盤容量(n為磁盤數)。
圖3-4 RAID 5原理示意圖
RAID 5把奇偶位資訊分散分布在硬碟子系統的所有硬碟上而不是使用專用的校驗盤0,這就改善了上述RAID 3中的奇偶盤瓶頸效應。圖3-4說明了RAID 5的一種配置,圖3-4中奇偶資訊散布在子系統的每個硬碟上。利用每個硬碟的一部分來組成校驗盤,寫入硬碟的奇偶位資訊将較均勻地分布在所有硬碟上。是以使用者可能把一個資料段寫在硬碟A,而将奇偶資訊寫在硬碟B,第二個使用者可能把資料寫在硬碟C,而奇偶資訊寫在硬碟D,進而使得RAID 5的性能得到提高。
這種方法将提高硬碟子系統的事務處理速度。所謂事務處理,是指處理不同使用者的多個硬碟I/O操作,由于可能有很多使用者迅速向硬碟寫入資料,有時幾乎是同時進行的,這種情況下,用分布式奇偶盤的方式比起用專用奇偶盤,瓶頸效應發生的可能性要小。
對硬碟操作來說,RAID 5的寫性能比不上直接硬碟分段(指沒有校驗資訊的RAID 0),因為産生或存儲奇偶碼需要一些額外操作。例如,在修改一個硬碟上的資料時,其他盤上對應的資料段(即使是無關的資料)也要讀入主機,以便産生必要的奇偶資訊。奇偶段産生後(這要花一些時間),要将更新的資料段和奇偶段寫入硬碟,這通常稱為讀-修改-寫政策。是以,雖然RAID 5比RAID 0優越,但就寫性能來說,RAID 5不如RAID 0。
優點:可用性高,即使一個磁盤發生故障,邏輯硬碟上的資料依然可用。很好地利用了磁盤容量(N個磁盤的陣列,N-1用于資料存儲)。
缺點:必須計算備援資訊,這樣就限制了寫入性能。
應用:檔案和程式伺服器,資料庫伺服器,Web、E-mail和新聞伺服器,企業内部網際網路
7.RAID 10
RAID 10綜合了RAID 0(性能)和RAID 1(資料安全)。與RAID 4和RAID 5不同,它不用計算奇偶校驗資訊。RAID 10磁盤陣列提供了良好的性能和資料安全性。類似于RAID 0,在較高序列負載條件下可以保證最佳性能。與RAID 1相同,50%的安裝容量被用作備援,如圖3-5所示。
優點:可用性高,即使一個磁盤發生故障,邏輯硬碟上的資料依然可用;良好的寫入性能。
缺點:需要偶數個磁盤,最少4個,隻有一半的磁盤容量可用。
應用:通常用于需要較高序列寫入性能的場合。
圖3-5 RAID 10原理示意圖
對RAID 0、RAID 1、RAID 5和RAID 10做了一個分析比較,見表3-1。
表3-1 RAID 0、RAID 1、RAID 5和RAID 10分析比較
類型
讀寫性能
安全性
磁盤使用率
成本
應用方面
RAID 0
最好(因并行性而提高)
最差(完全
無安全保障)
最高(100%)
最低
個人使用者
RAID 1
讀和單個磁盤
無差別,寫則要寫兩邊
最高(提供數
據的百分之百備份)
差(50%)
最高
适用于存放重要
資料,如伺服器和
資料庫存儲等領域
RAID 5
讀:RAID 5=RAID 0
(相近似的資料讀取速度)
寫:RAID 5<對單個
磁盤進行寫入操作
(多了一個奇偶校驗資訊寫入)
RAID 5<
RAID 5>
是一種存儲性能、
資料安全和存儲成本
兼顧的存儲解決方案
RAID 10
讀:RAID 10=RAID 0
寫:RAID 10=RAID 1
RAID 10=
RAID 1(50%)
集合了RAID 0、RAID
1的優點,但是空間上
由于使用鏡像,而不
是類似RAID 5的“奇
偶校驗資訊”,磁盤
使用率一樣是50%
硬碟性能名額與高效I/O
轉速:目前的伺服器硬碟一般都是15000 r/min。
平均延時:平均延時就是磁道上的某段資料轉到磁頭下面需要的時間,這直接由轉速決定。比如15000 r/min的硬碟,也就是每秒250 r,每轉一圈需要4ms,是以平均延時就是轉半圈的時間,等于2ms。
平均尋道時間:伺服器硬碟一般平均尋道時間是4ms。
持續傳輸速率:伺服器硬碟一般在80MB/s,也就是80KB/s(為了友善計算,機關都用ms)。
是以,讀取一次資料需要的時間等于定位時間(平均延時2ms+尋道4ms)+資料傳送時間(要讀的資料/80k×ms)。
不同I/O的資料傳輸效率見表3-2。
表3-2 I/O大小與資料傳輸效率
I/O大小
定位時間/ms
傳送時間/ms
資料傳輸效率/傳送時間/總時間
8KB
6
0.1
1.6%
128KB
1.6
21%
512KB
6.4
52%
1MB
12.8
68%
2MB
25.6
81%
準則:資料傳送時間 > 5*定位時間;換而言之,資料傳輸效率大于80%,否則大部分時間都用在"尋道定位"上顯然是不合算的。
(回想一下十年前的硬碟技術:容量大約是1.2GB;轉速大約在5400 r/min;持續傳輸速率大約在10bps;平均尋道時間大約在15ms)。
硬碟的技術進步帶給持續傳輸速率好處要遠大于平均尋道時間的好處,是以越進階的硬碟,I/O大小要設定的越大才好。
同步和異步I/O
通常,使用比較多的I/O模型是同步I/O(Synchronous I/O)。在這種模式下,當請求發出之後,應用程式就會阻塞,直到請求滿足為止。這種模式最大好處就是調用應用程式在等待 I/O 請求完成時不需要使用CPU資源。但是,對于一些強調高響應速度的程式(如DB)來說,希望這種等待時間越短越好,這時就可以考慮采用異步I/O(Asynchronous I/O)模式。異步I/O模式下,程序發出I/O請求後無須等待I/O完成,就可以去處理其他事情;I/O請求被放入一個隊列中,一旦I/O完成,系統會發出信号通知程序。
異步I/O可以使需要大量寫的Oracle程序(如DBWn程序)将I/O請求隊列化,以充分利用硬體的I/O帶寬,進而使它們能最大程度實作并行處理。異步I/O還可以使那些需要進行大量計算的操作(如排序)在它們發出I/O請求前預先從磁盤取出資料,以使I/O和計算并行處理。
确認作業系統已經設定支援異步I/O後,還需要設定Oracle初始化參數"DISK_ ASYNCH_I/O"為"true"以支援異步I/O。
負載均衡及條帶化
當多個程序同時通路一個磁盤時,會出現磁盤沖突。大多數磁盤系統都對通路次數(每秒的I/O操作)和資料傳輸率(每秒傳輸的資料量)有限制。當達到這些限制時,後面通路磁盤的程序就需要等待,這時就是所謂的磁盤沖突。
避免磁盤沖突是優化I/O性能的一個目标,這就需要将一個熱點磁盤上的I/O通路負載分擔到其他可用磁盤上,也就是I/O負載均衡。在一些成熟的磁盤負載均衡技術出現之前,DBA需要了解/預測各系統的I/O負載量,通過手工配置每個資料到不同存放位置以分擔I/O負載來達到負載均衡的目的。
條帶化技術就是将資料分成很多小部分并把它們分别存儲到不同磁盤上的不同檔案中去。這就能使多個程序同時通路資料的多個不同部分而不會造成磁盤沖突。很多作業系統、磁盤裝置供應商、各種第三方軟體都能做到條帶化。通過條帶化,DBA可以很輕松地做到I/O負載均衡,而無須去手工配置。
RAID的 I/O 特性
RAID在市場上的應用,已經不是新鮮的事兒了,很多人都大略了解RAID的基本觀念以及各個不同RAID LEVEL的區分。但是在實際應用時,很多使用者仍然無法很确切地選擇一個合适的RAID LEVEL,尤其是對于RAID 0+1(10),RAID 3,RAID 5之間的選擇取舍,更是舉棋不定。
針對RAID 0+1/10以及RAID 5的工作原理和特性,做一些分析和比較,以列出這些不同RAID階層所适合的應用,希望對各位能有原則性的幫助。
在使用資料條切﹝Data Stripping﹞ 的RAID 系統之中,對成員磁盤驅動器的存取方式,可分為以下兩種。
并行存取﹝Paralleled Access﹞。
獨立存取﹝Independent Access﹞。
RAID 2和RAID 3 是采取并行存取模式, RAID 0、RAID 4、RAID 5及RAID 6則是采用獨立存取模式。
1.并行存取模式
并行存取模式是把所有磁盤驅動器的主軸馬達做精密的控制,使每個磁盤的位置都彼此同步,然後對每一個磁盤驅動器作一個很短的I/O資料傳送,是以,從主機來的每一個I/O 指令,都平均分布到每一個磁盤驅動器。
為了達到并行存取的功能,RAID中的每一個磁盤驅動器,都必須具備幾乎完全相同的規格,轉速必須一樣、磁頭搜尋速度﹝Access Time﹞必須相同、緩沖區(Buffer)或緩存(Cache)的容量和存取速度要一緻、CPU處理指令的速度要相同、I/O信道(Channel)的速度也要一樣。總而言之,要利用并行存取模式,RAID中所有的成員磁盤驅動器,應該使用同一廠牌、相同型号的磁盤驅動器。
2.并行存取的基本工作原理
假設RAID中共有4部相同規格的磁盤驅動器,分别為磁盤驅動器A、B、C和D,再把時間軸略分為T0、T1、T2、T3和T4。
T0:RAID控制器将第一筆資料傳送到A的緩沖區(Buffer),磁盤驅動器B、C和D的Buffer都是空的,在等待中;
T1:RAID控制器将第二筆資料傳送到B的Buffer,A開始把Buffer中的資料寫入扇區,磁盤驅動器C和D的Buffer都是空的,在等待中;
T2:RAID控制器将第三筆資料傳送到C的Buffer,B開始把Buffer中的資料寫入扇區,A已經完成寫入動作,磁盤驅動器D和A的Buffer都是空的,在等待中;
T3:RAID控制器将第四筆資料傳送到D的Buffer,C開始把Buffer中的資料寫入扇區,B已經完成寫入動作,磁盤驅動器A和B的Buffer都是空的,在等待中;
T4:RAID控制器将第五筆資料傳送到A的Buffer,D開始把Buffer中的資料寫入扇區,C已經完成寫入動作,磁盤驅動器B和C的Buffer都是空的,在等待中。
如此循環,一直到把從主機來的這個I/O 指令處理完畢,RAID控制器才會接受處理下一個I/O 指令。重點是在任何一個磁盤驅動器準備好把資料寫入扇區時,該目的扇區必須剛好轉到磁頭下。同時RAID控制器每依次傳給一個磁盤驅動器的資料長度,也必須剛好,配合磁盤驅動器的轉速,否則一旦發生失誤,RAID性能就大打折扣。
3.并行存取RAID的最佳應用
并行存取RAID之架構,以其精細的馬達控制和分布資料傳輸,将數組中每一個磁盤驅動器的性能發揮到最大,同時充分利用Storage Bus的頻寬,是以特别适合應用在以下幾種大型、資料連續的檔案存取中。
影像、視訊檔案伺服器。
資料倉儲系統。
多媒體資料庫。
電子圖書館。
印前或底片輸出檔案伺服器。
其他大型且連續性檔案伺服器。
由于并行存取RAID架構之特性,RAID 控制器一次隻能處理一個I/O要求,無法執行重疊的多任務,是以非常不适合應用在I/O次數頻繁、資料随機存取、每筆資料傳輸量小的環境。同時,因為并行存取無法執行重疊的多任務,是以沒有辦法 "隐藏"磁盤驅動器搜尋(Seek)的時間,而且在每一個I/O的第一筆資料傳輸時,都要等待第一個磁盤驅動器的旋轉延遲(Rotational Latency),平均為旋轉半圈的時間,如果使用一萬轉的磁盤驅動器,平均就需要等待50
us。是以機械延遲時間,是并行存取架構的最大問題。
4.獨立存取模式
相對于并行存取模式,獨立存取模式并不對成員磁盤驅動器做同步轉動控制,其對每個磁盤驅動器的存取,都是獨立且沒有順序和時間間隔的限制,同時每筆傳輸的資料量都比較大。是以,獨立存取模式可以盡量地利用重疊多任務、Tagged Command Queuing等進階功能,來"隐藏"上述磁盤驅動器的機械時間延遲﹝Seek 和Rotational Latency﹞。
由于獨立存取模式可以做重疊多任務,而且可以同時處理來自多個主機不同的I/O請求(Requests),在多主機環境﹝如叢集(Clustering)﹞,更可發揮最大的性能。
5.獨立存取RAID的最佳應用
由于獨立存取模式可以同時接受多個I/O Requests,是以特别适合應用在以下幾種資料存取頻繁、每筆資料量較小的系統。
線上交易系統或電子商務應用。
多使用者資料庫。
ERM及MRP 系統。
小檔案之檔案伺服器。
一般常用的RAID階層,分别是RAID 0、RAID 1、RAID 3、RAID 4以及RAID 5,再加上二合一型RAID 0+1﹝或稱RAID 10﹞。把這些RAID級别的優、缺點做個比較,見表3-3。
表3-3 各種RAID優缺點比較
RAID級别
相對優點
相對缺點
存取速度最快
沒有容錯
完全容錯
成本高
RAID 3
寫入性能最好
沒有多任務功能
RAID 4
具備多任務及容錯功能
奇偶(Parity)磁盤驅
動器造成性能瓶頸
寫入時有開銷(overhead)
RAID 0+1/RAID 10
速度快、完全容錯
接下來,分别針對RAID 5以及RAID 0+1/RAID 10作深入的讨論。
RAID 10和RAID 01的比較:RAID 10是先做鏡像,然後再做條帶。RAID 01則是先做條帶,然後再做鏡像。
以6個盤為例,RAID 10就是先将盤分成3組鏡像,然後再對這3個RAID 1做條帶。RAID0 1則是先利用3塊盤做RAID 0,然後将另外3塊盤作為RAID 0的鏡像。
下面以4塊盤為例來介紹安全性方面的差别。
1.RAID 10的情況
這種情況中,假設當DISK 0損壞,在剩下的3塊盤中,隻有當DISK 1一個盤發生故障時,才會導緻整個RAID失效,可簡單計算故障率為1/3。
2.RAID 01的情況
這種情況下,仍然假設DISK 0損壞,這時左邊的條帶将無法讀取。在剩下的3塊盤中,隻要DISK 2、DISK 3兩個盤中任何一個損壞,都會導緻整個RAID失效,可簡單計算故障率為2/3。
是以RAID 10比RAID 01在安全性方面要強。
從資料存儲的邏輯位置來看,在正常的情況下,RAID 01和RAID 10是完全一樣的,而且每一個讀寫操作所産生的I/O數量也是一樣的,是以在讀寫性能上兩者沒什麼差別。而當有磁盤出現故障時,比如前面假設的DISK0損壞時,這兩種情況下,在讀的性能上面也将不同,RAID 10的讀性能将優于RAID 01。
磁盤陣列技術術語
硬碟鏡像(Disk Mirroring):硬碟鏡像最簡單的形式是一個主機控制器帶兩個互為鏡像的硬碟。資料同時寫入兩個硬碟,兩個硬碟上的資料完全相同,是以一個硬碟故障時,另一個硬碟可提供資料。
硬碟資料跨盤(Disk Spanning):利用這種技術,幾個硬碟看上去像是一個大硬碟,這個虛拟盤可以把資料跨盤存儲在不同的實體盤上,使用者不需關心哪個盤上存有他需要的資料。
硬碟資料分段(Disk Striping):資料分散存儲在幾個盤上。資料的第一段放在盤0,第2段放在盤1,依次類推,直至達到硬碟鍊中的最後一個盤,然後下一個邏輯段将放在硬碟0,再下一個邏輯段放在盤1,如此循環直至完成寫操作。
雙控(Duplexing):這裡指的是用兩個控制器來驅動一個硬碟子系統。一個控制器發生故障,另一個控制器馬上控制硬碟操作。此外,如果編寫恰當的控制器軟體,可實作不同的硬碟驅動器同時工作。
容錯(Fault Tolerant):具有容錯功能的機器有抗故障的能力。例如RAID 1鏡像系統是容錯的,一個鏡像盤出故障,硬碟子系統仍能正常工作。
主機控制器(Host Adapter):使主機和外設進行資料交換的控制部件(如SCSI控制器)。
熱修複(Hot Fix):指用一個硬碟熱備份來替換發生故障的硬碟。要注意故障盤并不是真正地被實體替換,而是用作熱備份的盤被加載上故障盤原來的資料,然後系統恢複工作。
熱補(Hot Patch):具有硬碟熱備份,可随時替換故障盤的系統。
熱備份(Hot Spare):與CPU系統電連接配接的硬碟,它能替換下系統中的故障盤。與冷備份的差別是,冷備份盤平時與機器不相連接配接,硬碟故障時才換下故障盤。
平均資料丢失時間(MTBDL-Mean Time Between Data Loss):發生資料丢失事件之間的平均時間。
平均無故障工作時間(MTBF-Mean Time Between Failure或MTIF):裝置平均無故障運作時間。
廉價備援磁盤陣列(RAID-Redundant Array of Inexpensive Drives):一種将多個廉價硬碟組合成快速、有容錯功能的硬碟子系統的技術。
系統重建(Reconstruction or Rebuild):一個硬碟發生故障後,從其他正确的硬碟資料和奇偶資訊恢複故障盤資料的過程。
恢複時間(Reconstruction Time):為故障盤重建資料所需要的時間。
單個大容量硬碟(SLED-Singe Expensive Drive):單個大容量磁盤驅動器。
傳輸速率(Transfer Rate):指在不同條件下存取資料的速度。
虛拟盤(Virtual Disk):與虛拟存儲器類似,虛拟盤是一個概念盤,使用者不必關心它的資料寫在哪個實體盤上。虛拟盤一般跨越幾個實體盤,但使用者看到的隻是一個盤。
熱備用(hot spare):當一個正在使用的磁盤發生故障後,一個空閑、加電并待機的磁盤将馬上代替此故障盤,此方法就是熱備用。熱備用磁盤上不存儲任何的使用者資料,最多可以有8個磁盤作為熱備用磁盤。一個熱備用磁盤可以專屬于一個單一的備援陣列或者可以是整個陣列熱備用磁盤池中的一部分。而在某個特定的陣列中,隻能有一個熱備用磁盤。當磁盤發生故障時,控制器的固件能自動地用熱備用磁盤代替故障磁盤,并通過算法把原來儲存在故障磁盤上的資料重建到熱備用磁盤上。資料隻能從帶有備援的邏輯驅動器上進行重建(除了RAID