溫馨提示×

溫馨提示×

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

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

如何在Linux系統(tǒng)中設(shè)置RAID 10確保高性能和容錯的磁盤輸入/輸出

發(fā)布時間:2021-09-27 16:49:13 來源:億速云 閱讀:120 作者:iii 欄目:系統(tǒng)運維

本篇內(nèi)容介紹了“如何在Linux系統(tǒng)中設(shè)置RAID 10確保高性能和容錯的磁盤輸入/輸出”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

RAID 10(又叫RAID 1+0或鏡像條帶)陣列結(jié)合了RAID 0和RAID 1兩者的功能特性,從而提供了高性能、容錯的磁盤輸入/輸出操作。在RAID 0中,讀取/寫入操作跨多個驅(qū)動器并路執(zhí)行;在RAID 1中,一模一樣的數(shù)據(jù)寫入到兩個或多個驅(qū)動器上。

在本教程中,我將介紹如何使用5只相同的8 GiB磁盤,構(gòu)建一個軟件RAID 10陣列。雖然用來構(gòu)建RAID 10陣列的最大磁盤數(shù)量是4只(比如一組條帶化的兩個鏡像),但我們將增添一只額外的備用驅(qū)動器,以防其中一個主驅(qū)動器出現(xiàn)故障。我們還將介紹一些工具,你以后可以用來分析RAID陣列的性能。

請注意:全面深入地介紹RAID 10及其他分區(qū)方案(以及不同尺寸的驅(qū)動器和文件系統(tǒng))的所有優(yōu)缺點不在本文的探討范圍之內(nèi)。

RAID 10陣列是如何工作的?

如果你需要實施一種支持輸入/輸出密集型操作(比如數(shù)據(jù)庫、電子郵件和網(wǎng)站服務器)的存儲解決方案,RAID 10是正確的選擇。下面會介紹其中原委。不妨先看一看下圖。

鏡像1和鏡像2的條帶

如何在Linux系統(tǒng)中設(shè)置RAID 10確保高性能和容錯的磁盤輸入/輸出

設(shè)想一下某個文件由上圖中的數(shù)據(jù)塊A、B、C、D和E組成。每個RAID 1鏡像集(比如鏡像1或鏡像2)將數(shù)據(jù)塊復制到兩個設(shè)備中的每一個。由于這種配置,寫入性能有所下降,因為每個數(shù)據(jù)塊都要寫入兩次,每只磁盤各寫入一次,而相比從單只讀盤讀取數(shù)據(jù),讀取性能依然沒有變化。優(yōu)點在于,這種方案提供了冗余性,因為除非每個鏡像中的多只磁盤出現(xiàn)故障,否則可以維持正常的磁盤輸入/輸出操作。

RAID 0條帶的工作原理是,把數(shù)據(jù)劃分成多個數(shù)據(jù)塊,并將數(shù)據(jù)塊A寫入到鏡像1,同時將數(shù)據(jù)塊B寫入到鏡像2,依次類推,因而提高了總體的讀取和寫入性能。另一方面,沒有一個鏡像含有向主集提交的任何一部分數(shù)據(jù)的完整信息。這意味著,如果其中一個鏡像出現(xiàn)故障,整個RAID 0組件(以及因而RAID 10集)就無法操作,數(shù)據(jù)出現(xiàn)無法恢復的丟失。

構(gòu)建RAID 10陣列

RAID 10陣列有兩種可能的構(gòu)建方案:復雜方案(只要一步就能構(gòu)建),或嵌套方案(構(gòu)建方法是,先構(gòu)建兩個或多個RAID 1陣列,然后把它們用作RAID 0中的組件設(shè)備)。在本教程中,我們將介紹構(gòu)建復雜的RAID 10陣列,原因在于這種陣列讓我們可以使用數(shù)量為奇數(shù)或偶數(shù)的磁盤,并且可以作為單一RAID設(shè)備來加以管理,而不是介紹嵌套方案(只允許數(shù)量為偶數(shù)的驅(qū)動器,必須作為嵌套設(shè)備來加以管理, RAID 1和RAID 0分開來處理)。

假設(shè)你已安裝了mdadm,該后臺程序在你的系統(tǒng)上運行。想了解詳細內(nèi)容,請參閱這篇教程:http://xmodulo.com/create-software-raid1-array-mdadm-linux.html。另外假設(shè)已在每只磁盤上創(chuàng)建了主分區(qū)sd[bcdef]1。因而,ls -l /dev | grep sd[bcdef]的輸出應該是這樣:

如何在Linux系統(tǒng)中設(shè)置RAID 10確保高性能和容錯的磁盤輸入/輸出

接下來使用下面這個命令,構(gòu)建一個RAID 10陣列:

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

如何在Linux系統(tǒng)中設(shè)置RAID 10確保高性能和容錯的磁盤輸入/輸出

該陣列構(gòu)建完畢后(構(gòu)建過程應該用不了幾分鐘),# mdadm --detail /dev/md0的輸出應該是這樣:

如何在Linux系統(tǒng)中設(shè)置RAID 10確保高性能和容錯的磁盤輸入/輸出

在我們繼續(xù)下一步之前有幾點需要予以說明。

1. Used Dev Space表明了陣列所使用的每個成員設(shè)備的容量。

