使用 smartd 透過電子郵件取得 Ubuntu SMART 磁碟警告

使用 Ubuntu 的smartmontools軟體包來監控支援的驅動器smartd,然後透過本機郵件服務或 SMTP 中繼發送警告。對於單一 Ubuntu 伺服器,警報流程應盡量簡化:確認 SMARTsmartctl可以讀取每個磁碟,在 SMART 中新增收件人/etc/smartd.conf,並在依賴警報之前發送測試郵件。 SMART 警告可以揭示一些正在發展的問題,但無法預測所有突發的驅動器故障。

Ubuntu 終端機顯示 smartctl --scan-open 正在發現 SATA 磁碟和 NVMe 設備
設備掃描範例:使用您自己的系統返回的路徑和設備類型。

選擇適合您 Ubuntu 主機的電子郵件路由

smartd它本身不會向互聯網郵件提供者進行身份驗證。其預設郵件路徑會呼叫系統mail指令,因此郵件投遞也取決於已設定的郵件傳輸代理程式 (MTA) 或中繼。請選擇與現有路徑相符的路徑:

路線最佳匹配實際權衡
現有的本地 MTA一台已經發送系統郵件的伺服器新增設定最少;確認mail已安裝且外部傳輸功能正常。
使用經過驗證的 SMTP 中繼的 Postfix需要透過服務提供者發送外發郵件的VPS或家用伺服器使用正常的系統郵件路徑,可以將郵件排隊等待投遞;需要一次性中繼、TLS 和憑證設定。
輕量級 SMTP 用戶端一家小型主機商,郵件量低,且管理員能夠熟練地管理客戶資料。郵件堆疊較小,但如果用戶端不提供命令,則smartd可能需要自訂郵件程式。-M execmail

對於已設定係統郵件的單盤伺服器,請使用現有的郵件傳輸代理程式 (MTA)。如果這是一台新的 Ubuntu 伺服器,而您擁有 SMTP 中繼憑證,那麼 Postfix 是一個不錯的選擇,因為 Ubuntu 提供了關於其智慧主機配置的文件。 Ubuntumsmtp軟體包倉庫中也提供了一些輕量級的郵件用戶端,但在選擇之前,請務必檢查它與您的 smartd 配置中所需的郵件命令的兼容性。無論使用哪種用戶端,請測試發送到您計劃監控的外部位址的郵件投遞情況。

1. 確認 Ubuntu 可以讀取硬碟的 SMART 數據

安裝 smartmontools 並掃描目前系統可以開啟的設備:

sudo apt update
sudo apt install smartmontools
sudo smartctl --scan-open

掃描結果可能會傳回類似/dev/sda -d satNVMe 裝置路徑的條目。請使用您電腦上顯示的路徑和任何-d裝置類型選項。然後檢查一個驅動器:

sudo smartctl -a /dev/sda

切換/dev/sda到已發現的裝置。 USB 硬碟盒、硬體 RAID 控制器或儲存適配器可能會阻止 SMART 直通;如果掃描未顯示磁碟,請檢查其控制器文件和 smartmontools 裝置類型選項。掃描成功僅確認資料可讀,不代表硬碟健康。

Ubuntu 終端機運行 smartctl 健康檢查,SATA 磁碟狀態顯示為「通過」。
例如,以下是一個硬碟的健康輸出範例;「通過」結果很有用,但並不能保證設備不會發生故障。

2. 設定 smartd 向收件者發送電子郵件

開啟守護程式配置:

sudoedit /etc/smartd.conf

若要實現自動發現,請使用一條活動掃描線,並將範例位址替換為您的目標位址:

DEVICESCAN -a -m admin@example.net -M test

-a啟用標準 SMART 檢查集,-m設定電子郵件收件人,並-M test要求 smartd 在啟動時發送測試警告。DEVICESCAN這些指令會套用於偵測到的驅動器,並忽略檔案中後續的裝置條目。如果您只想指定選定的驅動器,請為每個磁碟使用單獨的裝置行,例如 `<device-line-disk>` /dev/sda -a -m admin@example.net -M test。對於 RAID 或 USB 連接的磁碟,請包含掃描結果顯示的或控制器要求的裝置類型選項。

Nano 編輯器顯示了 smartd.conf 檔案中的 DEVICESCAN 行,其中包含電子郵件收件者和測試指示。
此配置行啟用 SMART 檢查,並在守護程序啟動時要求一次性測試訊息。

儲存文件,然後啟用並重新啟動Ubuntu的smartmontools服務:

sudo systemctl enable --now smartmontools.service
sudo systemctl restart smartmontools.service

如果服務無法正常啟動,請檢查服務和最近的日誌訊息:

systemctl status smartmontools.service
sudo journalctl -u smartmontools.service -n 50 --no-pager

