伺服器維運

RAID 0 RAID 1 RAID 5 RAID 10 區別:一張表對比,按場景選

RAID 0、RAID 1、RAID 5、RAID 10 的區別核心在冗餘方式:RAID 0 只條帶,壞一塊全丟;RAID 1 兩塊盤互為映象;RAID 5 拿一塊盤的容量存校驗,容量划算但小塊寫和重建慢;RAID 10 先映象再條帶,容量減半,換來穩定的隨機寫。資料庫、虛擬化選 RAID 10,系統盤選 RAID 1,讀多寫少要容量選 RAID 5。

作者 頂聯產品團隊發布於 6 分鐘閱讀

RAID 0、RAID 1、RAID 5、RAID 10 的區別,歸根到底是資料怎麼冗餘。RAID 0 把資料切塊輪流寫到所有盤上,沒有任何冗餘;RAID 1 讓兩塊盤存完全相同的資料;RAID 5 在每行資料旁邊存一份奇偶校驗,壞一塊盤能算回來;RAID 10 先把盤兩兩做成映象,再把映象組做條帶。冗餘方式決定了其餘的一切:最少幾塊盤、能用多少容量、寫入要付出多少額外 IO、壞盤後還能不能用、重建要讀多少資料。

RAID 0、RAID 1、RAID 5、RAID 10 區別對比表

N 為盤數,C 為單盤容量:

對比項 RAID 0 RAID 1 RAID 5 RAID 10
原理 條帶:資料切塊,輪流寫到各盤 映象:兩塊盤存相同資料 條帶 + 分散式奇偶校驗 先兩兩映象,再條帶
最少盤數 2 2 3 4,且為偶數
可用容量 N × C C(2 塊盤時為一半) (N − 1) × C N / 2 × C
隨機讀 約 N 塊盤之和 約 2 塊盤之和 約 N 塊盤之和 約 N 塊盤之和
隨機寫(寫懲罰) 約 N 塊盤(1) 約 1 塊盤(2) 約 N / 4 塊盤(4) 約 N / 2 塊盤(2)
大塊順序寫 約 N 塊盤 約 1 塊盤 約 N − 1 塊盤 約 N / 2 塊盤
允許壞幾塊 0 1 1 至少 1,最多 N / 2(每個映象組各 1 塊)
壞 1 塊之後 整卷資料丟失 照常讀寫,失去冗餘 降級執行,讀壞盤上的資料要讀其餘所有盤再計算 只有那一組少了一份副本
重建要讀多少 無法重建 剩下的那 1 塊 其餘 N − 1 塊全部 映象夥伴 1 塊
重建難度 — 低,整盤複製 高,逐行計算,耗時長、對業務影響大 低,整盤複製
典型用途 臨時資料、可隨時重建的快取 系統盤、小型業務 讀多寫少、容量優先 資料庫、虛擬化

表裡最關鍵的一行是“隨機寫”。括號裡的數字叫寫懲罰,指業務寫一次,磁碟實際要做幾次 IO:

  • RAID 0 是 1:資料只寫一份。
  • RAID 1、RAID 10 是 2:同一份資料寫到映象的兩塊盤上。
  • RAID 5 是 4:只改一個資料塊時,要先讀舊資料、讀舊校驗,算出新校驗,再寫新資料、寫新校驗,共 2 次讀加 2 次寫。

隨機讀四種級別差不多,都能用上幾乎全部的盤;真正拉開差距的是隨機寫、壞盤後的表現和重建。

同樣 4 塊 8 TB 盤,四種做法各得到什麼

4 塊盤是四種級別都能做(RAID 1 做成兩組)的最小盤數,用它比較最直觀。假設每塊 7200 轉機械盤隨機讀寫約 150 IOPS、順序寫約 200 MB/s,以下是理論估算:

做法 可用容量 系統里約顯示 隨機讀 隨機寫 順序寫 能壞幾塊
RAID 0 32 TB 29.10 TiB 約 600 IOPS 約 600 IOPS 約 800 MB/s 0
RAID 5 24 TB 21.83 TiB 約 600 IOPS 約 150 IOPS 約 600 MB/s 1
RAID 10 16 TB 14.55 TiB 約 600 IOPS 約 300 IOPS 約 400 MB/s 1,壞在不同映象組時可到 2
兩組 RAID 1 兩個獨立的 8 TB 卷 各 7.28 TiB 每卷約 300 IOPS 每卷約 150 IOPS 每卷約 200 MB/s 每組 1

