固態硬碟和機械硬碟的區別:伺服器選 SSD 還是 HDD
固態硬碟(SSD)用快閃記憶體晶片存資料,沒有機械部件,隨機讀寫比機械硬碟(HDD)快幾百到幾千倍;機械硬碟靠旋轉的碟片和移動的磁頭讀寫,順序讀寫尚可,隨機讀寫每秒只有一兩百次,但每 TB 價格低得多。伺服器上的通常做法是:資料庫、虛擬化和系統盤用 SSD,備份、歸檔和冷資料用 HDD。
固態硬碟是什麼意思?SSD(Solid State Drive)用 NAND 快閃記憶體晶片加主控儲存資料,讀寫靠電訊號完成,沒有轉動的碟片,也沒有移動的磁頭;機械硬碟(HDD)把資料記錄在高速旋轉的碟片上,每次讀寫都要等磁頭移到目標磁軌、等碟片把目標扇區轉過來。這個機械動作決定了兩者最大的區別:順序讀寫時,企業級機械硬碟能到兩三百 MB/s,和固態硬碟差兩倍到二三十倍;隨機讀寫時,機械硬碟每秒只能完成一兩百次操作,固態硬碟是幾萬到上百萬次,差幾百到幾千倍。所以伺服器選盤看的不是“哪個更快”,而是業務的讀寫模式:隨機小塊讀寫多的資料庫、虛擬化用固態硬碟,大塊順序讀寫、容量需求大的備份和歸檔用機械硬碟。
五個維度對照:效能、延遲、壽命、價格、故障
下表是各類盤的典型值,具體以型號規格書為準:
| 對比項 | 企業級機械硬碟(7200 轉) | SATA 固態硬碟 | NVMe 固態硬碟(PCIe 4.0) |
|---|---|---|---|
| 順序讀寫 | 約 200–280 MB/s,外圈快、內圈慢 | 約 500–550 MB/s,被 SATA 介面卡住 | 讀約 6–7 GB/s,寫因型號而異 |
| 4 KB 隨機讀 IOPS | 約 80–200 | 數萬到約 10 萬 | 數十萬到百萬以上 |
| 存取延遲 | 毫秒級,平均約 8–12 ms | 約 0.1 ms | 幾十到一百多微秒 |
| 壽命怎麼衡量 | 年工作負載,讀寫合計,企業盤常見約 550 TB/年 | DWPD 或 TBW,只計寫入 | 同左 |
| 單盤容量 | 常見 4–24 TB,大容量型號已超過 30 TB | 常見 0.48–7.68 TB | 常見 1.92–15.36 TB,QLC 型號已有 60 TB 以上 |
| 每 TB 價格 | 低 | 是大容量機械盤的數倍,隨快閃記憶體行情波動 | 與 SATA 固態接近或略高 |
| 典型故障方式 | 壞道逐步增多,磁頭、電機故障 | 寫入壽命耗盡,主控或韌體故障 | 同左,另外要注意過熱降速 |
| 怕什麼 | 震動、衝擊 | 長期斷電存放、高溫 | 同左 |
效能之外,兩類盤壞的方式也不一樣,維運上的應對隨之不同:
- 機械硬碟多是漸進式損壞。 壞道逐步增加,SMART 裡的重對映、待對映計數往往會提前給出訊號;盤壞了之後,專業恢復把資料讀出來的可能性也相對大。
- 固態硬碟的磨損可以預測,故障卻可能毫無預兆。 寫入壽命看 NVMe 的 Percentage Used 或 SATA 盤的磨損類屬性就能估算,但主控和韌體故障會讓盤整盤掉線。曾有廠商釋出公告,部分型號的企業級固態硬碟會在通電時間達到特定小時數後因韌體缺陷失效,需要升級韌體規避。同一批次、同時上線的固態盤磨損進度幾乎一致,放在同一個陣列裡有同時到壽的風險,可以錯開批次或上線時間。
- 固態硬碟不適合斷電長期存放。 JEDEC 的 JESD218 標準要求,寫入壽命耗盡時,企業級固態硬碟在 40°C 斷電狀態下至少儲存資料 3 個月,消費級為 30°C 下 1 年。新盤實際能儲存更久,但把固態硬碟拔下來放進櫃子當歸檔介質並不合適。
- 固態硬碟上刪除的資料更難找回。 檔案刪除後經 TRIM 通知,主控很快會擦除對應的快閃記憶體塊,誤刪恢復比機械硬碟難得多,備份一份都不能省。
機械硬碟讀寫速度為什麼差這麼多:一個算例
7200 轉的硬碟轉一圈要 60 ÷ 7200 ≈ 8.33 ms,目標扇區平均在半圈之外,平均旋轉等待約 4.17 ms;再加上磁頭移到目標磁軌的平均尋道時間,企業盤約 8 ms 上下。一次隨機讀寫約 12 ms,每秒能完成 1000 ÷ 12 ≈ 83 次。這是隻有一個請求在等待時的隨機 IOPS;有多個請求排隊時,硬碟會按磁頭位置重新排序執行,能提高到 150–200 次左右,再往上就很難了。
換算成吞吐量,差距一目瞭然(NVMe 一列為範例值):
| 讀寫方式 | 7200 轉機械硬碟 | NVMe 固態硬碟 |
|---|---|---|
| 1 MB 大塊順序讀 | 約 250 MB/s | 約 6,500 MB/s |
| 4 KB 隨機讀 | 150 IOPS × 4 KB ≈ 0.6 MB/s | 800,000 IOPS × 4 KB ≈ 3,200 MB/s |
同一塊機械硬碟,順序讀 250 MB/s,隨機讀不到 1 MB/s,相差幾百倍。資料庫的每次查詢讀的是散落在各處的索引頁和資料頁,是典型的隨機讀寫;幾十台虛擬機器共用一組盤,每台各自的順序讀寫混在一起,到了磁碟這一層也變成隨機讀寫。這兩類負載放在機械硬碟上,CPU 和記憶體再好也會卡在磁碟等待上,iostat -x 1 裡看到的是 %util 接近 100%、r_await 和 w_await 長時間在幾十毫秒。10000、15000 轉的 SAS 機械盤能把隨機 IOPS 提到兩三百,這類盤曾經專門用來跑資料庫,現在基本被固態硬碟取代。
固態硬碟壽命:按業務寫入量算 DWPD
快閃記憶體的每個儲存單元能承受的擦寫次數有限,所以固態硬碟的壽命用寫入量衡量,規格書給出兩個等價的指標:DWPD(質保期內每天可以寫滿全盤幾次)和 TBW(質保期內累計可以寫入的總量)。企業級固態硬碟大致分三檔:讀密集型約 1 DWPD 或更低,混合型約 3 DWPD,寫密集型 10 DWPD 及以上,以型號規格書為準。
選盤時要拿業務的實際寫入量去比,步驟是:
- 測出每天的寫入量。 在現有伺服器上用
iostat -d -m看開機以來的累計寫入(MB_wrtn 列),除以執行天數;或者對比相隔一天的兩次 SMART 寫入計數,得到每天寫入多少 TB。 - 加上陣列帶來的寫入放大。 RAID 1、RAID 10 每份資料要寫兩塊盤;RAID 5 的小塊隨機寫,每次還要額外寫一份校驗。
- 除以單盤容量,得到每塊盤需要的 DWPD,再和規格書對比,留出餘量。
兩個算例(假設數字):
- 一台 MySQL 伺服器每天寫入 1.2 TB,用 4 塊 3.84 TB 固態硬碟組 RAID 10。每份資料寫兩遍,總寫入 2.4 TB,平均分到 4 塊盤,每塊每天約 0.6 TB,摺合 0.6 ÷ 3.84 ≈ 0.16 DWPD。讀密集型的 1 DWPD 已經有約 6 倍餘量,沒必要買寫密集型。
- 一台訊息佇列節點,資料只保留 12 小時,每天寫入 4 TB,用 2 塊 3.84 TB 固態硬碟做 RAID 1。每塊盤每天都要寫 4 TB,摺合約 1.04 DWPD,超過了讀密集型的 1 DWPD,額定寫入量會在質保期結束前耗盡,要選 3 DWPD 的混合型。
機械硬碟沒有擦寫次數的限制,但有年工作負載額定值,讀和寫都計算在內。按企業盤常見的 550 TB/年算,一塊 20 TB 的機械盤每天可承受的讀寫量約為 550 ÷ 365 ÷ 20 ≈ 0.075 個全盤容量。也就是說,大容量機械硬碟適合“寫進去、偶爾讀”的資料;長期超過額定負載高強度讀寫,故障率會上升。這和固態硬碟的 DWPD 是兩種不同的約束,一個限制寫入總量,一個限制讀寫強度。
介面對實際效能的影響:SATA、SAS、NVMe
| 介面 | 對機械硬碟 | 對固態硬碟 | 適合 |
|---|---|---|---|
| SATA 6 Gb/s | 單盤順序讀寫不到 300 MB/s,用不滿介面 | 順序讀寫卡在約 550 MB/s,單佇列、深度 32 | 系統盤、讀多寫少的應用 |
| SAS 12 Gb/s | 速度上與 SATA 盤差別不大,優勢在雙連接埠和錯誤處理 | 單連接埠約 1.2 GB/s,雙連接埠可同時使用 | 雙控儲存、需要冗餘路徑的場合 |
| NVMe(PCIe 4.0 x4) | 不適用 | 介面頻寬約 7.9 GB/s,多佇列,高併發下延遲穩定 | 資料庫、虛擬化、高併發業務 |
結論有三條:
- 機械硬碟選 SATA 還是 SAS,不影響速度。 NL-SAS 盤和 SATA 企業盤的機械部分基本相同,選 SAS 是為了雙連接埠、更好的陣列相容和錯誤處理。
- 固態硬碟的介面就是天花板。 同樣的快閃記憶體,接在 SATA 上順序讀寫就只有 550 MB/s;幾塊 SATA 固態組 RAID 10 的隨機效能,可能還不如一塊 NVMe 盤。
- 中間環節也會限速。 多塊 NVMe 盤接在硬體 RAID 卡後面時,陣列卡的處理能力可能先成為瓶頸;PCIe 插槽或背板只給到 x2、或者降到較低的 PCIe 版本,頻寬也會減半。上線前用 fio 實測一遍。
先確認伺服器上裝的是什麼盤,再做測試:
lsblk -d -o NAME,ROTA,TRAN,SIZE,MODEL # ROTA 為 1 是機械盤,0 是固態盤;TRAN 顯示 sata、sas、nvme
# 4 KB 隨機讀,--readonly 保證不寫盤
fio --name=randread --filename=/dev/nvme0n1 --readonly --rw=randread --bs=4k --iodepth=32 --numjobs=4 \
--direct=1 --ioengine=libaio --runtime=60 --time_based --group_reporting
# 1 MB 順序讀
fio --name=seqread --filename=/dev/sdb --readonly --rw=read --bs=1M --iodepth=8 \
--direct=1 --ioengine=libaio --runtime=60 --time_based
結果看 IOPS、bw 和 clat 的百分位,99% 延遲比平均值更能反映業務的實際感受。硬體 RAID 卡後面的虛擬盤,ROTA 往往一律顯示為 1,要用陣列卡工具檢視成員盤的型別。寫入測試會覆蓋資料,只能在空盤上做。Windows 上用 Get-PhysicalDisk | Select-Object FriendlyName, MediaType, BusType, Size 檢視盤的型別和介面。
按場景選盤:資料庫、虛擬化、備份、日誌
| 場景 | 讀寫特點 | 建議 |
|---|---|---|
| 關係型資料庫(MySQL、PostgreSQL) | 隨機小塊讀寫,同步寫入要求低延遲 | 企業級 NVMe 或 SAS、SATA 固態,RAID 10 或主從複製;選帶掉電保護的型號,按寫入量核算 DWPD |
| 虛擬化宿主機、雲主機 | 多台虛擬機器的讀寫混在一起,整體呈隨機 | 固態硬碟;機械盤只放範本、ISO 和低負載虛擬機器 |
| 系統盤 | 讀多寫少,容量需求小 | 2 塊小容量 SATA 固態或 M.2 做 RAID 1 |
| 網站、應用伺服器 | 讀多寫少,熱點資料在記憶體裡 | SATA 固態足夠 |
| 備份、歸檔 | 大塊順序寫,偶爾讀,容量大 | 大容量機械硬碟,RAID 6 或糾刪碼;不用固態盤斷電長期存放 |
| 日誌 | 本機日誌是順序追加;集中日誌的檢索是隨機讀 | 只寫不查的日誌落機械盤;Elasticsearch 這類要檢索的熱資料放固態,過期資料轉到機械盤節點 |
| 影片點播、下載站 | 大檔案順序讀,容量需求大 | 機械硬碟為主,用固態或記憶體給熱點檔案做快取 |
| 分散式儲存(如 Ceph) | 資料量大,後設資料和預寫日誌寫入頻繁 | 資料放機械盤,BlueStore 的 DB、WAL 放 NVMe |
預算有限又需要容量時,可以混合使用:Linux 的 bcache、lvmcache,或者 ZFS 的 L2ARC 和 SLOG,用固態盤給機械盤陣列做快取。快取只對反覆存取的熱點資料有效,資料存取分散在全盤的業務,仍然要直接上固態硬碟。
在管理系統裡怎麼落地
機房裡同時跑著機械盤、SATA 固態和 NVMe,型號和批次一多,哪台伺服器裝的是什麼盤、哪一批固態盤是同時上線的,人工登記很容易出錯。在 Toplink DCIM 的機櫃與資產裡,硬體採集指令碼下發到伺服器後,硬碟等硬體資訊自動入庫,每次採集的歷史都會保留;硬碟作為部件按批次入庫,記錄型號、採購時間和去向。某一批固態盤接近寫入壽命,或者廠商釋出了韌體公告,可以按批次和登記的去向查出涉及哪些伺服器,提前安排升級或更換。
常見問題
伺服器用了固態硬碟還需要組 RAID 嗎?
需要。固態硬碟同樣會壞,主控故障時還可能整盤直接掉線;RAID 解決的是單盤故障時業務不中斷,和盤快不快無關。固態硬碟常用 RAID 1 或 RAID 10,RAID 5 的校驗寫入會放大寫入量、多消耗壽命,要按寫入量核算。RAID 也不能代替備份。
固態硬碟快滿了會變慢嗎?
會。快閃記憶體要先擦除整塊才能寫入新資料,剩餘空間越少,主控做垃圾回收時要搬運的資料越多,持續寫入效能和壽命都會下降。寫入頻繁的資料庫盤一般留出一部分空閒空間,或者選預留空間更多的混合型、寫密集型型號;系統裡定期執行 fstrim(多數發行版提供 fstrim.timer),讓主控知道哪些塊已經不用了。
機械硬碟 5400 轉、7200 轉、10000 轉差別大嗎?
差別主要在隨機存取。轉速越高,平均旋轉等待越短:5400 轉約 5.6 ms,7200 轉約 4.2 ms,10000 轉 3 ms,15000 轉 2 ms。順序讀寫更多取決於碟片的記錄密度,大容量 7200 轉盤的順序速度不一定比老款 10000 轉盤慢。伺服器裡的大容量盤基本是 7200 轉,10000、15000 轉的 SAS 盤已經逐漸被固態硬碟取代。