SSD 一年掉了百分之四十:為什麼 Proxmox 讓磁碟耗損得更快

磁碟沒有故障,而是工作負載不同。伺服器磁碟不會像桌上型電腦的磁碟那樣閒置,而且每一次寫入都會一層一層地放大。該觀察的數字不是百分比,而是斜率。

AtlasPVE ·

本條目涵蓋以下問題

  • proxmox ssd 耗損
  • proxmox ssd 壽命
  • proxmox 可以用消費級 ssd 嗎
  • proxmox 磁碟耗損百分比
  • proxmox ssd 耗損很快

伺服器架好,一年過去,SSD 的壽命指標已降到百分之六十。第一個念頭是故障。但通常不是。

磁碟沒壞,是工作負載不同。

耗損是什麼

SSD 的記憶單元只能承受有限次數的寫入。磁碟以百分比回報這一點:還剩多少。百分比下降時,磁碟不會變慢、不會損壞,也不會出現任何徵兆。只有數字在往下掉。

這正是耗損之所以是一種隱伏指標的原因:等到發現時,往往已經接近路的盡頭。

伺服器磁碟不像桌上型電腦的磁碟那樣閒置

在桌上型電腦上,磁碟大部分時間都處於閒置。在虛擬化伺服器上,它從不閒置。

會寫入的不只是虛擬機器。伺服器本身的記錄、叢集狀態檔、指標記錄、客體自己的日誌,全都會持續產生小量寫入。單獨看來微不足道;加在一起就是一道不間斷的資料流。

沒人料到的倍數效應

真正的問題在這裡:從虛擬機器內部發出的一筆小寫入,落到實體磁碟上時會變得大得多。

因為路徑很長。客體的檔案系統會把寫入量向上取整到自己的區塊大小。虛擬磁碟層再取整一次。伺服器的檔案系統又取整一次。SSD 自身的內部管理機制還會再取整一次。每一層都說至少要這麼多,沒有一層會向下取整。

結果是:一筆 4 KB 的寫入,在實體層可能放大好幾倍。這不是故障,而是分層的自然代價。但如果沒有把它算進去,磁碟壽命就會遠低於預期。

這個倍數在兩種情況下還會更大:一邊複製一邊寫入的檔案系統(相同的資料被寫到新的位置,舊的則留在原處),以及要求確認每一筆寫入都已落到磁碟上的工作,典型例子是資料庫。

消費級磁碟與伺服器磁碟的真正差異

差異不在速度,而在兩件事。

寫入額度。為伺服器販售的磁碟,能承受多得多的寫入。兩顆相同容量的磁碟,耐用度可能相差好幾倍。

持續負載下的表現。消費級磁碟使用高速緩衝區,緩衝區填滿後就會明顯變慢。在桌上型電腦上看不出來,因為緩衝區有時間清空。在伺服器上則沒有這種時間。

還有一個不起眼但重要的差別:伺服器磁碟的設計,讓它即使在斷電時也能把緩衝區中的內容寫出。因此它能安全地提早回應已寫入。沒有這種保證的消費級磁碟,要不是回應得慢,就是得冒險。

不必購買新硬體也能做的事

把大量寫入的工作與開機磁碟分開。如果某台機器負責收集記錄、執行資料庫或持續寫入記錄,就把它的磁碟放到其他地方。

檢視置換空間。在記憶體充足的伺服器上,持續使用置換空間代表既慢又耗損。

關閉不必要的詳細記錄。一個設定後就被遺忘的除錯等級,會連續寫入好幾年。

該觀察的數字不是百分比,而是斜率

剩下百分之八十五,本身什麼也說明不了。同樣的百分比,在一顆磁碟上代表十年,在另一顆上可能只代表八個月。

正確的問題是:上個月掉了幾個百分點?如果每月掉一個百分點,還有好幾年。如果每月掉五個百分點,大約只剩一年半,現在就該開始規劃了。

Atlas 的做法

Atlas 讀取磁碟回報的剩餘壽命百分比,並根據最近三十天的斜率估算剩餘天數。因此它告知的不是百分比,而是照這個速度還剩多少天。

就本文主題而言,真正重要的是產品何時拒絕估算:

如果只有單一一筆量測值,它不會估算,而是說明資料不足以判斷趨勢。如果百分比維持不變或上升,它會說明短期內不會用完,而不是捏造一個天數。如果每天下降不到千分之一個百分點,它同樣不給數字,因為從這種斜率得出的估算毫無意義。

這是任何估算工具最難的部分:知道在資料撐不起估算時保持沉默。錯誤的天數比沒有天數更糟,因為計畫會根據它來擬定。

資料來源

Proxmox 官方文件。內容為英文,且在此主題上以官方文件為準。

相關條目

這項工作在 Atlas 中是什麼樣子?

前往產品頁面