Đừng để ổ cứng “đột tử” rồi mới lo cứu dữ liệu
Hồi mới vào nghề quản trị hệ thống, mình từng dính một vố nhớ đời. Lúc đó, mình chỉ mải mê nhìn mấy cái biểu đồ CPU, RAM xanh rì trên Grafana mà quên béng lớp vật lý bên dưới. Một buổi sáng đẹp trời, server database bỗng dưng báo lỗi I/O rồi lăn đùng ra chết. Kết quả? Ổ cứng bị bad sector nặng, dữ liệu lỗi sạch vì không có hệ thống giám sát phần cứng cảnh báo trước.
Thực tế, ổ cứng hiếm khi hỏng ngay lập tức. Nó thường “ho hắng” qua các chỉ số S.M.A.R.T trước khi thực sự ra đi. Nếu bạn đang chạy server Linux, dù là máy chủ vật lý ở IDC hay con máy cỏ chạy homelab, cài đặt smartmontools là việc sống còn. Đừng để đến lúc nghe tiếng kêu lạch cạch mới cuống cuồng tìm bản backup cũ rích.
S.M.A.R.T và bộ đôi công cụ quyền năng
S.M.A.R.T (Self-Monitoring, Analysis, and Reporting Technology) giống như một cái hộp đen trong ổ HDD/SSD. Nó âm thầm ghi lại mọi biến cố: từ nhiệt độ vận hành đến số lượng “ô đất” (sector) bị hỏng. Gói smartmontools cung cấp cho chúng ta hai vũ khí chính:
- smartctl: Dùng để chủ động “khám bệnh”, kiểm tra thông tin hoặc chạy các bài test tức thì.
- smartd: Một daemon chạy ngầm, liên tục soi các chỉ số và bắn cảnh báo ngay khi thấy dấu hiệu bất thường.
Dù Netdata hay Zabbix rất xịn, smartmontools vẫn là nền tảng cốt lõi nhất. Nó nhẹ, cực kỳ tin cậy và nói chuyện trực tiếp với controller của ổ cứng mà không cần qua nhiều lớp trung gian.
Cài đặt và những lệnh smartctl cơ bản
Việc cài đặt chỉ tốn vài giây vì gói này có sẵn trên hầu hết các repo chính thức:
# Cho Ubuntu/Debian
sudo apt update && sudo apt install smartmontools -y
# Cho CentOS/RHEL/AlmaLinux
sudo dnf install smartmontools -y
Xong xuôi, hãy quét thử xem hệ thống đang nhận diện được những ổ đĩa nào:
sudo smartctl --scan
Tiếp theo, hãy kiểm tra xem tính năng S.M.A.R.T đã được bật chưa:
sudo smartctl -i /dev/sda
Nếu thấy dòng SMART support is: Enabled là ổn. Nếu nó đang Disabled, hãy kích hoạt ngay bằng lệnh sudo smartctl -s on /dev/sda.
Cách đọc bảng “bệnh án” S.M.A.R.T
Để xem chi tiết các thông số sức khỏe, bạn dùng lệnh:
sudo smartctl -A /dev/sda
Đừng để đống con số làm hoa mắt. Với kinh nghiệm của mình, bạn chỉ cần soi kỹ 4 chỉ số “tử thần” sau:
- ID 5 (Reallocated_Sector_Ct): Số lượng sector hỏng đã được chuyển vùng. Nếu số này nhảy từ 0 lên 10 chỉ trong một tuần, hãy chuẩn bị mua ổ mới là vừa.
- ID 187 (Reported_Uncorrect): Số lỗi mà phần cứng không thể tự sửa. Con số này chỉ cần lớn hơn 0 là ổ cứng đã bắt đầu mất tin cậy.
- ID 194 (Temperature_Celsius): HDD chạy ngon nhất ở tầm 35-45°C. Nếu nó vọt lên trên 55°C thường xuyên, tuổi thọ sẽ giảm cực nhanh.
- ID 9 (Power_On_Hours): Tổng số giờ chạy. Một ổ cứng doanh nghiệp thường bắt đầu “già” sau khoảng 30.000 đến 50.000 giờ.
Chạy bài test sức khỏe chủ động
Đừng chỉ ngồi đọc thông số, hãy ép ổ cứng tự kiểm tra định kỳ:
- Short test: Chạy khoảng 2 phút, check nhanh mạch điện và cơ khí.
- Long test: Quét toàn bộ bề mặt đĩa, có thể mất vài tiếng nếu ổ vài TB.
# Chạy test nhanh
sudo smartctl -t short /dev/sda
# Xem kết quả sau khi test
sudo smartctl -l selftest /dev/sda
Tự động hóa với smartd: Ngủ ngon hơn mỗi đêm
Chẳng ai rảnh mà ngày nào cũng SSH vào gõ lệnh check. Chúng ta cần smartd làm việc đó thay mình. Hãy cấu hình để nó tự quét và báo về email hoặc chat app.
Mở file /etc/smartd.conf, tìm và comment dòng DEVICESCAN lại, sau đó thêm cấu hình riêng cho từng ổ:
# Edit file cấu hình
sudo nano /etc/smartd.conf
# Cấu hình cho ổ sda: Check 2h sáng hàng ngày, báo về mail
/dev/sda -a -o on -S on -s (S/../.././02|L/../../6/03) -m [email protected]
Trong đó, -s (S/../.././02|L/../../6/03) nghĩa là chạy Short test lúc 2h sáng mỗi ngày và Long test vào 3h sáng Chủ nhật.
Sau khi sửa, nhớ khởi động lại service:
sudo systemctl restart smartd
sudo systemctl enable smartd
Mẹo tránh bị “ngợp” bởi thông báo (Alert Fatigue)
Hồi đầu mình để cảnh báo quá nhạy, chỉ cần nhiệt độ tăng nhẹ lúc đang backup là mail bắn liên tục. Sau này mình rút ra hai kinh nghiệm xương máu:
- Lọc cảnh báo: Chỉ tập trung vào các lỗi về Sector và Uncorrectable Errors.
- Bắn notification qua Telegram: Email rất dễ bị trôi hoặc rơi vào spam. Dùng script để đẩy thẳng về điện thoại sẽ hiệu quả hơn nhiều.
Ví dụ một script Telegram đơn giản bạn có thể tham khảo:
#!/bin/bash
TOKEN="YOUR_BOT_TOKEN"
CHAT_ID="YOUR_CHAT_ID"
MESSAGE="Cảnh báo SMART trên $(hostname): $SMARTD_MESSAGE"
curl -s -X POST "https://api.telegram.org/bot$TOKEN/sendMessage" -d chat_id=$CHAT_ID -d text="$MESSAGE"
Lời kết
Giám sát hệ thống không nhất thiết phải là những thứ cao siêu. Đôi khi chỉ cần một công cụ “nồi đồng cối đá” như smartmontools là đủ để bảo vệ túi tiền và công sức của bạn. Nếu đang quản lý server, hãy SSH vào ngay và setup một lịch trình test hợp lý. Đừng để đến lúc dữ liệu biến mất mới hối hận, vì lúc đó thường là đã quá muộn.

