紀錄工作經驗、相關知識,解決技術相關問題。

資訊相關

CMR 與 SMR 差異解析:傳統與疊瓦式硬碟物理結構及 NAS RAID 重建注意事項

CMR 與 SMR 差異解析:傳統與疊瓦式硬碟物理結構及 NAS RAID 重建注意事項 特色圖片

在採購 NAS 儲存設備或擴充陣列容量時,硬碟寫入技術選型至關重要。本文深入探討 CMR 與 SMR 的磁軌物理結構差異、寫入放大機制(Write Amplification),以及為什麼 SMR 硬碟在 RAID 陣列重建(Rebuild)與 ZFS 儲存池中容易發生大量逾時與掉盤問題。想了解 Western Digital 各顏色產品線的定位與基礎規格,可前往 〈快速查看 WD 硬碟差異:藍標、黑標、紅標、紫標、金標對照表〉 觀看。


一、 核心語法速查與規格對照

在 Linux 或 NAS 系統中,可以依序用下面兩個步驟,查詢硬碟的 zone 型號與機種型號:

  1. 用 lsblk 的 ZONED 欄位查詢區塊裝置的 zone 型號。none 代表一般區塊裝置,host-aware 或 host-managed 代表 Zoned Block Device(Host-Aware/Host-Managed SMR)。
lsblk -o NAME,MODEL,ZONED,SIZE /dev/sda
  1. 用 smartctl -i 讀出硬碟的機種型號(Device Model),再對照原廠公布的 CMR/SMR 清單。
sudo smartctl -i /dev/sda

補充說明:Linux 核心文件指出,Drive-Managed 的硬碟會被當成一般區塊裝置,zoned 也會回報 none。所以 none 不能證明是 CMR(WD 公布的 Red SMR 機種就屬於 Drive-Managed SMR),最終仍要以型號對照原廠清單為準。

CMR 與 SMR 技術規格與運作特性對照表

比較維度CMR(傳統磁記錄)SMR(疊瓦式磁記錄)
磁軌排列方式磁軌之間保有間隙(保護帶,Guard Band)磁軌如屋頂瓦片重疊(Shingled Tracks),省去磁軌間的間隙
修改資料可直接在原位覆寫不能原位修改,需重寫整個 Zone(一整段疊瓦磁軌)
隨機寫入效能不受疊瓦限制依韌體實作與負載而定,持續隨機寫入時可能大幅變慢
RAID / ZFS 建議WD 建議 ZFS 系統使用 CMR 機種(Red Plus、Red Pro)WD 指出 ZFS resilver 的大量持續隨機寫入會讓 DM-SMR 吃力,建議改用 CMR

二、 關鍵機制與跨情境細部拆解

1. CMR 與 SMR 物理結構與磁軌寫入機制

CMR(Conventional Magnetic Recording)採用傳統獨立磁軌設計,每個磁軌之間留有間隙(保護帶,Guard Band)。當資料需要更新時,可以直接在原位覆寫特定磁軌上的資料區塊,不會影響相鄰磁軌。

SMR(Shingled Magnetic Recording)為了提升單顆硬碟的容量,把磁軌如屋頂上的瓦片般交疊排列,省去磁軌之間的間隙。SMR 專用的寫入磁頭比寫入單一磁軌所需的寬度更寬,每寫完一條磁軌,磁頭只前進一部分,因此前一條磁軌只剩下一道窄帶仍可讀取。這意味著:

  • 寫入運作:新寫入的磁軌會壓在前一條磁軌上,所以資料必須依順序寫入。
  • 修改資料:被修改的磁區可能位在另一條磁軌的下方,不能直接原位修改,必須重寫整個 Zone(一整段疊瓦磁軌)。

Zone 的大小在硬碟出廠時就已固定,使用者通常無法更改。依 Zone 由誰管理,SMR 分成三種型號:Drive-Managed(DM-SMR)把限制藏在韌體內,對主機呈現與 CMR 相容的介面;Host-Aware 與 Host-Managed 則透過 ZBC(SCSI)或 ZAC(ATA)指令集,把 Zone 資訊交給主機端處理,詳見 Q6。

[CMR 磁軌結構]
Track 1:  |=== Write Area ===|  [Guard Band]
Track 2:  |=== Write Area ===|  [Guard Band]