2. Array Size是指陣列的總大小。就RAID 10陣列而言,這相當于(N*C)/M,其中N是指活動設(shè)備的數(shù)量,C是指活動設(shè)備的容量,M則指每個鏡像中的設(shè)備數(shù)量。所以在這里,(N*C)/M相當于(4*8GiB)/2 = 16GiB。

3. Layout指數(shù)據(jù)布局的具體細節(jié)??赡艿牟季种等缦滤?。

•n(默認選項):意味著 near拷貝。一個數(shù)據(jù)塊的多個拷貝在不同的設(shè)備中處于相似的偏移(offset)。這種布局提供的讀取和寫入性能與RAID 0陣列的性能相似。

如何在Linux系統(tǒng)中設(shè)置RAID 10確保高性能和容錯的磁盤輸入/輸出

•o表明offset拷貝。不是數(shù)據(jù)段在條帶里面復制,而是整個條帶被復制,但由一個設(shè)備輪轉(zhuǎn),那樣重復數(shù)據(jù)塊分布在不同的設(shè)備上。因而,隨后的數(shù)據(jù)塊拷貝在下一個驅(qū)動器中,下移一個數(shù)據(jù)段。想讓你的RAID 10陣列使用這種布局,將--layout=o2添加到用來構(gòu)建陣列的命令。

如何在Linux系統(tǒng)中設(shè)置RAID 10確保高性能和容錯的磁盤輸入/輸出

•f 表明far拷貝(偏移全然不同的多個拷貝)。這種布局提供了較好的讀取性能,卻提供了較差的寫入性能。因而,這種方案最適合需要支持的讀取操作比寫入操作多得多的系統(tǒng)。想讓你的RAID 10陣列使用這種布局,將--layout=f2添加到用來構(gòu)建陣列的命令。

如何在Linux系統(tǒng)中設(shè)置RAID 10確保高性能和容錯的磁盤輸入/輸出

--layout選項中n、f和o后面所跟的數(shù)字表明了所需的每個數(shù)據(jù)塊的副本數(shù)量。默認值是2,但它可以是磁盤中設(shè)備數(shù)量的2倍數(shù)。通過提供數(shù)量足夠的副本,你就能盡量減少單個驅(qū)動器的輸入/輸出影響。

4. Chunk Size,按照Linux RAID維基,數(shù)據(jù)段大?。╟hunk size)指寫入到設(shè)備的最小單位的數(shù)據(jù)。最優(yōu)化的數(shù)據(jù)段大小取決于輸入/輸出操作的速度以及相關(guān)文件的大小。如果寫入大文件,只要確保數(shù)據(jù)段相當大,有望看到較低的開銷,而主要存儲小文件的陣列有望更加得益于較小的數(shù)據(jù)段。想為你的RAID 10陣列指定某個數(shù)據(jù)段大小,將--chunk=desired_chunk_size添加到用來構(gòu)建陣列的命令。

遺憾的是,沒有一應俱全的方法可以提升性能。下面是值得考慮的幾個指導準則。

•文件系統(tǒng):總的來說,XFS據(jù)說是最好的文件系統(tǒng),而EXT4仍然是個不錯的選擇。

•最佳化布局:far布局提升了讀取性能,但降低了寫入性能。

•副本數(shù)量:更多的副本盡量減小了輸入/輸出影響,但需要更多的磁盤時也增加了成本。

•硬件:固態(tài)硬盤比傳統(tǒng)的旋轉(zhuǎn)磁盤更有可能顯示性能提升的優(yōu)點(在同一環(huán)境下)。

使用DD測試RAID性能

下列基準測試可以用來核查我們的RAID 10陣列(/dev/md0)的性能。

1. 寫入操作

256MB大小的單個文件被寫入到設(shè)備上:

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

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

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

由于dsync標記,dd繞過系統(tǒng)文件緩存,執(zhí)行同步寫入到RAID陣列的操作。這個選項用來消除RAID性能測試期間的緩存效應。

2. 讀取操作

256KiB*15000(3.9 GB)從陣列拷貝到/dev/null:

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

使用Iozone測試RAID性能

Iozone(http://www.iozone.org)是一種文件系統(tǒng)基準測試工具,讓我們可以測量的眾多磁盤輸入/輸出操作,包括隨機讀取/寫入、順序讀取/寫入和重新讀取/重新寫入。它可以將結(jié)果導出到微軟Excel或LibreOffice Calc文件。

將Iozone安裝到CentOS/RHEL 7上

啟用Repoforge軟件庫,然后執(zhí)行下列命令:

# yum install iozone

將Iozone安裝到Debian 7上

# aptitude install iozone3

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

# iozone -Ra /dev/md0 -b /tmp/md0.xls

•-R:生成與Excel兼容的報告,并發(fā)送到標準輸出設(shè)備。

•-a:在全自動模式下運行iozone,涵蓋所有測試和可能的記錄/文件大小。記錄大?。?k至16M,文件大?。?4k至512M。

•-b /tmp/md0.xls:將測試結(jié)果存儲在某個指定的文件。

“如何在Linux系統(tǒng)中設(shè)置RAID 10確保高性能和容錯的磁盤輸入/輸出”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

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

AI