溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何在Linux上構(gòu)建RAID10陣列

發(fā)布時(shí)間:2022-01-24 13:58:24 來源:億速云 閱讀:137 作者:柒染 欄目:開發(fā)技術(shù)

這篇文章的內(nèi)容主要圍繞如何在Linux上構(gòu)建RAID10陣列進(jìn)行講述,文章內(nèi)容清晰易懂,條理清晰,非常適合新手學(xué)習(xí),值得大家去閱讀。感興趣的朋友可以跟隨小編一起閱讀吧。希望大家通過這篇文章有所收獲!

RAID 10是一個冗余的備份陣列,由個Raid 1與Raid0的組合而成,繼承了Raid0的快速和Raid1的安全,實(shí)現(xiàn)高性能和高容錯性的磁盤I/O。

注意RAID 10的優(yōu)缺點(diǎn)和其它分區(qū)方法(在不同大小的磁盤和文件系統(tǒng)上)的內(nèi)容不在下面討論的范圍內(nèi)。

Raid 10 陣列如何工作?

如果你需要實(shí)現(xiàn)一種支持I/O密集操作(比如數(shù)據(jù)庫、電子郵件或web服務(wù)器)的存儲解決方案,RAID 10就是你需要的。來看看為什么這么說,請看下圖。

如何在Linux上構(gòu)建RAID10陣列

上圖中的文件由A、B、C、D、E和F六種塊組成,每一個RAID 1鏡像對(如鏡像1和2)在兩個磁盤上復(fù)制相同的塊。在這樣的配置下,寫操作性能會因?yàn)槊總€塊需要寫入兩次而下降,每個磁盤各一次;而讀操作與從單塊磁盤中讀取相比并未發(fā)生改變。不過這種配置的好處是除非一個鏡像中有超過一塊的磁盤故障,否則都能保持冗余以維持正常的磁盤I/O操作。

RAID 0的分區(qū)通過將數(shù)據(jù)劃分到不同的塊,然后執(zhí)行同時(shí)將塊A寫入鏡像1、將塊B寫入鏡像2(以此類推)的并行操作以提高整體的讀寫性能。在另一方面,沒有任何一個鏡像包含構(gòu)成主存的數(shù)據(jù)片的全部信息。這就意味著如果其中一個鏡像故障,那么整個RAID 0組件將無法正常工作,數(shù)據(jù)將遭受不可恢復(fù)的損失。

建立RAID 10陣列

有兩種建立RAID 10陣列的可行方案:復(fù)雜法(一步完成)和嵌套法(先創(chuàng)建兩個或更多的RAID 1陣列,然后使用它們組成RAID 0)。本文會講述復(fù)雜法創(chuàng)建RAID 10陣列的過程,因?yàn)檫@種方法能夠使用偶數(shù)或奇數(shù)個磁盤去創(chuàng)建陣列,而且能以單個RAID設(shè)備的形式被管理,而嵌套法則恰恰相反(只允許偶數(shù)個磁盤,必須以嵌套設(shè)備的形式被管理,即分開管理RAID 1和RAID 0)。

假設(shè)你的機(jī)器已經(jīng)安裝mdadm,并運(yùn)行著相應(yīng)的守護(hù)進(jìn)程,細(xì)節(jié)參見這篇文章。也假設(shè)每個磁盤上已經(jīng)劃分出一個主分區(qū)sd[bcdef]1 (LCTT 譯注:共計(jì)五塊磁盤,這里是從sdb – sdf)。使用命令:

ls -l /dev | grep sd[bcdef]

查看到的輸出應(yīng)該如下所示:

如何在Linux上構(gòu)建RAID10陣列

然后使用下面的命令創(chuàng)建一個RAID 10陣列(LCTT 譯注:使用了四塊磁盤 bcde 創(chuàng)建):

 # mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/sd[bcde]1 --spare-devices=1 /dev/sdf1

如何在Linux上構(gòu)建RAID10陣列

當(dāng)陣列創(chuàng)建完畢后(最多花費(fèi)幾分鐘),執(zhí)行命令

# mdadm --detail /dev/md0

的輸出應(yīng)如下所示:

如何在Linux上構(gòu)建RAID10陣列

在更進(jìn)一步之前需要注意以下事項(xiàng)。

  1. Used Dev Space表示陣列所使用的每一塊磁盤的容量。

  2. Array Size表示陣列的整體大小。RAID 10陣列的大小通過(N*C)/M計(jì)算,其中N是活躍磁盤的數(shù)目,C是每個活躍磁盤的容量,M是每一個鏡像中磁盤的數(shù)目。在本文的情形下,這個值等于(4*8GiB)/2 = 16GiB。

  3. Layout是整個數(shù)據(jù)布局的詳細(xì)信息。可能的布局?jǐn)?shù)值如下所示。


  • n(默認(rèn)選項(xiàng)):代表就近(near)拷貝。一個數(shù)據(jù)塊的多個拷貝在不同磁盤里有相同的偏移量。這種布局提供和RAID 0陣列相似的讀寫性能。

