在 Linux 下的 Corsair MP700 PCIe 5.0 NVMe SSD 評測之後,許多讀者對文件系統錯誤感到驚訝,因為他們沒有像主板的無源 M.2 散熱器那樣添加額外的冷卻,並且我自己也對這種情況感到好奇,這裡有更多測試最終如何做到這一點驅動器將在三分鐘或更短的時間內可靠地遇到文件系統錯誤,而無需額外的冷卻。

在為 Corsair MP700 2TB 完成基本的 Linux 測試後,我做了一些進一步的測試,查看在沒有任何額外冷卻的情況下運行時的文件系統錯誤。因為,畢竟,人們通常會假設 NVMe 固態驅動器在過熱的情況下會在完全到達文件系統錯誤點之前節流。

正如評論中提到的,我只是在安裝乾淨的 Ubuntu 23.04 之後安裝測試時遇到了文件系統錯誤,甚至沒有真正對 NVMe 驅動器施加壓力與基準。因此,我很好奇在沒有任何售後冷卻的情況下運行時,驅動器在磁盤基準測試工作負載下能持續多長時間。長話短說,不到 3 分鐘就進入了乾淨的啟動狀態,然後就可靠地遇到了錯誤。

當遠程收集 dmesg 日誌時,通常在啟動後的 180 秒內,簡單地啟動 MariaDB 服務器並運行 mysqlslap 來運行數據庫服務器,將會出現文件系統錯誤。重複幾次,它總是會在三分鐘內發生,並且通過 NVMe HWMON sysfs 報告的 NVMe 驅動器溫度始終在 87 度左右。對於它的價值,MP700 技術規格概述了-40C 至 85C 的溫度範圍。

從收集的日誌來看,至少在Linux下是這樣看起來 NVMe 控制器出現故障,進而導致 EXT4 文件系統錯誤。例如:

[ 177.187278] nvme nvme0:控制器已關閉;將重置:CSTS=0xffffffff,PCI_STATUS=0xffff
[ 177.187283] nvme nvme0:您的設備是否啟用了錯誤的省電模式?
[177.187285] nvme nvme0:嘗試“nvme_core.default_ps_max_latency_us=0 pcie_aspm=off”並報告錯誤
[177.235051] nvme 0000:19:00.0:無法將電源狀態從 D3cold 更改為 D0,設備無法訪問
br>[ 177.235151] nvme nvme0:重置失敗後禁用設備:-19
[ 177.251298] nvme0n1:檢測到容量從 3907029168 更改為 0
[ 177.251308] EXT4-fs 警告(設備 nvme0n1p2):ext4_end_bio:343: I/O 錯誤 10 寫入 inode 55194516 起始塊 125091905)
[177.251310]設備 nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 129128830
[177.251312]EXT4-fs 警告(設備 nvme0n1p2):ext4_end_bio:3 43: I/O 錯誤 10 寫入 inode 55193889 起始塊 273991222)
[177.251316] 設備 nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 124816449
[177.251317] 設備 nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 27371576 6
[177.251322] EXT4-fs 警告(設備 nvme0n1p2):ext4_end_bio:343:I/O 錯誤 10 寫入 inode 29884642 起始塊 129404287)
[177.251327] EXT4-fs 警告(設備 nvme0n1p2):ext4_end_bio:343: I/O 錯誤 10 寫入 inode 55194516 起始塊 125091902)
[177.251327]EXT4-fs 警告(設備 nvme0n1p2):ext4_end_bio:343:I/O 錯誤 10 寫入 inode 29884642 起始塊 129404288)
[177。 251329 ] 設備 nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 124816446
[ 177.251331] EXT4-fs 警告(設備 nvme0n1p2):ext4_end_bio:343: I/O 錯誤 10 寫入 inode 30164735 起始塊 129396193)
[ 177.25 1331 ] EXT4-fs 警告(設備 nvme0n1p2):ext4_end_bio:343:I/O 錯誤 10 寫入 inode 55194516 起始塊 125091875)
[177.251332] 設備 nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 129120737
[177.25 1333 ] 設備 nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 124816419
[177.251334] EXT4-fs 警告(設備 nvme0n1p2):ext4_end_bio:343:I/O 錯誤 10 寫入 inode 55194516 起始塊 125091852)
[ 177.25 1336 ] 設備 nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 124816396
[ 177.251336] EXT4-fs 警告(設備 nvme0n1p2):ext4_end_bio:343:I/O 錯誤 10 寫入 inode 30164735 起始塊 129396194)
[ 177.25 1338 ] EXT4-fs 警告(設備 nvme0n1p2):ext4_end_bio:343:I/O 錯誤 10 寫入 inode 55194516 起始塊 125091849)
[177.251339] 設備 nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 124816393
[177.25 1341 ] 設備 nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 124816371
[177.251343] 設備 nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 124816353
[177.251345] 正在設備 nvme0n1p2-8 上中止日誌。
[177.251353] ext4_reserve_inode_write:5906 中的 EXT4-fs 錯誤(設備 nvme0n1p2):日誌已中止
[177.251358] EXT4-fs 錯誤(設備 nvme0n1p2):ext4_journal_check_start:83:comm kworker/u64:9:檢測到中止特德日誌
[177.251359] dev nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 220726066,丟失異步頁面寫入
[177.251360] dev nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 243826688,丟失同步頁面寫入
[177.251362] EXT4-fs 錯誤(設備 nvme0n1p2):ext4_dirty_inode:6110:inode #55194516:comm systemd-journal:mark_inode_dirty 錯誤
[177.251365] dev nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 121147223,丟失異步頁面寫入
[177.251366] JBD2:更新 nvme0n1p2-8 的日誌超級塊時出現 I/O 錯誤。
[177.251367] EXT4_DIRTY_INODE中的Ext4-FS錯誤(設備NVME0N1P2):6111:期刊已中止了
[177.251369]緩衝液I/O錯誤I/O在DEV NVME0N1P2上的錯誤I/O錯誤,邏輯塊121141967,丟失ASYSYNC PAGE
PAGE
PAGE
PAGE

[177.251373] ext4_reserve_inode_write:5906 中的 EXT4-fs 錯誤(設備 nvme0n1p2):日誌已中止
[177.251375] 緩衝區 I/O dev nvme0n1p2 錯誤,邏輯塊 121110544,丟失異步頁面寫入
[177.251376] EXT4-fs 錯誤(設備 nvme0n1p2):ext4_dirty_inode:6110:inode #55193889:comm rs:main Q:Reg:mark_inode_dirty 錯誤
[ 177.251376] EXT4-fs 錯誤(設備 nvme0n1p2):ext4_journal_check_start:83:comm mariadbd:檢測到中止的日誌
[177.251377] dev nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 121110529,丟失異步頁面寫入
[177.25137 8] dev nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 0,同步頁面寫入丟失
[177.251379] dev nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 120587356,異步頁面寫入丟失
[177.251381] 緩衝區 I/O dev nvme0n1p2 上的錯誤,邏輯塊 58,丟失異步頁面寫入
[177.251384] ext4_dirty_inode 中的 EXT4-fs 錯誤(設備 nvme0n1p2):6111:日誌已中止
[177.251386] EXT4-fs(nvme0n1p2):前一個 I/O 檢測到超級塊錯誤
[177.251386] EXT4-fs 錯誤(設備 nvme0n1p2):ext4_journal_check_start:83:comm systemd-journal:檢測到中止的日誌
[177.251391] EXT4-fs 錯誤(設備 nvme0n1p2):ext4_journal_check_start: 83:comm rs:main Q:Reg:檢測到中止的日誌
[177.251399] EXT4-fs(nvme0n1p2):檢測到上一個超級塊的 I/O 錯誤
[177.251406] EXT4-fs(nvme0n1p2):I/O寫入超級塊時出錯
[ 177.251407] EXT4-fs (nvme0n1p2):以只讀方式重新掛載文件系統
[ 177.251409] EXT4-fs (nvme0n1p2):無法將未寫入的範圍轉換為寫入的範圍——潛在的數據丟失! (inode 29884642,錯誤-30)
[177.251413] EXT4-fs (nvme0n1p2):無法將未寫入的範圍轉換為寫入的範圍——潛在的數據丟失! (inode 30164735,錯誤-30)
[177.251415] EXT4-fs (nvme0n1p2):寫入超級塊時出現 I/O 錯誤
[177.251415] EXT4-fs (nvme0n1p2):寫入超級塊時出現 I/O 錯誤
>[ 177.251417] EXT4-fs (nvme0n1p2):檢測到先前到超級塊的 I/O 錯誤
[177.251420] EXT4-fs (nvme0n1p2):寫入超級塊時出現 I/O 錯誤
[186.476141] EXT4-fs 錯誤 ( device nvme0n1p2): __ext4_find_entry:1663: inode #63307794: comm appport: reading directory lblock 0
[186.476151] buffer_io_error: 4 callbacks suppressed
[186.476152] dev nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 0,丟失同步頁面寫入
[186.476154] EXT4-fs:抑制了 2 個回調
[186.476154]EXT4-fs (nvme0n1p2):寫入超級塊時出現 I/O 錯誤
[186.476170]EXT4-fs 錯誤(設備 nvme0n1p2): __ext4_find_entry:1663: inode #63307794: comm appport: 讀取目錄 lblock 0
[186.476174] dev nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 0,丟失同步頁面寫入
[186.476174] EXT4-fs (nvme0n1p2 ):寫入超級塊時出現 I/O 錯誤
[186.476184] EXT4-fs 錯誤(設備 nvme0n1p2):__ext4_find_entry:1663:inode #63307794:comm appport:讀取目錄 lblock 0
[186.476187] 緩衝區 I/O 錯誤在開發 nvme0n1p2 上,邏輯塊 0,丟失同步頁面寫入
[186.476188] EXT4-fs (nvme0n1p2):寫入超級塊時出現 I/O 錯誤
[186.476197] EXT4-fs 錯誤(設備 nvme0n1p2):__ext4_find_entry:1663: inode #63307794: comm appport: 讀取目錄 lblock 0
[186.476199] dev nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 0,丟失同步頁面寫入
[186.476200] EXT4-fs (nvme0n1p2):I/O error while writing superblock

NVMe 驅動器正忙於 MariaDB 任務,因此它不應該嘗試進入低功耗管理狀態——缺乏熱節流……所以我也這樣做了嘗試 dmesg 輸出中推薦的“nvme_core.default_ps_max_latency_us=0 pcie_aspm=off”內核選項。但最終,這些禁用 PCI Express 主動狀態電源管理 (ASPM) 或更改 NVMe 最大延遲的選項都沒有任何幫助。

[ 164.581235] nvme nvme0:控制器已關閉;將重置:CSTS=0xffffffff,PCI_STATUS=0xffff
[ 164.581240] nvme nvme0:您的設備是否啟用了錯誤的省電模式?
[164.581241] nvme nvme0:嘗試“nvme_core.default_ps_max_latency_us=0 pcie_aspm=off”並報告錯誤
[164.641482] nvme0n1:I/O Cmd(0x2) @ LBA 203495560,32 塊,I/O 錯誤(sct 0x3/sc 0x71)
[164.641490] I/O 錯誤,dev nvme0n1,扇區 203495560 op 0x0:(READ) flags 0x80700 phys_seg 4 prio class 2
[164.669173] nvme 0000:19:00.0:Un能將電源狀態從 D3cold 更改為 D0,設備不可訪問
[164.669278] nvme nvme0:重置失敗後禁用設備:-19
[164.693186] I/O 錯誤,dev nvme0n1,扇區 3089104896 op 0x1:(WRITE)標誌 0x0 phys_seg 1 prio 類 2
[164.693195] EXT4-fs 警告(設備 nvme0n1p2):ext4_end_bio:343:I/O 錯誤 10 寫入 inode 55194123 起始塊 386138112)
[164.693198] nvme0n1:檢測到容量變化從 3907029168 到 0
[164.693200] 設備 nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 385862656
[164.693211] EXT4-fs 警告(設備 nvme0n1p2):ext4_end_bio:343: I/O 錯誤 10 寫入 inode 551 94123起始塊 129390649)
[164.693213] 設備 nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 129115193
[164.693213] EXT4-fs 警告(設備 nvme0n1p2):ext4_end_bio:343: I/O 錯誤 10 寫入 inode 29884 650起始塊 273996343)
[164.693215] 設備 nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 129115194
[164.693217] 設備 nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 129115195
[164.693219] 緩衝區 I/O設備 nvme0n1p2 上的錯誤,邏輯塊 129115196
[164.693220] EXT4-fs 警告(設備 nvme0n1p2):ext4_end_bio:343:I/O 錯誤 10 寫入 inode 55194123 起始塊 129390653)
[164.693224] EXT 4-fs 警告(設備 nvme0n1p2):ext4_end_bio:343:寫入 inode 55194123 起始塊 129390637 的 I/O 錯誤 10)
[164.693226] 設備 nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 129115181
[164.693228] EXT4-FS警告(設備 nvme0n1p2):ext4_end_bio:343:I/O 錯誤 10 寫入 inode 55194123 起始塊 129390598)
[164.693229] 設備 nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 129115142
[164.693231] 緩衝區 I/歐設備 nvme0n1p2 上的錯誤,邏輯塊 129115143
[164.693232] EXT4-fs 警告(設備 nvme0n1p2):ext4_end_bio:343:I/O 錯誤 10 寫入 inode 55194123 起始塊 129390595)
[164.693234] 緩衝區輸入/輸出設備 nvme0n1p2 上的錯誤,邏輯塊 129115139
[164.693235] EXT4-fs 警告(設備 nvme0n1p2):ext4_end_bio:343:I/O 錯誤 10 寫入 inode 55194123 起始塊 129390578)
[164.693236] 緩衝區輸入/輸出設備 nvme0n1p2 上的錯誤,邏輯塊 129115122
[164.693238] EXT4-fs 警告(設備 nvme0n1p2):ext4_end_bio:343:I/O 錯誤 10 寫入 inode 55194123 起始塊 129390566)
[164.693240] EXT 4-fs 警告(設備 nvme0n1p2):ext4_end_bio:343:寫入 inode 55194123 起始塊 129390563 的 I/O 錯誤 10)
[164.693278] dev nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 120619365,丟失異步頁面寫入
[164.69328 5個] dev nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 127926285,丟失異步頁面寫入
[164.693293] dev nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 62,丟失異步頁面寫入
[164.693302] EXT4-fs錯誤(設備 nvme0n1p2):ext4_check_bdev_write_error:223:comm mariadbd:異步寫回元數據時出錯
[164.693323] 正在設備 nvme0n1p2-8 上中止日誌。
[164.693329]ext4_dirty_inode 中的 EXT4-fs 錯誤(設備 nvme0n1p2):6111:IO 故障
[164.693329]dev nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 243826688,丟失同步頁面寫入
[164.693334] JBD2:更新 nvme0n1p2-8 的日誌超級塊時出現 I/O 錯誤。
[164.693334]dev nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 0,丟失同步頁面寫入
[164.693336]EXT4-fs (nvme0n1p2):寫入超級塊時出現 I/O 錯誤
[164.693340]緩衝區dev nvme0n1p2 上的 I/O 錯誤,邏輯塊 0,丟失同步頁面寫入
[164.693341] EXT4-fs (nvme0n1p2):寫入超級塊時出現 I/O 錯誤
[164.693353] EXT4-fs 錯誤(設備 nvme0n1p2):ext4_journal_check_start:83:comm rs:main Q:Reg:檢測到中止的日誌
[164.693364] dev nvme0n1p2上的緩衝區I/O錯誤,邏輯塊0,丟失同步頁面寫入
[164.693368] EXT4-fs(nvme0n1p2 ):寫入超級塊時出現 I/O 錯誤
[164.693369] EXT4-fs 錯誤(設備 nvme0n1p2):ext4_journal_check_start:83:comm mariadbd:檢測到中止的日誌
[164.693370] EXT4-fs(nvme0n1p2):重新掛載文件系統讀取-only
[164.693378] dev nvme0n1p2 上的緩衝區 I/O 錯誤,邏輯塊 0,丟失同步頁面寫入
[164.693380] EXT4-fs (nvme0n1p2):寫入超級塊時出現 I/O 錯誤
[164.693455 ] EXT4-fs (nvme0n1p2): ext4_do_writepages: jbd2_start: 13262 頁, ino 55194123; err-30
[ 164.727715] 進程 10715(apport) 將 RLIMIT_CORE 設置為 1
[ 164.727716] 中止核心
[ 164.915069] 進程 10732(appport) 將 RLIMIT_CORE 設置為 1
[ 164.915071] Abor聽核心
[164.947259]進程10736(批准)將RLIMIT_CORE設置為1
[164.947261]中止核心
[164.981899]進程10747(批准)將RLIMIT_CORE設置為1