幾點解讀:

  1. RAID 5 比 RAID 10 多 8 TB,隨機寫卻只有一半。 帶掉電保護寫回快取的陣列卡能把突發寫入先接住,實際表現會好於這個估算;持續寫入超過快取能力後,還是回到這個比例。
  2. 兩組 RAID 1 和 RAID 10 容量相同,但它是兩個獨立的卷,單個卷的效能只有 RAID 10 的一半。業務能按目錄拆開(比如系統一組、資料一組)時可以這樣用,否則 RAID 10 更合適。
  3. RAID 0 的數字最好看,風險也隨盤數放大。 任何一塊盤壞,32 TB 全部丟失。假設單盤一年內損壞的機率是 2%,4 塊盤的 RAID 0 一年內丟資料的機率約為 1 − 0.98⁴ ≈ 7.8%,接近單盤的 4 倍。
  4. 只有 2 塊盤時只能二選一:RAID 0 得到 16 TB、約兩倍的速度、零容錯;RAID 1 得到 8 TB、單盤的寫速度、能壞 1 塊。除非資料可以隨時重新生成,否則選 RAID 1。

換成 SSD 後,單盤隨機 IOPS 高出兩三個數量級,多數業務的瓶頸從效能變成容量,RAID 5 的寫懲罰就不那麼顯眼了;但重建和降級的差別仍然存在。

壞一塊盤之後:容錯與重建差在哪

真正決定一種級別“好不好用”的,常常不是平時的效能,而是壞盤之後那幾個小時到幾天。仍以 4 塊 8 TB 盤為例:

級別 壞 1 塊後的業務 重建要讀的資料 重建完成前,再出什麼事會丟資料
RAID 0 整卷不可用 — 已經丟了,只能從備份恢復
RAID 1 基本正常,讀請求只能走剩下的一塊盤 8 TB 剩下的那塊盤再壞,或讀不出某些扇區
RAID 5 明顯變慢,讀壞盤上的資料要讀其餘 3 塊再計算 24 TB 其餘 3 塊中任何一塊再壞;任何一塊讀不出某個扇區,對應的資料塊就補不回來
RAID 10 隻影響壞盤所在的映象組 8 TB 只有壞盤的映象夥伴再出問題才會丟資料

重建時間在伺服器空閒時主要取決於新盤寫滿需要多久,幾種級別差別不大;業務繁忙時差別就出來了:RAID 1、RAID 10 的重建只佔用兩塊盤,RAID 5 每重建一行都要讀其餘所有盤,和業務搶的是整個陣列的 IO,陣列卡還會為了保業務給重建限速,於是拖得更久,而這段時間裡陣列沒有任何冗餘。

所以“RAID 5 能壞任意一塊,RAID 10 壞兩塊要看位置,RAID 5 更安全”的說法並不成立:兩者都只保證扛住 1 塊,而壞盤之後 RAID 5 的風險視窗更長、暴露面更大。

先按盤數縮小範圍

手裡有幾塊盤,往往已經替你排除了一半選項:

盤數 能做的級別 常見選擇
1 無冗餘 只放能重建的資料,並另做備份
2 RAID 0、RAID 1 RAID 1;只有臨時資料才用 RAID 0
3 RAID 0、RAID 5,或 RAID 1 加 1 塊熱備 要容量選 RAID 5;寫多、重視壞盤後的安全,選 RAID 1 加熱備
4 RAID 0、RAID 5、RAID 10 寫多選 RAID 10,讀多、要容量選 RAID 5
6–8 同上,還能拆成兩組 2 塊做 RAID 1 裝系統,其餘做 RAID 10 或 RAID 5 放資料
8 塊以上的大容量機械盤 同上 RAID 5 重建風險偏高,改用 RAID 10 或 RAID 6

最後一行超出了本文的四種級別,但值得記住:單盤容量越大、盤數越多,RAID 5 重建要讀的資料越多、時間越長,大容量機械盤陣列通常不再用 RAID 5。

再按業務選:資料庫、虛擬化、備份

資料庫:RAID 10

資料庫的寫入是小塊隨機寫,InnoDB 的資料頁預設 16 KB,事務日誌還要頻繁同步刷盤,對寫延遲非常敏感。RAID 5 每次小塊寫要 4 次 IO,延遲高且不穩定;壞盤降級時查詢變慢,往往直接表現為業務超時。