如何在Linux上構(gòu)建RAID10陣列

  • o代表偏移量(offset)拷貝。塊并不是在條帶里面復(fù)制的,而是整個條帶一起復(fù)制,但是循環(huán)會打亂,所以同一個分區(qū)中復(fù)制的塊會出現(xiàn)在不同的磁盤。因此,一個塊的后續(xù)拷貝會出現(xiàn)在下一個磁盤中,一個塊接著一個塊。為了在RAID 10陣列中使用這種布局,在創(chuàng)建陣列的命令中添加–layout=o2選項(xiàng)。

如何在Linux上構(gòu)建RAID10陣列

  • f代表遠(yuǎn)端(far)拷貝(多個拷貝在不同的磁盤中具有不同的偏移量)。這種布局提供更好的讀性能但帶來更差的寫性能。因此,對于讀遠(yuǎn)遠(yuǎn)多于寫的系統(tǒng)來說是最好的選擇。為了在RAID 10陣列中使用這種布局,在創(chuàng)建陣列的命令中添加–layout=f2。

如何在Linux上構(gòu)建RAID10陣列

跟在布局選項(xiàng)n、f和o后面的數(shù)字代表所需的每一個數(shù)據(jù)塊的副本數(shù)目。默認(rèn)值是2,但可以是2到陣列中磁盤數(shù)目之間的某個值。提供足夠的副本數(shù)目可以最小化單個磁盤上的I/O影響。

  1. Chunk Size,參考Linux RAID wiki的說明,是寫入磁盤的最小數(shù)據(jù)單元。最佳的chunk大小取決于I/O操作的速率和相關(guān)的文件大小。對于大量的寫操作,通過設(shè)置相對較大的chunk可以得到更低的開銷,但對于主要存儲小文件的陣列來說更小的chunk性能更好。為了給RAID 10指定一個chunk大小,在創(chuàng)建陣列的命令中添加–chunk=desiredchunksize。

不幸的是,并沒有設(shè)置一個大小就能適合全局的策略來提高性能,但可以參考下面的一些方案。

  • 文件系統(tǒng):就整體而言,XFS據(jù)說是最好的,當(dāng)然EXT4也是不錯的選擇。

  • 最佳布局:遠(yuǎn)端布局能提高讀性能,但會降低寫性能。

  • 副本數(shù)目:更多的副本能最小化I/O影響,但更多的磁盤需要更大的花費(fèi)。

  • 硬件:在相同的環(huán)境下,SSD比傳統(tǒng)(機(jī)械旋轉(zhuǎn))磁盤更能帶來出性能提升

使用DD進(jìn)行RAID性能測試

下面的基準(zhǔn)測試用于檢測RAID 10陣列(/dev/md0)的性能。

1. 寫操作

往磁盤中寫入大小為256MB的單個文件:

# dd if=/dev/zero of=/dev/md0 bs=256M count=1 oflag=dsync

寫入1000次512字節(jié):

# dd if=/dev/zero of=/dev/md0 bs=512 count=1000 oflag=dsync

使用dsync標(biāo)記,dd可以繞過文件系統(tǒng)緩存,在RAID陣列上執(zhí)行同步寫。這個選項(xiàng)用于減少RAID性能測試中緩存的影響。

2. 讀操作

從陣列中拷貝256KiB*15000(3.9 GB)大小內(nèi)容到/dev/null:

 # dd if=/dev/md0 of=/dev/null bs=256K count=15000

使用Iozone進(jìn)行RAID性能測試

Iozone是一款文件系統(tǒng)基準(zhǔn)測試工具,用來測試各種磁盤I/O操作,包括隨機(jī)讀寫、順序讀寫和重讀重寫。它支持將結(jié)果導(dǎo)出為微軟的Excel或LibreOffice的Calc文件。

在CentOS/RHEL 7上安裝Iozone

先保證Repoforge可用,然后輸入:

# yum install iozone
在Debian 7上安裝Iozone
# aptitude install iozone3

下面的iozone命令會在RAID-10陣列中執(zhí)行所有測試:

# iozone -Ra /dev/md0 -b /tmp/md0.xls
  • -R:往標(biāo)準(zhǔn)輸出生成兼容Excel的報(bào)告

  • -a:以全自動模式運(yùn)行所有的測試,并測試各種記錄/文件大小。記錄大小范圍:4K-16M,文件大小范圍:64K-512M。

  • -b /tmp/md0.xls: 把測試結(jié)果存儲到一個指定的文件中

感謝你的閱讀,相信你對“如何在Linux上構(gòu)建RAID10陣列”這一問題有一定的了解,快去動手實(shí)踐吧,如果想了解更多相關(guān)知識點(diǎn),可以關(guān)注億速云網(wǎng)站!小編會繼續(xù)為大家?guī)砀玫奈恼拢?/p>

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI