在採購 NAS 儲存設備或擴充陣列容量時,硬碟寫入技術選型至關重要。本文深入探討 CMR 與 SMR 的磁軌物理結構差異、寫入放大機制(Write Amplification),以及為什麼 SMR 硬碟在 RAID 陣列重建(Rebuild)與 ZFS 儲存池中容易發生大量逾時與掉盤問題。想了解 Western Digital 各顏色產品線的定位與基礎規格,可前往 〈快速查看 WD 硬碟差異:藍標、黑標、紅標、紫標、金標對照表〉 觀看。
一、 核心語法速查與規格對照
在 Linux 或 NAS 系統中,可以依序用下面兩個步驟,查詢硬碟的 zone 型號與機種型號:
- 用
lsblk的ZONED欄位查詢區塊裝置的 zone 型號。none代表一般區塊裝置,host-aware或host-managed代表 Zoned Block Device(Host-Aware/Host-Managed SMR)。
lsblk -o NAME,MODEL,ZONED,SIZE /dev/sda
- 用
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 ===|

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

當遇到持續且大量的隨機寫入情境時,可能出現以下現象:
- 暫存空間不足:韌體用來吸收隨機寫入的空間被用完(是否有、有多大,依機種而定)。
- 被迫重寫 Zone:韌體必須執行「讀取 Zone ➔ 修改 ➔ 完整重寫 Zone」,這段時間硬碟回應變慢。
- 寫入放大:實際寫到盤片的資料量遠大於主機要寫入的量,這個比值稱為寫入放大率(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(資料一致性檢查與修復)時:
- Drive-Managed SMR 硬碟可能來不及處理大量持續的隨機寫入,I/O 回應變得極慢。
- OpenZFS 文件說明,當裝置的 I/O 錯誤數超過可接受的程度,ZFS 會把該裝置標記為
FAULTED以避免繼續使用。 - 若剩餘的備援不足以支撐,整個儲存池可能因此無法正常運作。
WD 在 2020 年的說明中,對 ZFS 的建議也是使用 CMR 機種(Red Plus、Red Pro)。
Q3:如何透過終端機指令快速辨識硬碟是 CMR 還是 SMR?
解決思路:
Linux 只能辨識 Host-Aware 與 Host-Managed 這兩種 Zoned 裝置;Drive-Managed SMR 不會被辨識出來。依序做下面兩步:
- 讀取核心回報的 zone 型號。
cat /sys/block/sda/queue/zoned
- 依輸出判讀:輸出
host-aware或host-managed代表是 Zoned Block Device(SMR);輸出none代表核心把它當成一般區塊裝置,可能是 CMR,也可能是 Drive-Managed SMR。 - 輸出為
none時,用下列指令取得機種型號,再對照 Q4 的原廠清單。
sudo smartctl -i /dev/sda
Q4:WD 與 Seagate 各系列硬碟中,哪些型號屬於隱性 SMR?
問題原因:
過去硬碟廠商曾在未明確標記的狀況下,將 SMR 技術導入部分家用與桌面級硬碟產品線,引發社群關注。WD 已在 2020 年公布 SMR 機種清單,Seagate 也在官網提供各系列依容量區分的 CMR/SMR 清單;採購前仍要以完整型號對照原廠最新清單。
原廠公布的現況(以下為 WD 2020 年 7 月更新的清單與 WD、Seagate 現行產品頁;型號與容量會隨新品改變):
- 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。
- 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 有何本質上的差異?
結構與架構解析:
- Device Managed SMR (DM-SMR):
- 運作模式:由硬碟韌體處理疊瓦限制,對主機提供向下相容的介面。
- 主機感知:不需要修改主機端軟體,可以直接取代 CMR 硬碟使用;Linux 會把它當成一般區塊裝置。
- 缺點:效能取決於韌體實作;寫入負載超過韌體處理能力時,主機端無法主動干預。
- Host Aware SMR (HA-SMR):
- 運作模式:使用 SCSI 的 ZBC(Zoned Block Commands)或 ATA 的 ZAC(Zoned ATA Commands)指令集,與一般區塊裝置相容,可接受任意磁區的隨機寫入,同時提供與 Host Managed 相同的 Zone 管理指令。
- 主機感知:主機可以選擇依 Zone 規則順序寫入以取得較好的效能。
- Host Managed SMR (HM-SMR):
- 運作模式:同樣使用 ZBC/ZAC,但只接受順序寫入。
- 主機感知:主機端軟體必須自行遵守順序寫入規則,因此要使用支援 Zoned 裝置的軟體;例如 Linux 核心的 Btrfs 文件列有 Zoned mode。
- 優點:行為可預期,由主機端控制 Zone。
參考資料與延伸閱讀
- Zoned Storage – Shingled Magnetic Recording Hard Disks
- Zoned Storage – Zoned Storage Overview
- Western Digital – On WD Red NAS Drives
- Western Digital – WD Internal Client HDD Recording Technology(SMR Drives by Capacity,2020 年 7 月更新)
- Western Digital 支援 – WD Red Internal HDD SMR and CMR NAS Drive Information
- Western Digital – WD Blue 桌機硬碟產品頁
- Seagate – CMR/SMR 硬碟清單
- Linux Kernel Documentation – Queue sysfs files(zoned 屬性)
- OpenZFS – zpoolconcepts(7)
- Linux Kernel – drivers/scsi/sd.h(SD_TIMEOUT)
- 〈快速查看 WD 硬碟差異:藍標、黑標、紅標、紫標、金標對照表〉
發佈留言