一台 8 盤位資料庫伺服器的典型配法:2 塊 480 GB SSD 做 RAID 1 裝系統,6 塊 1.92 TB SSD 做 RAID 10 放資料目錄,可用 5.76 TB。唯讀從庫、報表庫這類讀多寫少的例項,可以用 RAID 5 換容量;有人在可以隨時從主庫重建的從庫上用 RAID 0,前提是接受壞盤後要花幾個小時重新同步一份完整資料。

虛擬化宿主機:RAID 10,SSD 盤少時 RAID 5 也可以

一台宿主機上跑著幾十台虛擬機器,每台的順序讀寫疊加在一起,到了磁碟上就變成了隨機讀寫;一塊盤降級,所有虛擬機器一起變慢。所以本地儲存首選 RAID 10,例如 2 塊盤做 RAID 1 裝虛擬化平台,8 塊 SSD 做 RAID 10 存放虛擬機器磁碟。全快閃記憶體、盤數在 3–5 塊、寫入不重的小叢集,用 RAID 5 換容量也很常見。

用 VMware ESXi 時還有一條硬約束:單台主機的本地儲存要冗餘只能靠陣列卡,ESXi 本身不提供軟 RAID(vSAN 這類跨主機的分散式儲存是另一回事)。

備份伺服器:容量優先,RAID 5 起步

備份是大塊順序寫,正好是 RAID 5 不吃寫懲罰的場景(整行寫入時直接算出校驗,不用讀舊資料),而 RAID 10 拿一半容量換來的隨機寫優勢在這裡用不上。4 塊 8 TB 盤做 RAID 5 可用 24 TB;盤數到 8 塊以上或單盤更大時,換成 RAID 6。備份伺服器上不要用 RAID 0,它存的往往是最後一份副本。也別忘了,備份伺服器本身不應該是唯一的副本,重要資料還要再拷一份到另一個地方。

其他常見業務

  • 網站、檔案共享、下載站:讀多寫少,盤少時 RAID 1,容量需求大時 RAID 5。
  • 編譯快取、轉碼中間檔案、CDN 快取節點:資料丟了可以重新生成,用 RAID 0 或直接單盤,冗餘不如容量和速度重要。
  • 系統盤:兩塊盤做 RAID 1,和資料盤分開,以後重灌系統或換資料盤的級別時互不影響。

在管理系統裡怎麼落地

在 IDC 出租的伺服器上,RAID 級別通常在交付前就定好了,客戶拿到的是一塊虛擬盤,重灌系統不會改變陣列。客戶後來想換級別(比如從 RAID 5 改成 RAID 10),就不是重灌能解決的:陣列要刪除重建,盤上的資料會全部丟失。比較順的流程是三步:客戶先把資料備份到別處;維運在 IPMI 遠端管理 裡開啟走 BMC 通道的 VNC 控制檯,進陣列卡介面按新級別重建虛擬盤,不必到機房接顯示器;客戶再在 客戶自助端 自己選映象重灌系統、恢復資料。

Toplink DCIM 的自助端裡,重灌、救援這類高危操作要輸入手機上的 OTP 動態口令才執行,重灌進度在任務佇列裡可以看到,也可以取消。把“改 RAID 級別要先備份”寫進套餐說明,能省掉很多事後的糾紛。

常見問題

同一台伺服器能同時用 RAID 1 和 RAID 5 嗎?

能。陣列卡上可以有多個磁碟組,每組單獨選級別,常見做法是 2 塊盤做 RAID 1 裝系統,其餘盤做 RAID 5 或 RAID 10 放資料。一塊盤同一時間只能屬於一個磁碟組。

RAID 1 的讀速度是單盤的兩倍嗎?

併發讀多時,請求可以分攤到兩塊盤上,總吞吐接近兩倍;單個大檔案的順序讀,多數實現只從一塊盤讀,速度和單盤差不多。寫入則始終是單盤的速度,因為兩塊盤都要寫。

軟 RAID 的 RAID 10 和陣列卡上的一樣嗎?

容量和容錯的演算法一樣。Linux mdadm 的 raid10 是獨立實現,還支援奇數塊盤和 near、far、offset 幾種佈局,其中 far 佈局的順序讀接近 RAID 0,代價是寫入稍慢;陣列卡上的 RAID 10 通常就是經典的兩兩映象再條帶。

想看看在你的機房裡怎麼用?

從一次產品示範開始,梳理你的業務鏈路。

查看價格
服務熱線 400-112-2951

讓我們聊聊你的 IDC 業務

掃碼新增企業微信,預約產品示範或申請試用。

Toplink 企業微信二維碼

長按儲存或使用企業微信 / 微信掃描

也可致電
400-112-2951
Telegram
@TopLink88