我還沒有在 Inland TD510 PCIe 5.0 NVMe SSD 上完全沒有看到這種行為,但該驅動器默認配備有源散熱器。

在更正 EXT4 文件系統錯誤並將無源 NVMe 散熱器附加到 MP700 之後,我對 MariaDB、PostgreSQL、FIO、ClickHouse 和其他工作負載進行了 24 小時的高要求 I/O 基準測試,並且它運行沒有問題… 仍然相當熱身到 80 年代中期,但內核日誌中從來沒有任何文件系統錯誤或 NVMe 控制器報告。有趣的是,看看這種行為是否也發生在 Windows 下,或者某些 NVMe 驅動程序差異是否會影響這種情況。

無論如何,我建議等待升級到 PCIe 5.0 NVMe 消費類存儲,直到有更多更快、更可靠且價格開始更好地與 PCIe 4.0 競爭的有吸引力的選項可用NVMe 驅動器定價。如果現在要購買任何 PCIe 5.0 NVMe SSD,儘管作為早期採用者,我建議真正確保您有足夠的冷卻。

“在仔細查看 TechPowerUp 和 Phoronix 的最新報告後,Phison在此確認在使用新 Phison PS5026-E26 控制器的產品評論中發現的問題。我們認真對待此事並致力於及時解決。

我們的固件工程團隊已經隔離了問題並採取了必要的措施在報告發布後數小時內調整熱節流曲線。但是,新固件必須經過 Phison 的嚴格驗證過程,然後我們的合作夥伴才能將其發布給客戶。請放心,我們的合作夥伴會在驗證更新可用後立即通知最終用戶。

需要注意的是,所有出廠時未配備散熱器的 E26 SSD 都旨在與散熱器一起使用。大多數啟用 PCIe Gen5 的主板還包括專為 Gen5 SSD 設計的冷卻裝置。我們提供“裸機”選項,允許客戶使用他們現有的冷卻產品。

我們想強調我們致力於為客戶提供高質量產品和解決方案的承諾,並將繼續努力確保他們的滿意度。感謝您在此過程中的耐心和理解。”

所以這應該通過固件更新來解決。現在看看這些固件更新對 Linux 用戶的效果如何……一些供應商至少提供可引導的 NVMe 固件更新處理,而只有少數人在 LVFS+Fwupd 支持方面付出了額外的努力,使其成為 Linux 用戶的一個簡單過程。

Categories: IT Info