✦ 擴充伺服器記憶體容量備忘錄

以為記憶體買回來,直接插上去就可以用了。其實,不然!!

◆購買前先確認規格
  • 記憶體品牌:不影響相容性,只要主機板支援就行。
  • 記憶體代數與速度:DDR4 3200 與主機板規格需相符。
  • 擴充容量:16GB8GBx2 → 64GB32GBx2
  • 延遲 (Latency):CL22 屬於 ECC 記憶體中偏高的延遲,但對伺服器一般用途影響不大。
  • 伺服器 ECC:能自動檢測並修正部分記憶體錯誤。
  • 非緩衝 DIMM (UDIMM):確定主板支援 UDIMM。勿選錯為 RDIMM。
  • 型號:可從型號來確認規格。
◆買回來之後

從硬體角度來說,買回來的記憶體插上去,系統會自動偵測並使用,所以基本上不用額外設定就能用。不過若能再進行一些細部的設定,針對 ZFS 與 ARC 快取、swapfile 的效能優化會更好。

  • RAM 本身:插上去就能用,系統會自動把容量加上去。
  • ZFS ARC:預設會自動調整,但如果想充分利用 64GB RAM,可以設定 zfs_arc_max / zfs_arc_minff。可讓 ZFS + swap 運作更穩定、高效,但非剛性需求。
◆開始動手拆換記憶體

以下分為「更換前 → 更換中 → 更換後」三個階段的檢查清單。

◆關機 (更換) 前 (軟體 / 系統面)
  • 正常關機 (不要硬關)。
    • shutdown -p now:等主機完全斷電、風扇停止再動作。
  • 記下目前狀態 (可選,但建議)
    • 如果想對照更換前後,可以先看一次:
      • uptime
      • sysctl hw.physmem
  • 之後換好再看一次,確認容量正確。
◆實體更換時 (最重要)
  • 完全斷電 + 放電 (很關鍵):
    • 拔掉 電源線插頭。
    • 等待 5~10 分鐘。
    • 在「已拔電源」狀態下,按一下電源鍵。
      • 目的是讓主機板殘餘電荷完全釋放,避免靜電或瞬間電流傷到 RAM。
      • 這一步很多人會省略,但對 ECC / 伺服器主機板非常值得。
  • 防靜電基本原則:
    • 手先摸一下機殼金屬。
    • 不要在地毯上操作。
    • 拿 RAM 只碰邊緣,不摸金手指。
  • 插槽與順序 (很重要):
    • 兩條 32GB 一定要插在「雙通道對應插槽」。
    • 主機板通常標:
      • A1 / B1(優先)。
      • 或 DIMM1 / DIMM2。
    • 如果不確定插哪:
      • 插 顏色相同的一組。
      • 或查主機板說明書的「2-DIMM Configuration」。
  • 插緊確認:
    • 插到底。
    • 兩側卡榫自動扣。
    • 若卡榫沒扣好=沒插好。
◆開機 (更換) 後 (驗證階段)
  • 第一次開機請「耐心等」:
    • 換大容量 ECC RAM。
    • 第一次開機 POST 可能會變慢 (1~3 分鐘)。
    • 有些主機板會做記憶體 Training首次聽到記憶體訓練!?
    • 不要以為當機就重開。
  • BIOS / IPMI 檢查:
    • 進 BIOS 看:
      • 總容量是否為 65,536 MB / 64GB。
      • ECC 是否 Enabled。
      • 記憶體頻率是否 DDR4-3200。
    • 不需要手動調整,確認即可。
  • FreeBSD 內檢查 (重點):
    • 開機進系統後:
      • dmesg | grep -i ecc
      • sysctl hw.physmem
      • top
    • 應該會看到:
      • RAM 約 64GB。
      • 沒有 ECC error 訊息。
  • 建議做一次簡單壓力觀察 (不用折磨)
  • 正常啟動系統的服務,然後看:
    • top
    • swapinfo
    • swap 幾乎 0 → 正常。
    • load average 平穩 → OK。
