我的家用伺服器之死與重生 (★ 68 分)
文章記錄一台 Raspberry Pi 4B 家用伺服器的故障與重建過程。伺服器連續運作多年後,Tremotesf 的 Torrent 清單、SMB(Server Message Block,網路檔案共用協定)掛載與 SSH(Secure Shell,安全殼層)連線同時失效;重新開機時,現行與上一個 NixOS(以宣告式設定管理系統的 Linux 發行版)版本都在載入核心後停滯。作者以 fsck(檔案系統檢查工具)修復大量錯誤,但拔插微型 SD 卡後問題再次出現,判斷記憶卡已損壞,數日前整棟建築停電只是最後一擊。由於重要資料存放在外接硬碟,NixOS 設定檔也幾乎涵蓋整套系統,實際遺失的只有 Torrent 檔案與幾個服務的快取;Immich 的相片資料則有外接硬碟備份,沒有受到影響。
重建時,作者把重點放在減少微型 SD 卡的寫入、讓外接硬碟具備備援能力,以及完整備份。交換空間(swap)改用 zram(在記憶體中建立壓縮區塊裝置的 Linux 功能),暫存目錄則使用 tmpfs(以記憶體作為磁碟的檔案系統),systemd 日誌也改為只寫入記憶體;根檔案系統則停用 atime,避免每次讀取檔案都產生額外寫入。資料方面,他回收兩顆老舊的 500 GB 與 320 GB 硬碟,以 btrfs(支援儲存池與子磁碟區的 Linux 檔案系統)組成 RAID1(鏡像複寫),並為每個服務建立獨立子磁碟區,再透過自製 Nix 模組宣告掛載關係。之後又加入一顆 1 TB 硬碟,計畫再加入另一顆 500 GB 硬碟。
備份採用 restic 備份工具,針對 Immich 保存相片資料,排除可重新產生的影片編碼結果與縮圖;由於暫時缺乏足夠硬碟,作者先以 S3 物件儲存空間及複寫作為替代方案。多個服務共用 Linux ISO 檔案時,則透過 media 群組與 setgid 權限,讓新建立的檔案自動繼承正確群組。硬碟監測目前只做到定期執行 btrfs scrub 檢查錯誤,未來可能加入 S.M.A.R.T.(Self-Monitoring, Analysis and Reporting Technology,自我監測、分析與回報技術)、smartd、Prometheus 與 Grafana。最後,他換上宣稱具高耐用度的 64 GB 微型 SD 卡與 UPS(不斷電系統),利用 NixOS 宣告式設定直接建立可寫入記憶卡的系統映像檔,完成重建後,伺服器及時恢復 Navidrome 音樂服務,讓他能在假期開車途中聽音樂。
Hacker News 的討論大致認同,讓微型 SD 卡長時間承擔 24/7 根檔案系統與大量寫入,是 Raspberry Pi 家用伺服器的主要弱點;有人一年多就把 SD 卡寫到幾乎無法使用,也有人在關閉 swap、控制寫入量後連續使用五年仍無故障,因此實際壽命會受到寫入負載、供電品質、散熱與硬體個體差異影響。留言者普遍建議改用 USB 3 SSD、SATA SSD 或 NVMe,讓系統從外接磁碟開機,或將根檔案系統設為唯讀;Raspberry Pi 5 的 PCIe 插槽、Compute Module 的內建快閃記憶體,以及較新的單板電腦也被視為替代方案。另有不少人推薦二手 Dell OptiPlex、Lenovo ThinkCentre 或 HP EliteDesk 等商用小型電腦。
討論也提醒,硬體監測不一定能預告故障:部分硬碟能在超過十萬小時後仍持續運作,但電源供應器、記憶體與硬碟也可能突然失效,SMART 資訊並非萬無一失。因此,多數留言認為可靠的備份、可快速替換的系統磁碟與備用零件,比精準預測硬體壽命更實際;這也與作者把系統設定、服務資料和備份分開處理的重建方向一致。
👥 38 則討論、評論 💬
https://news.ycombinator.com/item?id=48966769