Linux系統(tǒng)設(shè)置RAID 10,確保高性能和容錯(cuò)的磁盤輸入/輸出的圖文教程

RAID 10(又叫RAID 1+0或鏡像條帶)陣列結(jié)合了RAID 0和RAID 1兩者的功能特性,從而提供了高性能、容錯(cuò)的磁盤輸入/輸出操作。在RAID 0中,讀取/寫入操作跨多個(gè)驅(qū)動(dòng)器并路執(zhí)行;在RAID 1中,一模一樣的數(shù)據(jù)寫入到兩個(gè)或多個(gè)驅(qū)動(dòng)器上。
在本教程中,我將介紹如何使用5只相同的8 GiB磁盤,構(gòu)建一個(gè)軟件RAID 10陣列。雖然用來(lái)構(gòu)建RAID 10陣列的最大磁盤數(shù)量是4只(比如一組條帶化的兩個(gè)鏡像),但我們將增添一只額外的備用驅(qū)動(dòng)器,以防其中一個(gè)主驅(qū)動(dòng)器出現(xiàn)故障。我們還將介紹一些工具,你以后可以用來(lái)分析RAID陣列的性能。
請(qǐng)注意:全面深入地介紹RAID 10及其他分區(qū)方案(以及不同尺寸的驅(qū)動(dòng)器和文件系統(tǒng))的所有優(yōu)缺點(diǎn)不在本文的探討范圍之內(nèi)。
RAID 10陣列是如何工作的?
如果你需要實(shí)施一種支持輸入/輸出密集型操作(比如數(shù)據(jù)庫(kù)、電子郵件和網(wǎng)站服務(wù)器)的存儲(chǔ)解決方案,RAID 10是正確的選擇。下面會(huì)介紹其中原委。不妨先看一看下圖。
鏡像1和鏡像2的條帶
設(shè)想一下某個(gè)文件由上圖中的數(shù)據(jù)塊A、B、C、D和E組成。每個(gè)RAID 1鏡像集(比如鏡像1或鏡像2)將數(shù)據(jù)塊復(fù)制到兩個(gè)設(shè)備中的每一個(gè)。由于這種配置,寫入性能有所下降,因?yàn)槊總€(gè)數(shù)據(jù)塊都要寫入兩次,每只磁盤各寫入一次,而相比從單只讀盤讀取數(shù)據(jù),讀取性能依然沒(méi)有變化。優(yōu)點(diǎn)在于,這種方案提供了冗余性,因?yàn)槌敲總€(gè)鏡像中的多只磁盤出現(xiàn)故障,否則可以維持正常的磁盤輸入/輸出操作。
RAID 0條帶的工作原理是,把數(shù)據(jù)劃分成多個(gè)數(shù)據(jù)塊,并將數(shù)據(jù)塊A寫入到鏡像1,同時(shí)將數(shù)據(jù)塊B寫入到鏡像2,依次類推,因而提高了總體的讀取和寫入性能。另一方面,沒(méi)有一個(gè)鏡像含有向主集提交的任何一部分?jǐn)?shù)據(jù)的完整信息。這意味著,如果其中一個(gè)鏡像出現(xiàn)故障,整個(gè)RAID 0組件(以及因而RAID 10集)就無(wú)法操作,數(shù)據(jù)出現(xiàn)無(wú)法恢復(fù)的丟失。
構(gòu)建RAID 10陣列
RAID 10陣列有兩種可能的構(gòu)建方案:復(fù)雜方案(只要一步就能構(gòu)建),或嵌套方案(構(gòu)建方法是,先構(gòu)建兩個(gè)或多個(gè)RAID 1陣列,然后把它們用作RAID 0中的組件設(shè)備)。在本教程中,我們將介紹構(gòu)建復(fù)雜的RAID 10陣列,原因在于這種陣列讓我們可以使用數(shù)量為奇數(shù)或偶數(shù)的磁盤,并且可以作為單一RAID設(shè)備來(lái)加以管理,而不是介紹嵌套方案(只允許數(shù)量為偶數(shù)的驅(qū)動(dòng)器,必須作為嵌套設(shè)備來(lái)加以管理, RAID 1和RAID 0分開(kāi)來(lái)處理)。
假設(shè)你已安裝了mdadm,該后臺(tái)程序在你的系統(tǒng)上運(yùn)行。想了解詳細(xì)內(nèi)容,請(qǐng)參閱這篇教程:http://xmodulo.com/create-software-raid1-array-mdadm-linux.html。另外假設(shè)已在每只磁盤上創(chuàng)建了主分區(qū)sd[bcdef]1。因而,ls -l /dev | grep sd[bcdef]的輸出應(yīng)該是這樣:
接下來(lái)使用下面這個(gè)命令,構(gòu)建一個(gè)RAID 10陣列:
# mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/sd[bcde]1 --spare-devices=1 /dev/sdf1
該陣列構(gòu)建完畢后(構(gòu)建過(guò)程應(yīng)該用不了幾分鐘),# mdadm --detail /dev/md0的輸出應(yīng)該是這樣:
在我們繼續(xù)下一步之前有幾點(diǎn)需要予以說(shuō)明。
1. Used Dev Space表明了陣列所使用的每個(gè)成員設(shè)備的容量。
2. Array Size是指陣列的總大小。就RAID 10陣列而言,這相當(dāng)于(N*C)/M,其中N是指活動(dòng)設(shè)備的數(shù)量,C是指活動(dòng)設(shè)備的容量,M則指每個(gè)鏡像中的設(shè)備數(shù)量。所以在這里,(N*C)/M相當(dāng)于(4*8GiB)/2 = 16GiB。
3. Layout指數(shù)據(jù)布局的具體細(xì)節(jié)。可能的布局值如下所示。
•n(默認(rèn)選項(xiàng)):意味著 near拷貝。一個(gè)數(shù)據(jù)塊的多個(gè)拷貝在不同的設(shè)備中處于相似的偏移(offset)。這種布局提供的讀取和寫入性能與RAID 0陣列的性能相似。
•o表明offset拷貝。不是數(shù)據(jù)段在條帶里面復(fù)制,而是整個(gè)條帶被復(fù)制,但由一個(gè)設(shè)備輪轉(zhuǎn),那樣重復(fù)數(shù)據(jù)塊分布在不同的設(shè)備上。因而,隨后的數(shù)據(jù)塊拷貝在下一個(gè)驅(qū)動(dòng)器中,下移一個(gè)數(shù)據(jù)段。想讓你的RAID 10陣列使用這種布局,將--layout=o2添加到用來(lái)構(gòu)建陣列的命令。
•f 表明far拷貝(偏移全然不同的多個(gè)拷貝)。這種布局提供了較好的讀取性能,卻提供了較差的寫入性能。因而,這種方案最適合需要支持的讀取操作比寫入操作多得多的系統(tǒng)。想讓你的RAID 10陣列使用這種布局,將--layout=f2添加到用來(lái)構(gòu)建陣列的命令。
--layout選項(xiàng)中n、f和o后面所跟的數(shù)字表明了所需的每個(gè)數(shù)據(jù)塊的副本數(shù)量。默認(rèn)值是2,但它可以是磁盤中設(shè)備數(shù)量的2倍數(shù)。通過(guò)提供數(shù)量足夠的副本,你就能盡量減少單個(gè)驅(qū)動(dòng)器的輸入/輸出影響。
4. Chunk Size,按照Linux RAID維基,數(shù)據(jù)段大小(chunk size)指寫入到設(shè)備的最小單位的數(shù)據(jù)。最優(yōu)化的數(shù)據(jù)段大小取決于輸入/輸出操作的速度以及相關(guān)文件的大小。如果寫入大文件,只要確保數(shù)據(jù)段相當(dāng)大,有望看到較低的開(kāi)銷,而主要存儲(chǔ)小文件的陣列有望更加得益于較小的數(shù)據(jù)段。想為你的RAID 10陣列指定某個(gè)數(shù)據(jù)段大小,將--chunk=desired_chunk_size添加到用來(lái)構(gòu)建陣列的命令。
遺憾的是,沒(méi)有一應(yīng)俱全的方法可以提升性能。下面是值得考慮的幾個(gè)指導(dǎo)準(zhǔn)則。
•文件系統(tǒng):總的來(lái)說(shuō),XFS據(jù)說(shuō)是最好的文件系統(tǒng),而EXT4仍然是個(gè)不錯(cuò)的選擇。
•最佳化布局:far布局提升了讀取性能,但降低了寫入性能。
•副本數(shù)量:更多的副本盡量減小了輸入/輸出影響,但需要更多的磁盤時(shí)也增加了成本。
•硬件:固態(tài)硬盤比傳統(tǒng)的旋轉(zhuǎn)磁盤更有可能顯示性能提升的優(yōu)點(diǎn)(在同一環(huán)境下)。
使用DD測(cè)試RAID性能
下列基準(zhǔn)測(cè)試可以用來(lái)核查我們的RAID 10陣列(/dev/md0)的性能。
1. 寫入操作
256MB大小的單個(gè)文件被寫入到設(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標(biāo)記,dd繞過(guò)系統(tǒng)文件緩存,執(zhí)行同步寫入到RAID陣列的操作。這個(gè)選項(xiàng)用來(lái)消除RAID性能測(cè)試期間的緩存效應(yīng)。
2. 讀取操作
256KiB*15000(3.9 GB)從陣列拷貝到/dev/null:
# dd if=/dev/md0 of=/dev/null bs=256K count=15000
使用Iozone測(cè)試RAID性能
Iozone(http://www.iozone.org)是一種文件系統(tǒng)基準(zhǔn)測(cè)試工具,讓我們可以測(cè)量的眾多磁盤輸入/輸出操作,包括隨機(jī)讀取/寫入、順序讀取/寫入和重新讀取/重新寫入。它可以將結(jié)果導(dǎo)出到微軟Excel或LibreOffice Calc文件。
將Iozone安裝到CentOS/RHEL 7上
啟用Repoforge軟件庫(kù),然后執(zhí)行下列命令:
# yum install iozone
將Iozone安裝到Debian 7上
# aptitude install iozone3
下面這個(gè)iozone命令將在RAID-10陣列中執(zhí)行所有測(cè)試:
# iozone -Ra /dev/md0 -b /tmp/md0.xls
•-R:生成與Excel兼容的報(bào)告,并發(fā)送到標(biāo)準(zhǔn)輸出設(shè)備。
•-a:在全自動(dòng)模式下運(yùn)行iozone,涵蓋所有測(cè)試和可能的記錄/文件大小。記錄大?。?k至16M,文件大?。?4k至512M。
•-b /tmp/md0.xls:將測(cè)試結(jié)果存儲(chǔ)在某個(gè)指定的文件。
但愿本文有所幫助。如果您對(duì)于提升RAID 10的性能方面有何想法或高招,歡迎交流。謝謝閱讀,希望能幫到大家,請(qǐng)繼續(xù)關(guān)注腳本之家,我們會(huì)努力分享更多優(yōu)秀的文章。
英文:http://xmodulo.com/setup-raid10-linux.html
相關(guān)文章
Fedora Linux 42 穩(wěn)定版發(fā)布: 帶來(lái)大量新功能和軟件更新
Fedora 42昨日發(fā)布,這是 Red Hat 贊助開(kāi)發(fā)的杰出前沿 Linux 發(fā)行版的最新版,包含大量新功能和軟件更新,使其成為 2025 年上半年發(fā)布的一款出色的 Linux 操作系統(tǒng)之一,內(nèi)2025-04-16如何在Linux查看硬盤信息? 查看Linux硬盤大小類型和硬件信息的5種方法
使用Linux系統(tǒng)的過(guò)程中,查看和了解硬盤信息是非常重要的工作,尤其是對(duì)于系統(tǒng)管理員而言,那么在Linux系統(tǒng)中如何查看硬盤信息?以下是具體內(nèi)容介紹2025-03-12如何在 Linux 中查看 CPU 詳細(xì)信息? 3招輕松查看CPU型號(hào)、核心數(shù)和溫度
在日常運(yùn)維工作中,獲取 CPU 信息是系統(tǒng)運(yùn)維管理員常見(jiàn)的工作內(nèi)容,無(wú)論是為了性能調(diào)優(yōu)、硬件升級(jí)還是僅僅滿足好奇心2025-03-11什么是 Arch Linux? 獨(dú)樹(shù)一幟的Arch Linux發(fā)行版分析
Arch Linux是為簡(jiǎn)化,優(yōu)化,現(xiàn)代化,實(shí)用主義,用戶中心和多功能性而創(chuàng)建Linux發(fā)行版,究竟是什么讓 Arch 與眾不同?下面我們就來(lái)簡(jiǎn)要解讀2025-02-19如何在Linux環(huán)境下制作 Win11裝機(jī)U盤?
一直用的linux辦公,想要將筆記本電腦從 Linux 系統(tǒng)切換回 Windows 11,我們可以制作一個(gè)win11裝機(jī)u盤,詳細(xì)如下2025-02-17Rsnapshot怎么用? 基于Rsync的強(qiáng)大Linux備份工具使用指南
Rsnapshot 不僅可以備份本地文件,還能通過(guò) SSH 備份遠(yuǎn)程文件,接下來(lái)詳細(xì)介紹如何安裝、配置和使用 Rsnapshot,包括創(chuàng)建每小時(shí)、每天、每周和每月的本地備份,以及如何進(jìn)2025-02-06Linux Kernel 6.13發(fā)布:附更新內(nèi)容及新特性解讀
Linux 內(nèi)核 6.13 正式發(fā)布,新版本引入了惰性搶占支持,簡(jiǎn)化內(nèi)核搶占邏輯,通過(guò)減少與調(diào)度器相關(guān)的調(diào)用次數(shù),讓內(nèi)核在運(yùn)行時(shí)表現(xiàn)更優(yōu),從而提高效率2025-01-23五大特性引領(lǐng)創(chuàng)新! 深度操作系統(tǒng) deepin 25 Preview預(yù)覽版發(fā)布
今日,深度操作系統(tǒng)正式推出deepin 25 Preview版本,該版本集成了五大核心特性:磐石系統(tǒng)、全新DDE、Treeland窗口合成器、AI For OS以及Distrobox子系統(tǒng)2025-01-18Linux Mint Xia 22.1重磅發(fā)布: 重要更新一覽
Beta 版 Linux Mint“Xia” 22.1 發(fā)布,新版本基于 Ubuntu 24.04,內(nèi)核版本為 Linux 6.8,這次更新帶來(lái)了諸多優(yōu)化和改進(jìn),進(jìn)一步鞏固了 Mint 在 Linux 桌面操作系統(tǒng)領(lǐng)域的2025-01-16LinuxMint怎么安裝? Linux Mint22下載安裝圖文教程
Linux Mint22發(fā)布以后,有很多新功能,很多朋友想要下載并安裝,該怎么操作呢?下面我們就來(lái)看看詳細(xì)安裝指南2025-01-16