您好,登錄后才能下訂單哦!
這篇文章的內容主要圍繞如何在Linux上構建RAID10陣列進行講述,文章內容清晰易懂,條理清晰,非常適合新手學習,值得大家去閱讀。感興趣的朋友可以跟隨小編一起閱讀吧。希望大家通過這篇文章有所收獲!
RAID 10是一個冗余的備份陣列,由個Raid 1與Raid0的組合而成,繼承了Raid0的快速和Raid1的安全,實現高性能和高容錯性的磁盤I/O。
注意RAID 10的優缺點和其它分區方法(在不同大小的磁盤和文件系統上)的內容不在下面討論的范圍內。
如果你需要實現一種支持I/O密集操作(比如數據庫、電子郵件或web服務器)的存儲解決方案,RAID 10就是你需要的。來看看為什么這么說,請看下圖。
上圖中的文件由A、B、C、D、E和F六種塊組成,每一個RAID 1鏡像對(如鏡像1和2)在兩個磁盤上復制相同的塊。在這樣的配置下,寫操作性能會因為每個塊需要寫入兩次而下降,每個磁盤各一次;而讀操作與從單塊磁盤中讀取相比并未發生改變。不過這種配置的好處是除非一個鏡像中有超過一塊的磁盤故障,否則都能保持冗余以維持正常的磁盤I/O操作。
RAID 0的分區通過將數據劃分到不同的塊,然后執行同時將塊A寫入鏡像1、將塊B寫入鏡像2(以此類推)的并行操作以提高整體的讀寫性能。在另一方面,沒有任何一個鏡像包含構成主存的數據片的全部信息。這就意味著如果其中一個鏡像故障,那么整個RAID 0組件將無法正常工作,數據將遭受不可恢復的損失。
有兩種建立RAID 10陣列的可行方案:復雜法(一步完成)和嵌套法(先創建兩個或更多的RAID 1陣列,然后使用它們組成RAID 0)。本文會講述復雜法創建RAID 10陣列的過程,因為這種方法能夠使用偶數或奇數個磁盤去創建陣列,而且能以單個RAID設備的形式被管理,而嵌套法則恰恰相反(只允許偶數個磁盤,必須以嵌套設備的形式被管理,即分開管理RAID 1和RAID 0)。
假設你的機器已經安裝mdadm,并運行著相應的守護進程,細節參見這篇文章。也假設每個磁盤上已經劃分出一個主分區sd[bcdef]1 (LCTT 譯注:共計五塊磁盤,這里是從sdb – sdf)。使用命令:
ls -l /dev | grep sd[bcdef]
查看到的輸出應該如下所示:
然后使用下面的命令創建一個RAID 10陣列(LCTT 譯注:使用了四塊磁盤 bcde 創建):
# mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/sd[bcde]1 --spare-devices=1 /dev/sdf1
當陣列創建完畢后(最多花費幾分鐘),執行命令
# mdadm --detail /dev/md0
的輸出應如下所示:
在更進一步之前需要注意以下事項。
Used Dev Space表示陣列所使用的每一塊磁盤的容量。
Array Size表示陣列的整體大小。RAID 10陣列的大小通過(N*C)/M計算,其中N是活躍磁盤的數目,C是每個活躍磁盤的容量,M是每一個鏡像中磁盤的數目。在本文的情形下,這個值等于(4*8GiB)/2 = 16GiB。
Layout是整個數據布局的詳細信息。可能的布局數值如下所示。
n(默認選項):代表就近(near)拷貝。一個數據塊的多個拷貝在不同磁盤里有相同的偏移量。這種布局提供和RAID 0陣列相似的讀寫性能。
o代表偏移量(offset)拷貝。塊并不是在條帶里面復制的,而是整個條帶一起復制,但是循環會打亂,所以同一個分區中復制的塊會出現在不同的磁盤。因此,一個塊的后續拷貝會出現在下一個磁盤中,一個塊接著一個塊。為了在RAID 10陣列中使用這種布局,在創建陣列的命令中添加–layout=o2選項。
f代表遠端(far)拷貝(多個拷貝在不同的磁盤中具有不同的偏移量)。這種布局提供更好的讀性能但帶來更差的寫性能。因此,對于讀遠遠多于寫的系統來說是最好的選擇。為了在RAID 10陣列中使用這種布局,在創建陣列的命令中添加–layout=f2。
跟在布局選項n、f和o后面的數字代表所需的每一個數據塊的副本數目。默認值是2,但可以是2到陣列中磁盤數目之間的某個值。提供足夠的副本數目可以最小化單個磁盤上的I/O影響。
Chunk Size,參考Linux RAID wiki的說明,是寫入磁盤的最小數據單元。最佳的chunk大小取決于I/O操作的速率和相關的文件大小。對于大量的寫操作,通過設置相對較大的chunk可以得到更低的開銷,但對于主要存儲小文件的陣列來說更小的chunk性能更好。為了給RAID 10指定一個chunk大小,在創建陣列的命令中添加–chunk=desiredchunksize。
不幸的是,并沒有設置一個大小就能適合全局的策略來提高性能,但可以參考下面的一些方案。
文件系統:就整體而言,XFS據說是最好的,當然EXT4也是不錯的選擇。
最佳布局:遠端布局能提高讀性能,但會降低寫性能。
副本數目:更多的副本能最小化I/O影響,但更多的磁盤需要更大的花費。
硬件:在相同的環境下,SSD比傳統(機械旋轉)磁盤更能帶來出性能提升
下面的基準測試用于檢測RAID 10陣列(/dev/md0)的性能。
往磁盤中寫入大小為256MB的單個文件:
# dd if=/dev/zero of=/dev/md0 bs=256M count=1 oflag=dsync
寫入1000次512字節:
# dd if=/dev/zero of=/dev/md0 bs=512 count=1000 oflag=dsync
使用dsync標記,dd可以繞過文件系統緩存,在RAID陣列上執行同步寫。這個選項用于減少RAID性能測試中緩存的影響。
從陣列中拷貝256KiB*15000(3.9 GB)大小內容到/dev/null:
# dd if=/dev/md0 of=/dev/null bs=256K count=15000
Iozone是一款文件系統基準測試工具,用來測試各種磁盤I/O操作,包括隨機讀寫、順序讀寫和重讀重寫。它支持將結果導出為微軟的Excel或LibreOffice的Calc文件。
先保證Repoforge可用,然后輸入:
# yum install iozone
# aptitude install iozone3
下面的iozone命令會在RAID-10陣列中執行所有測試:
# iozone -Ra /dev/md0 -b /tmp/md0.xls
-R:往標準輸出生成兼容Excel的報告
-a:以全自動模式運行所有的測試,并測試各種記錄/文件大小。記錄大小范圍:4K-16M,文件大小范圍:64K-512M。
-b /tmp/md0.xls: 把測試結果存儲到一個指定的文件中
感謝你的閱讀,相信你對“如何在Linux上構建RAID10陣列”這一問題有一定的了解,快去動手實踐吧,如果想了解更多相關知識點,可以關注億速云網站!小編會繼續為大家帶來更好的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。