天天看點

RAID5和RAID10,哪種RAID更适合你(上)

存儲是目前it産業發展的一大熱點,而raid技術是構造高性能、海量存儲的基礎技術,也是建構網絡存儲的基礎技術。專家認為,磁盤陣列的性能優勢得益于磁盤運作的并行性,提高裝置運作并行度可以提高磁盤的性能和資料安全性。

    20年來,raid 推出了一系列級别,包括raid 0、raid 1、raid 2、raid 3、raid4、raid 5,以及各種組合如 raid 0+1 等。其中最廣泛的包括raid5與raid10。但是一直以來,關于raid5與raid10的性能優劣的争端還是非常多的,甚至很多人包括很多公司都那拿出了測試資料。而這些測試資料複雜難懂互相沖突,更加讓使用者感到迷惑,不知道如何選擇。

    在這裡,我将就這兩種raid的内部運作原理來分析一下,看看我們在什麼情況下應當适合選哪一種raid方式。根據我的經驗與分析:象小io的資料庫類型操作,如erp等等應用,建議采用raid10,而大型檔案存儲,資料倉庫,如醫療pacs系統、視訊編輯系統則從空間利用的角度,建議采用raid5。下面請看詳細的性能對比:

    本文分為上下兩篇,上文側重分析兩種raid的内部運作原理,下文将根據不同的影響磁盤性能的因素來分析,raid方案對磁盤系統的影響,參考“raid5和raid10,哪種raid更适合你(下) ”

    為了友善對比,我這裡拿同樣多驅動器的磁盤來做對比,raid5選擇3d+1p的raid方案,raid10選擇2d+2d的raid方案,分别如圖:

RAID5和RAID10,哪種RAID更适合你(上)

    那麼,我們分析如下三個過程:讀,連續寫,随機寫,但是,在介紹這三個過程之前,我需要介紹另外一個磁盤陣列中的重要概念:cache。

磁盤讀寫速度的關鍵之一:cache

    cache技術最近幾年,在磁盤存儲技術上,發展的非常迅速,作為高端存儲,cache已經是整個存儲的核心所在,就是中低端存儲,也有很大的cache存在,包括最簡單的raid卡,一般都包含有幾十,甚至幾百兆的raid cache。

    cache的主要作用是什麼呢?作為緩存,cache的作用具體展現在讀與寫兩個不同的方面:作為寫,一般存儲陣列隻要求資料寫到cache就算完成了寫操作,當寫cache的資料積累到一定程度,陣列才把資料刷到磁盤,可以實作批量的寫入。是以,陣列的寫是非常快速的。至于cache資料的保護,一般都依賴于鏡相與電池(或者是ups)。

    cache在讀資料方面的作用一樣不可忽視,因為如果所需要讀取的資料能在cache中命中的話,将大大減少磁盤尋道所需要的時間。因為磁盤從開始尋道到找到資料,一般都在6ms以上,而這個時間,對于那些密集型i/o的應用可能不是太理想。但是,如果能在cache儲存的資料中命中,一般響應時間則可以縮短在1ms以内。

不要迷信存儲廠商的iops(每秒的io數)資料,他們可能全部在cache命中的基礎上做到的,但是實際上,你的cache命中率可能隻有10%。

    介紹完cache,我們就可以解釋raid5與raid10在不同的模式下,工作效率問題了,那麼我們來分别分析讀操作、連續寫和離散寫三方面的問題

讀操作方面的性能差異

    如我上文的介紹,磁盤陣列讀操作的關鍵更多的展現在cache的命中率上。是以,raid5和raid10在讀資料上面,他們基本是沒有差别的,除非是讀的資料能影響cache命中率,導緻命中率不一樣。

RAID5和RAID10,哪種RAID更适合你(上)

連續寫方面的性能差異

    連續寫的過程,一般表示寫入連續的大批量的資料,如媒體資料流,很大的檔案等等。連續寫操作大多數産生于醫療pacs系統、高教圖書館系統、視訊編輯系統等等應用環境下。

    根據我本人的經驗,在連續寫操作過程,如果有寫cache存在,并且算法沒有問題的話,raid5比raid10甚至會更好一些,雖然也許并沒有太大的差别。(這裡要假定存儲有一定大小足夠的寫cache,而且計算校驗的cpu不會出現瓶頸)。

    因為這個時候的raid校驗是在cache中完成,如4塊盤的raid5,可以先在記憶體中計算好校驗,同時寫入3個資料+1個校驗。而raid10隻能同時寫入2個資料+2個鏡相。

RAID5和RAID10,哪種RAID更适合你(上)

    如上圖所示,4塊盤的raid5可以在同時間寫入1、2、3到cache,并且在cache計算好校驗之後,我這裡假定是6(實際的校驗計算并不是這樣的,我這裡僅僅是假設),同時把三個資料寫到磁盤。而4塊盤的raid10不管cache是否存在,寫的時候,都是同時寫2個資料與2個鏡相。

    根據我前面對緩存原理的介紹,寫cache是可以緩存寫操作的,等到緩存寫資料積累到一定時期再寫到磁盤。但是,寫到磁盤陣列的過程是遲早也要發生的,是以raid5與raid10在連續寫的情況下,從緩存到磁盤的寫操作速度會有較小的差別。不過,如果不是連續性的強連續寫,隻要不達到磁盤的寫極限,差别并不是太大。

離散寫方面的性能差異

    這裡可能會較難了解,但是,這一部分也是最重要的部分。企業中的絕大部分資料庫應用,如erp系統等等在資料寫入的時候其實都是離散寫。

    例如oracle 資料庫每次寫一個資料塊的資料,如8k;由于每次寫入的量不是很大,而且寫入的次數非常頻繁,是以聯機日志看起來會像是連續寫。但是因為不保證能夠添滿raid5的一個條帶(保證每張盤都能寫入),是以很多時候更加偏向于離散寫入。

RAID5和RAID10,哪種RAID更适合你(上)

    我們從上圖看一下離散寫的時候,raid5與raid10工作方式有什麼不同。如上圖:我們假定要把一個數字2變成數字4,那麼對于raid5,實際發生了4次io:

    先讀出2與校驗6,可能發生讀命中

    然後在cache中計算新的校驗

    寫入新的數字4與新的校驗8

    如上圖我們可以看到:對于raid10,同樣的單個操作,最終raid10隻需要2個io,而raid5需要4個io。

    這裡我忽略了raid5在那兩個讀操作的時候,可能會發生讀命中操作的情況。也就是說,如果需要讀取的資料已經在cache中,可能是不需要4個io的。這也證明了cache對raid5 的重要性,不僅僅是計算校驗需要,而且對性能的提升尤為重要。我本人曾經測試過,在raid5的陣列中,如果關閉寫cache,raid5的性能将差很多倍。

    當然,我并不是說cache對raid10就不重要了,因為寫緩沖,讀命中等,都是提高速度的關鍵所在,不過的是,raid10對cache的依賴性沒有raid5那麼明顯而已。

    到這裡,大家應當也大緻明白了raid5與raid10的原理與差别了,一般來說,象小io的資料庫類型操作,建議采用raid10,而大型檔案存儲,資料倉庫,則從空間利用的角度,可以采用raid5。

    在本文下篇,我們将進一步分析影響磁盤性能的不同因素,并分析不同的raid方案對磁盤系統的影響,清參考“raid5和raid10,哪種raid更适合你(下) ”