為什么寫這個文章?今天處理一個powerstore 3000T 控制器,控制器上電后,亮一下燈就很快熄滅了,然后embedded module上和io module不加電,過一整子系統自動就下電了,串口沒有任何輸出。剛開始判斷是主板的問題,對CPU做了各種的測試,發現沒有效果。轉而對內存條做了更換測試,馬上就有了輸出,然后再看SEL的log,里面有很多的關于內存的報錯信息。這些內存log給客戶看不懂,看不懂的原因就是很多基本概念沒有,所以就有了這篇文章。
在存儲或者服務器系統中,內存故障可以導致整個存儲控制器掛掉或者服務器宕機,要更好的診斷內存故障,就必須了解內存的一些基本概念,這樣看日志log的時候可以更加準確的判斷內存故障。理解內存的物理和邏輯組織結構,如 Socket、Channel、DIMM、Rank、Bank 等,是系統故障診斷的基礎。本文將簡要介紹存儲系統或者服務器內存的主要組成層級及其功能作用。
Socket
Socket 是主板上安裝物理 CPU(處理器)的接口。服務器可能有一個或多個 Socket,如常見的單路(1 Socket)或雙路(2 Socket)系統。雙路CPU是目前市場上最多的服務器,對于存儲系統也是最多的一種配置。很少見到有4顆CPU的存儲控制器。對了,socket怎么翻譯,不是很清楚,直接硬翻譯就是“插座”。
每個 Socket 上的 CPU 通常集成一個或多個內存控制器(Memory Controller),負責直接控制和訪問其所連接的內存。
socket簡單理解就是CPU的個數,雙路服務器就是2個CPU,就有2個socket(Socket 0 和 Socket 1),每個 CPU 控制一部分內存資源。
Channel(通道)
Channel 是 CPU 內部內存控制器(memory controller)與 DIMM 插槽之間的獨立傳輸通道。
- 每個 CPU 通常有 2~8 個 Channel;
- 通道越多,內存帶寬越高;
- 多通道配置(如雙通道、六通道)可顯著提高內存并行訪問效率。
例如,Intel Xeon Scalable 第三代支持每 CPU 最多 8 通道 DDR4/DDR5。
DIMM(內存條)
DIMM(Dual Inline Memory Module) 是插在主板上 Channel 接口中的物理內存模塊,是存儲控制器或者服務器主板上可更換的內存單元(FRU)。
每個 Channel 通常支持 1~2 根 DIMM,分別稱為:
- 1DPC(1 DIMM per Channel):每通道一根內存
- 2DPC(2 DIMM per Channel):每通道兩根內存
DIMM 的規格包括容量(如 16GB/32GB)、類型(如 RDIMM、LRDIMM)、頻率(如 3200 MT/s)等,這個大家都很熟悉,就不一一介紹了。
Rank(列)
Rank 是 DIMM 上 DRAM 芯片的邏輯組織單位。這個概念是DIMM內存上的了,不是控制器或者服務器主板上的概念了。
- 一個 Rank 是一組可以被內存控制器(memory controller)作為一個獨立單元訪問的 DRAM 芯片;
- 一個 DIMM 可以包含多個 Rank:
- Single-Rank(SR)
- Dual-Rank(DR)
- Quad-Rank(QR)
Rank 越多,DIMM 容量越大,但對控制器的電氣負載也越高,會影響最大頻率或穩定性。
Bank
Bank 是 DRAM 芯片內部的并行訪問子單元。每個 DRAM 芯片內部通常包含 8、16 或更多 Bank。
- Bank 是最小的并行存儲訪問單元;
- 多個 Bank 使得內存可以交錯訪問,提高效率;
- Bank 通過 Bank Group 進一步組織以支持更高的帶寬(如 DDR4/DDR5)。
常見其他術語
名稱 | 含義 |
SPD (Serial Presence Detect) | 存儲在 DIMM 上的小型 EEPROM 芯片,記錄內存參數(如容量、頻率、電壓)供 BIOS 讀取 |
ECC (Error-Correcting Code) | 用于檢測和修復單比特內存錯誤的技術,是服務器內存的標準配置 |
MTR (Memory Technology Register) | CPU 內部配置內存拓撲的控制寄存器,描述 Rank、Bank 等屬性 |
NUMA (Non-Uniform Memory Access) | 多 CPU 系統中各自控制的內存訪問速度不同,影響性能調度策略 |
內存常見故障排查建議
現象 | 可能原因 | 建議操作 |
內存識別容量異常 | DIMM 未插好;型號不兼容;BIOS限速 | 重新插拔;更新BIOS;確認兼容性 |
系統不啟動或卡在 POST | DIMM 初始化失敗;Rank disabled;時序不穩 | 測試最簡配置(1條/CPU);交叉更換 |
出現 Correctable ECC 報警 | 內存出現輕微故障 | 檢查日志,持續觀察是否增長 |
出現 Uncorrectable ECC 或系統崩潰 | DIMM 或插槽硬件故障 | 立即更換 DIMM;檢查插槽 |
Powerstore 3000T內存解讀
上面這個圖片是DELL EMC Powerstore 3000T的內存信息,可以從這個圖片看出來,這是一個雙路服務器,就是2個sockets,每個sockets有6個通道,就是6個channel,每個channel包含2個DIMM,實際物理的主板上就表現為一個白色和一個黑色的內存插槽。對于3000T由于系統只配置了12條32GB的內存(PN:100-532-602-00),所以內存都需要安裝在每個channel的0上,對應到主板上,就是白色的插槽。有了這些基本的概念,看log就可以準確判斷出來那個DIMM出問題了,DIMM應該如何插等問題了。
其實,要能閱讀log,而且能夠理解log中的含義,對于這些基本概念的了解是非常關鍵的。能夠閱讀log,理解log,才能更好的分析判斷診斷故障,而不是拍腦袋開腦洞去解決問題了。如果還有其他閱讀log,或者故障分析判斷上的問題,可以添加vx (StorageExpert)進一步的溝通。