◆不需要做的事
  • 不用重灌 FreeBSD。
  • 不用重新設定 swap。
  • 不用調 BIOS timing。
  • 不用 memtest (除非開機異常或 ECC error)。
  • 重點整理:正常關機 → 斷電放電 → 插對插槽 → 耐心等第一次開機 → 系統確認 64GB。
◆遭遇狀況
  • 新記憶體裝上後重開機:
    • 按下電源後出現 2 聲短 Beeper。
    • 觀察到硬碟在讀寫。
    • 電源指示燈恆亮,硬碟燈閃爍。
    • 螢幕尚未出現任何訊息 (維持黑屏)。
  • 狀況解讀:
    • 在多數伺服器 / 工作站主機板上:
      • 2 Beep 很常代表「記憶體偵測 / 記憶體 training 狀態」。
      • 不是致命錯誤 beep (例如連續長音)。
      • 換成白話:主機板有看到 RAM,正在處理,但還沒完成初始化。
    • 有聽到硬碟在讀寫是好消息,表示:
      • CPU 有在跑。
      • 主機板沒有卡在最初級的 POST。
      • 南橋 / I/O 子系統有動作。
    • 如果是 RAM 完全不相容或沒插好,通常:
      • 風扇狂轉。
      • 連硬碟都不會動。
    • 電源燈恆亮、硬碟燈閃爍:
      • 也是偏正常現象。
      • 恆亮:系統未斷電、未進入保護狀態。
      • HDD LED 閃:控制器正在初始化或讀取。
    • 螢幕完全黑,沒有任何畫面:這是目前唯一的「異常點」,但在換大容量 ECC RAM 後是常見狀況,原因通常是:
      • 第一次開機在做 Memory Training。
      • ECC 32GB ×2 → 64GB,training 會非常慢。
      • 有時會 2~5 分鐘都沒畫面 (很多人在這一步太快重開機,反而卡更久)。
  • 現在最重要的一件事:
    • 什麼都不要動,等 5~10 分鐘。
    • 不要按 reset。
    • 不要長按電源。
    • 不要拔電。
  • 只觀察:
    • 風扇是不是還在正常轉。
    • HDD LED 是否偶爾閃一下。
    • 如果它是在 training,中斷反而會讓下一次更慢。
◆20 MINUTES LATER…
  • 時間很快就過了 20 分鐘,一樣黑屏,但是:
    • 可以使用 SSH 遠端登入系統。
    • 伺服器各項服務正常啟動運作。
    • 主機螢幕會突然顯示出開機完成畫面,若干時間後,又進入黑屏。
    • 重新 reboot 時,系統依舊會發出 2 聲短 Beeper。
  • 狀況解讀:
    • 硬體其實已經成功啟動過了。
    • 黑畫面「不是當機」,而是顯示輸出/省電/訊號切換問題的機率非常高。
    • 遠端成功登入,代表:
      • CPU 正常。
      • 記憶體 (64G ECC) 已被接受。
      • BIOS / POST 已完成。
      • FreeBSD 已經開機完成。
      • 這一步已經 80% 成功了。
    • 黑屏最常見的原因有這幾個 (依可能性排序):
      • 顯示輸出重置/切換 (最常見)。
        • FreeBSD 在啟動完成後:
          • 會從「開機文字模式」。
          • 切換成「console / vt」。
          • 有時 內顯會短暫 reset 訊號。
        • 某些螢幕或線材會:
          • 判定「沒訊號」。
          • 自動關閉顯示。
          • 但主機其實還在跑。
        • 螢幕進入省電或輸入源誤判,尤其是:
          • HDMI ↔ DisplayPort。
          • 自動輸入源的螢幕。
          • 畫面瞬間消失,看起來像「黑畫面」。
        • 鍵盤沒喚醒畫面 (文字 console):
          • 畫面黑。
          • 但其實在等輸入。
  • 至此綜合評估記憶體升級作業:
    • 伺服器本身完全正常、非常健康。
    • 64GB 新記憶體已經成功運作。
    • 問題只剩「本機螢幕顯示 (Console / 顯卡輸出)」。證明:
      • FreeBSD 正常跑。
      • 網路正常。
      • SSH 正常。
      • Web & Database 服務正常。
      • 使用者與權限正常。
    • 這代表:硬體升級已經成功 99%。