在較舊的或自訂的安裝中,單元名稱可能會有所不同;請使用此方法systemctl list-unit-files '*smart*'尋找安裝在您的系統中的單元。

3. 測試發送,然後選擇提醒行為

由於-M test該服務會在啟動時發送訊息,請重新啟動服務並確認郵件是否到達。這可以驗證從 smartd 到本地郵件命令以及 MTA 或中繼的路徑是否正確。如果測試郵件未到達,請先使用相同的郵件命令發送郵件,或檢查 MTA 的佇列和日誌;正在執行的 smartmontools 服務無法更正 SMTP 憑證、DNS、TLS 或提供者側的中繼限制。

測試完成後,請移除-M test並/etc/smartd.conf重新啟動服務,以避免常規重新啟動產生新的測試訊息。保持-m原樣。預設情況下,smartd 會限制重複警報;根據已儲存的監控狀態,它會發送初始警告,並可能針對持續存在的問題發送每日提醒。這可以減少收件匣噪音,而希望更改提醒頻率的操作員應smartd.conf(5)在更改前查閱已安裝的手冊-M。

Ubuntu 終端顯示 smartmontools 服務已激活,並附有範例郵件測試確認訊息。
範例驗證檢視:確認服務狀態並獨立確認測試訊息已到達收件匣。

這些警報能告訴你什麼,不能告訴你什麼?

smartd 會定期檢查設備,預設輪詢間隔為 30 分鐘,因此警報不會立即發出。它可以報告受支援的健康故障、新的日誌錯誤以及其他已配置的情況。 SMART 屬性取決於供應商,健康狀態摘要並不能排除突發的電子、機械、控制器或連接故障。請保留備份,並結合sudo smartctl -a /dev/sda硬碟製造商的指導調查警告,而不是將單一狀態列視為完整的診斷結果。

若要了解特定的指令行為和支援的設備類型,請參閱Ubuntu smartd.conf 手冊和Ubuntu smartd 手冊。 Ubuntu 在其Postfix 安裝指南中記錄了 SMTP 智慧主機配置;Ubuntu 的軟體包索引列出了msmtp-mta 軟體包,供選擇輕量級 SMTP 用戶端的系統使用。

留下評論

使用 Systemd 定時器可靠地執行 ownCloud 後台作業

將按需作業運行替換為 systemd 定時器,該定時器每 15 分鐘執行一次 ownCloud 支援的 occ system:cron 命令。

透過尋找故障路由來恢復 ownCloud WebDAV 同步

透過 Apache、Nginx 或反向代理程式追蹤 WebDAV 請求,然後使用經過驗證的 PROPFIND 測試確認 ownCloud 同步功能正常。

設定 Nextcloud 的公共 URL,以便它可以存取自身。

透過設定其規範 URL 並從伺服器本身檢查 DNS、HTTPS 和反向代理路由,修復 Nextcloud 缺少出站位址警告的問題。

在 Ubuntu 24.04 上設定 Nextcloud Redis 快取

在 Ubuntu 24.04 上設定 Nextcloud Redis 快取

透過本機 Unix 套接字配置 APCu 和 Redis,以實現 Nextcloud 快取和檔案鎖定,並提供目前和舊版 Nextcloud 的步驟。

使用 Systemd 定時器自動執行 Nextcloud Cron

檢查 Nextcloud 的 cron 模式,修復其 systemd 服務和計時器,並驗證後台作業在啟動後以及每隔五分鐘運行一次。

使用 Redis 清除 Nextcloud 的檔案鎖定警告

啟用可靠的 Nextcloud 檔案鎖定,選擇適當的 Redis 或 Valkey 後端,並驗證警告是否清除,同時避免並發檔案變更的風險。

如何才能獲得 Nextcloud A+ 安全評級

如何才能獲得 Nextcloud A+ 安全評級

使用最新更新、HTTPS 和 HSTS、精確的反向代理信任以及針對公共伺服器的檢查,修復 Nextcloud 掃描中常見的錯誤。

啟用 Nextcloud 伺服器端加密,並評估其影響

為需要加密的儲存配置 Nextcloud SSE,保護加密金鑰,並在加密現有文件之前測量傳輸和 CPU 影響。

將 Elasticsearch 全文搜尋功能新增至 Nextcloud

將 Nextcloud 的檔案搜尋連接到 Elasticsearch,索引文件內容,並選擇適合您的伺服器和安全需求的設定。

為 Nextcloud 已刪除檔案設定可靠的過期策略

為 Nextcloud 已刪除檔案設定可靠的過期策略

配置 Nextcloud 在規定的保留期後刪除已刪除的文件,可靠地安排後台作業,並避免執行清除所有使用者回收站的命令。