企業級的
資料庫應用大多部署在
raid
磁碟陣列的伺服器上,這樣能提高磁碟的訪問效能,並能夠實現容錯/容災。
raid(冗餘磁碟陣列),簡單理解,就是拿一些廉價的硬碟來做成陣列。其目的無非是為了擴充套件儲存容量,提公升讀寫效能,實現資料冗餘(備份容災)。就像很早就有老外拿n台舊pc,做成乙個強大的「伺服器
集群」。raid技術誕生於2023年,由美國加州大學伯克利分校提出。
主流的大概可以分為幾個級別:raid 0,raid 1,raid 5,raid 10 。配置起來也不是很複雜,有興趣的朋友可以找相關的資料,自己動手實踐。
sql server 2005常用的有幾個級別0,1,5,10 下面我來簡單說說這個幾個級別的區別及其應用。
raid 0 簡稱
磁碟條帶化
,它可以
提供最好的讀寫效能
,如果你把兩塊磁碟做成了raid0,那麼在寫入資料的時候,就可以同時對a磁碟和b磁碟執行寫入操作。
這裡我必須說明的是:「可以同時...寫入操作」,並不是意味著將檔案的相同內容「在同一時間內完全寫入」a磁碟和b磁碟中。
打個比方:有乙個100m的檔案需要寫入磁碟中,假設單個磁碟的寫入速度是10m/s,那麼需要10秒鐘才能完成寫入工作。但如果在具有a、b兩塊磁碟的raid 0陣列環境中,(以秒/s為最小單位的)單時間內,可以將10m內容寫入a磁碟中,並同時將緊隨的10m內容寫入b磁碟中,這樣算起來,寫入速度變成了20m/s,只需要5秒鐘就能搞定了,而且每塊磁碟中只需儲存50m的檔案內容,不會造成硬碟儲存壓力。當然,上訴例子也許不恰當,也只是指的理論環境下,實際環境中會有很多其他因素,效率肯定不能達到。
毋庸置疑的是,這樣肯定是能提高讀寫效能的,但是這樣也帶來了乙個問題就是,如果其中的一部分資料丟失了,你的全部資料都不會找回來的,因為raid0沒有提供冗餘恢復資料的策略。所以raid0可以用在唯讀的資料庫資料表,或者是經過複製過來的資料庫上,如果你對資料丟失不敏感的話,也可以使用raid 0,總之這個level下是
高效能、無冗餘
raid 1 磁碟映象
它對讀沒有什麼影響
你將乙個100m的檔案寫入raid 1時,講內容寫入a磁碟的同時,也會將相同的內容寫入b磁碟中
。這樣一來,兩塊磁碟的內容是完全一致的(這就傳說中的」冗餘「,並不是什麼高深的東西)。本來只需要寫入1塊硬碟的,可是現在要寫入到兩塊硬碟去,效率肯定會變低。至於「讀」操作,raid 1環境下,讀取時候只使用到了一塊硬碟,所以和普通的環境下沒啥區別(如果兩塊硬碟都能夠同時工作,那麼還可以分攤壓力的)。只是當第乙個硬碟資料損壞或者掛掉了,就啟動第二塊硬碟。當然,兩塊硬碟都掛了,那就真的崩潰了。哈哈。值得一提的是,有些書或者文章上講,raid 1是在將第一塊硬碟寫入完成後,才將資料完整複製到第二塊磁碟中做為映象備份的這種說法有待考證,按我的理解,是同時複製寫入的。
raid 5 與raid1 不同之處就是多了奇偶校驗,所有的奇偶校驗的資訊會遍布各個磁碟,效能上要比raid1高些,但是一旦發生磁碟i/o失敗,就會造成效能急劇下降,同時這種方法也在raid0 與raid1間折了中,是比較通用的做法。 用簡單的語言來表示,至少使用3塊硬碟(也可以更多)組建raid5陣列,當有資料寫入硬碟的時候,按照1塊硬碟的方式就是直接寫入這塊硬碟的,如果是raid5的話這次資料寫入會分根據演算法分成3部分,然後寫入這3塊硬碟,寫入的同時還會在這3塊硬碟上寫入校驗資訊,當讀取寫入的資料的時候會分別從3塊硬碟上讀取資料內容,再通過檢驗資訊進行校驗。當其中有1塊硬碟出現損壞的時候,就從另外2塊硬碟上
儲存的資料可以計算出第3塊硬碟的資料內容。也就是說raid5這種儲存方式只允許有一塊硬碟出現故障,出現故障時需要盡快更換。當更換故障硬碟後,在故障期間寫入的資料會進行重新校驗。 如果在未解決故障又壞1塊,那就是災難性的了。
raid 10 (也叫raid 0+1 )就是raid0 與 raid1的組合,它提供了
高效能,高可用性
,效能上要比raid5好,特別適合大量寫入的應用程式,但是就是成本比較高無論是多少塊磁碟你都是將損失一半的磁碟儲存。按照我的理解,至少需要4塊硬碟才能完成,a和b做資料分割,分別儲存一半的資料,c和d分別對應做a和b的映象備份。這樣一來,可真是完美了,也是我理想中的最佳狀態。也不需要raid 5的奇偶校驗。很顯然,這樣子成本也會高一些。
當然,這就和我們講架構時候經常說的「負載均衡、高可用集群,橫向擴充套件,縱向擴充套件」的目的其實很類似。通俗點來講,都是為了實現不間斷的工作,保證資料完整性和高可用性,而且最重要的,還要能分攤壓力。突然讓我想起了上初中物理時候學的「串聯和併聯」,有點像哦。順便講個丟人的笑話,也是我的真實經歷,n年前,某日和某大師在一起抽菸、吹牛、瞎侃,大師瞎侃說」google光是在中國目前有xx臺伺服器集群......「,當時我並不理解什麼叫「集群」,第一反應就是這麼多台伺服器之間到底是「串聯「的還是」併聯」的關係呢?
說到最後,可能某些朋友已經不耐煩了。好像本文只是在不停的解釋常見raid的和其好處,而並沒提及到sqlserver或者windows儲存相關的內容。大家都知道,i/o往往是資料庫效能最大的瓶頸, 有時候其實很簡單,只需要將sqlserver所在的db server上部署合適的raid,並將資料庫檔案分布到不同的磁碟上,就能很大程度的提公升資料庫的效能,真可謂是立竿見影。有興趣的朋友,不妨自己實際動手實踐一下,網上這方面的資料也很多。其實raid成本並不高(和dell、emc等等那些高階的儲存比起來真是「廉價」)。
甚至自己在家裡pc機上,也可以通過陣列卡的方式來實現(效果可能不太好)。目前一般的pc伺服器,內建都會有raid支援,在pc伺服器領域使用非常廣泛。
RAID在企業伺服器中的應用(RAID幾種級別)
企業級的資料庫應用大多部署在raid磁碟陣列的伺服器上,這樣能提高磁碟的訪問效能,並能夠實現容錯 容災。raid 冗餘磁碟陣列 簡單理解,就是拿一些廉價的硬碟來做成陣列。其目的無非是為了擴充套件儲存容量,提公升讀寫效能,實現資料冗餘 備份容災 就像很早就有老外拿n台舊pc,做成乙個強大的 伺服器集群...
BigData在伺服器運營中的應用
大資料的處理 下面講講我們是怎麼收集和儲存伺服器運營資料的,給我三分鐘,給你乙個帥氣又有營養的答案!對於海量伺服器的管理,我們建立了一套功能強大的運營分析系統,從伺服器的帶內和帶外收集了全面的靜態屬性和動態執行資料,對伺服器的每個關節進行的全方位的資料採集和監控。猶如我們平時體檢,把心 肝 脾 肺 ...
伺服器中常見的RAID
standalone 最普遍的單磁碟儲存方式。cluster 集群儲存是通過將資料分布到集群中各節點的儲存方式,提供單一的使用介面與介面,使使用者可以方便地對所有資料進行統一使用與管理。hot swap 使用者可以再不關閉系統,不切斷電源的情況下取出和更換硬碟,提高系統的恢復能力 拓展性和靈活性。r...