◆解決黑屏方式
  • SSH 遠端登入系統:
    • 輸入 ee /boot/loader.conf
    • 加入或確認:
      • kern.vty=vt (強制使用文字 console)。
      • hw.vga.textmode=1 (強制 VGA 文字模式,不使用高解析度圖形模式)。
    • 存檔後重開機。
  • 選項:檢查 BIOS (不是現在非做不可)。
    • Primary Display → Onboard。
    • Console Redirection → Enabled 。
    • CSM / Legacy VGA → Enabled。
◆最終設定─記憶體分配
  • 驗證安裝前後記憶體容量:
    • 更換記憶體前:
      • sysctl hw.physmem hw.physmem: 16,938,934,272。
      • 執行 top 查看當前記憶體使用情形
        Mem: 84M Active, 1082M Inact, 4188K Laundry, 6138M Wired, 104K Buf, 8375M Free
        ARC: 4476M Total, 637M MFU, 3040M MRU, 256K Anon, 45M Header, 746M Other 3106M Compressed, 6527M Uncompressed, 2.10:1 Ratio
        Swap: 2048M Total, 2048M Free
    • 更換記憶體後:
      • sysctl hw.physmem hw.physmem: 68,478,541,824。
      • 執行 top 查看安裝後當前記憶體使用情形
        Mem: 753M Active, 159M Inact, 4088K Laundry, 1134M Wired, 56K Buf, 60G Free
        ARC: 219M Total, 40M MFU, 169M MRU, 1739K Header, 8736K Other 117M Compressed, 325M Uncompressed, 2.78:1 Ratio
        Swap: 2048M Total, 2048M Free
  • 編輯 /boot/loader.conf
    • # ZFS 核心載入
      • zfs_load=”YES”
    • # ZFS ARC 設定
    • # ARC 最小快取,保證低記憶體壓力下仍有快取
      • vfs.zfs.arc_min=”8G”
    • # ARC 最大快取,ZFS 可以使用最多 24GB RAM 做快取
      • vfs.zfs.arc_max=”24G”
    • # 可選:限制 ARC metadata 大小,避免占用過多內存 (非必須)
      • vfs.zfs.arc_meta_limit=”16G”
    • #其他安全與性能選項
    • # 禁止破壞性 DTrace
      • security.bsd.allow_destructive_dtrace=0
    • # 禁止 GPT / disk ident 自動標籤
      • kern.geom.label.disk_ident.enable=”0″
      • kern.geom.label.gptid.enable=”0″
    • # 啟用加密硬體模組
      • cryptodev_load=”YES”
◆待解決事項:
  • 開機 Beeper 聲。
  • 不特定時間出現黑屏現象。

夜深了!! 該休息了!! 有空再來研究吧!!

◆最終發現:
  • 開機 Beeper 聲:
    • BIOS 安全檢查清單 – Unqualified DIMM 1/3 has been detected.
  • 不特定時間出現黑屏現象:
    • 拔除螢幕分享器即解決。

「Unqualified DIMM」≠ 不相容 ≠ 故障

BIOS 在對照主機板的記憶體 QVL 清單時,發現 DIMM 1、DIMM 3 插的模組不在官方驗證名單內。「不在名單」內,不等於「不能用」。新換上的 RAM 雖為合法 ECC,但沒有送主機板廠商驗證,所以 BIOS 只好嗶你 2 聲,並很誠實地說一句:「我沒驗過它」。

好啦!! 反正已買了!! 也換了!! 可跑了!!
就醬吧!! 之後再看著辦吧!!

發佈留言