[SMR 磁軌結構(瓦片疊加)]
Zone Block N:
Track 1:  |=== Overlapped Area ===|
Track 2:     |=== Overlapped Area ===|
Track 3:        |=== Overlapped Area ===|
CMR 與 SMR 物理結構與磁軌寫入機制示意圖

2. SMR 寫入放大(Write Amplification)與快取耗盡機制

Drive-Managed SMR 把「不能原位修改」的限制交給硬碟韌體處理,效能表現取決於韌體實作與工作負載。下圖以一種暫存區(Media Cache)設計示意:少量寫入先進入暫存,閒置時再整理到疊瓦區;圖中的數值僅為示意,實際行為依廠牌與型號而異。

SMR 暫存區耗盡後被迫重寫整個 Zone 的示意圖

當遇到持續且大量的隨機寫入情境時,可能出現以下現象:

  1. 暫存空間不足:韌體用來吸收隨機寫入的空間被用完(是否有、有多大,依機種而定)。
  2. 被迫重寫 Zone:韌體必須執行「讀取 Zone ➔ 修改 ➔ 完整重寫 Zone」,這段時間硬碟回應變慢。
  3. 寫入放大:實際寫到盤片的資料量遠大於主機要寫入的量,這個比值稱為寫入放大率(Write Amplification Factor, WAF)。

三、 常見問題與排錯(Q&A)

Q1:為什麼 SMR 硬碟在執行 RAID 陣列重建時會導致頻繁掉盤與逾時?

問題原因:
當 RAID 陣列(如 RAID 5、RAID 6)中有硬碟損壞,放入新硬碟執行陣列重建(Rebuild)時,RAID 控制器或作業系統(如 Linux mdadm)會向新硬碟發出高強度、長時段的持續寫入操作。

WD 在 2020 年的說明中指出,ZFS resilver(與重建類似)會產生大量持續的隨機寫入,這對 Drive-Managed SMR 是吃力的工作負載。硬碟忙於整理 Zone 時,單筆 I/O 的回應時間(Latency)可能拉長到遠超一般硬碟。

解法與解決思路:
Linux 核心的 SCSI 磁碟驅動(sd)預設指令逾時為 30 秒(原始碼中的 SD_TIMEOUT),SATA 硬碟也經由這一層存取。若硬碟長時間沒有回應,核心或 RAID 軟體可能判定該硬碟故障並將它移出陣列,導致重建失敗。

WD 的建議是:ZFS 與重建類的工作負載改用 CMR 機種(例如 WD Red Plus、WD Red Pro)。選購 NAS 硬碟時,先用型號對照原廠的 CMR/SMR 清單,避免買到 SMR 機種。

Q2:ZFS 為何不建議搭配 Drive-Managed SMR 硬碟?

問題原因:
ZFS 採用 Copy-on-Write(CoW)機制與複雜的 Transaction Group(TXG)寫入架構。所有更新動作均會產生新的資料區塊,導致非常頻繁且分散的隨機寫入操作。

當 ZFS 執行 resilver(儲存池重建)或 scrub(資料一致性檢查與修復)時:

  1. Drive-Managed SMR 硬碟可能來不及處理大量持續的隨機寫入,I/O 回應變得極慢。
  2. OpenZFS 文件說明,當裝置的 I/O 錯誤數超過可接受的程度,ZFS 會把該裝置標記為 FAULTED 以避免繼續使用。
  3. 若剩餘的備援不足以支撐,整個儲存池可能因此無法正常運作。

WD 在 2020 年的說明中,對 ZFS 的建議也是使用 CMR 機種(Red Plus、Red Pro)。

Q3:如何透過終端機指令快速辨識硬碟是 CMR 還是 SMR?

解決思路:
Linux 只能辨識 Host-Aware 與 Host-Managed 這兩種 Zoned 裝置;Drive-Managed SMR 不會被辨識出來。依序做下面兩步:

  1. 讀取核心回報的 zone 型號。
cat /sys/block/sda/queue/zoned
  1. 依輸出判讀:輸出 host-aware 或 host-managed 代表是 Zoned Block Device(SMR);輸出 none 代表核心把它當成一般區塊裝置,可能是 CMR,也可能是 Drive-Managed SMR。
  2. 輸出為 none 時,用下列指令取得機種型號,再對照 Q4 的原廠清單。
sudo smartctl -i /dev/sda

Q4:WD 與 Seagate 各系列硬碟中,哪些型號屬於隱性 SMR?

問題原因:
過去硬碟廠商曾在未明確標記的狀況下,將 SMR 技術導入部分家用與桌面級硬碟產品線,引發社群關注。WD 已在 2020 年公布 SMR 機種清單,Seagate 也在官網提供各系列依容量區分的 CMR/SMR 清單;採購前仍要以完整型號對照原廠最新清單。

原廠公布的現況(以下為 WD 2020 年 7 月更新的清單與 WD、Seagate 現行產品頁;型號與容量會隨新品改變):

  1. Western Digital (WD):
    • WD Red(標準紅標):3.5 吋 2TB 至 6TB 的 WD20EFAX、WD30EFAX、WD40EFAX、WD60EFAX 為 SMR,其餘容量為 CMR。
    • WD Red Plus / WD Red Pro:WD 支援文件指出兩者為 CMR,建議用於 ZFS 系統。
    • WD Blue(藍標):2020 年清單列出 3.5 吋 WD20EZAZ、WD60EZAZ,以及 2.5 吋 WD10SPZX、WD20SPZX 為 SMR;現行 3.5 吋桌機碟產品頁則標示 WD20EZBX(2TB)、WD30EZAZ(3TB)、WD40EZAZ(4TB)為 SMR,其餘列出型號為 CMR。
    • WD Purple(紫標)/ WD Gold(金標):2020 年的 SMR 清單(Red、Blue、Black)沒有列入這兩個系列,清單註明未列出的容量皆為 CMR。
  2. Seagate(希捷):
    • BarraCuda:3.5 吋的 4TB(如 ST4000DM004)與 8TB(如 ST8000DM004)為 SMR;12TB 以上為 CMR。
    • IronWolf / IronWolf Pro:Seagate 清單將現行 IronWolf(2–16TB)與 IronWolf Pro(2–24TB)列為 CMR,沒有 SMR 容量。
    • Exos:4–24TB 為 CMR,但 32TB、36TB、44TB 容量列為 SMR,不能一概而論。

Q5:SMR 的寫入放大(Write Amplification)會帶來什麼影響?

問題原因:
SMR 無法原位修改資料,修改一個磁區就必須重寫整個 Zone,因此主機寫入的資料量與盤片實際寫入的資料量會不同,這個比值就是寫入放大率(WAF)。

影響:
Drive-Managed SMR 的效能表現取決於韌體實作與工作負載,持續隨機寫入時最容易感受到變慢。寫入放大主要影響的是寫入效能;評估硬碟耐用度時,請參考原廠規格書的年工作負載(Workload Rate)等指標。

Q6:硬碟規格表中的 Device Managed SMR 與 Host Managed SMR 有何本質上的差異?

結構與架構解析:

  1. Device Managed SMR (DM-SMR):
    • 運作模式:由硬碟韌體處理疊瓦限制,對主機提供向下相容的介面。
    • 主機感知:不需要修改主機端軟體,可以直接取代 CMR 硬碟使用;Linux 會把它當成一般區塊裝置。
    • 缺點:效能取決於韌體實作;寫入負載超過韌體處理能力時,主機端無法主動干預。
  2. Host Aware SMR (HA-SMR):
    • 運作模式:使用 SCSI 的 ZBC(Zoned Block Commands)或 ATA 的 ZAC(Zoned ATA Commands)指令集,與一般區塊裝置相容,可接受任意磁區的隨機寫入,同時提供與 Host Managed 相同的 Zone 管理指令。
    • 主機感知:主機可以選擇依 Zone 規則順序寫入以取得較好的效能。
  3. Host Managed SMR (HM-SMR):
    • 運作模式:同樣使用 ZBC/ZAC,但只接受順序寫入。
    • 主機感知:主機端軟體必須自行遵守順序寫入規則,因此要使用支援 Zoned 裝置的軟體;例如 Linux 核心的 Btrfs 文件列有 Zoned mode。
    • 優點:行為可預期,由主機端控制 Zone。

參考資料與延伸閱讀

發佈留言