Đừng để ổ cứng “đột tử” mới bắt đầu cuống cuồng cứu dữ liệu
Hồi mới vào nghề, mình từng quản lý một dàn server lưu trữ 24 khay ổ cứng chạy liên tục. Cứ mỗi khi nghe tin server chạy chậm hoặc có tiếng kêu “lạch cạch” lạ tai, mình lại phải lọ mọ SSH vào từng con máy.
Sau đó là chuỗi thao tác gõ lệnh smartctl -a /dev/sda rồi căng mắt đọc đống dữ liệu thô (raw data) để tìm xem có chỉ số nào bất thường không. Cực nhất là lúc sếp hỏi: “Tình trạng ổ cứng dạo này ổn không em?”, mình hoàn toàn không có một cái biểu đồ hay báo cáo trực quan nào để đưa ra ngay lập tức.
Nhiều anh em sẽ thắc mắc: “Sao không dùng Zabbix hay Prometheus cho chuyên nghiệp?”. Thực tế mình đã thử, nhưng việc bóc tách từng thuộc tính S.M.A.R.T (như Reallocated Sector Count hay Power On Hours) rồi vẽ Dashboard trên Grafana tốn quá nhiều thời gian. Đó là lý do mình chuyển sang dùng Scrutiny. Công cụ này chỉ làm đúng một việc nhưng làm cực kỳ xuất sắc: Giám sát sức khỏe ổ cứng qua giao diện Web hiện đại.
Tại sao bạn nên chọn Scrutiny thay vì các cách truyền thống?
Trước khi bắt tay vào cài đặt, hãy cùng nhìn lại các phương pháp giám sát phổ biến để thấy sự khác biệt:
- Dùng smartmontools (CLI): Đây là gốc rễ của mọi công cụ. Nó nhẹ và có sẵn trên Linux nhưng chỉ hợp để kiểm tra nhanh. Nếu quản lý từ 10 ổ cứng trở lên, việc SSH vào từng máy sẽ trở thành cơn ác mộng.
- Zabbix / Prometheus: Rất mạnh cho việc giám sát tổng thể hạ tầng. Tuy nhiên, để cấu hình bóc tách chi tiết thông số đĩa cứng, bạn phải cài thêm Agent, viết Script và tùy chỉnh Regex khá phức tạp.
- Scrutiny: Kết hợp sức mạnh của
smartmontoolsvới một giao diện Web tinh gọn. Nó tự động phân tích chỉ số, so sánh với ngưỡng an toàn từ nhà sản xuất và đưa ra cảnh báo Pass/Fail rõ ràng. Đặc biệt, mô hình Hub-Spoke giúp bạn gom dữ liệu từ 10 server về một màn hình duy nhất.
Đánh giá nhanh Scrutiny
Ưu điểm:
- Giao diện Web tối giản, hiển thị nhiệt độ và tuổi thọ ổ cứng theo thời gian thực.
- Tương thích tốt với HDD, SSD và cả các dòng NVMe đời mới.
- Triển khai cực nhanh chỉ với một file Docker Compose.
- Hỗ trợ bắn thông báo qua Telegram, Slack, Discord hoặc Email ngay khi có lỗi.
Nhược điểm:
- Cần quyền root hoặc chế độ
privilegedtrong Docker để đọc dữ liệu phần cứng trực tiếp.
Triển khai Scrutiny bằng Docker Compose
Mình luôn ưu tiên Docker vì tính đóng gói sạch sẽ và dễ nâng cấp. Scrutiny gồm hai phần: Web (Hub) để lưu trữ dữ liệu và Collector để thu thập thông số. Nếu chỉ dùng cho một máy duy nhất, bạn có thể chạy bản Omnibus (tất cả trong một).
Bước 1: Tạo file cấu hình
Bạn tạo một thư mục mới và lưu nội dung sau vào file docker-compose.yml:
version: '3.5'
services:
scrutiny:
container_name: scrutiny
image: ghcr.io/analogj/scrutiny:master-omnibus
restart: always
ports:
- "8080:8080" # Cổng truy cập Web UI
volumes:
- /run/udev:/run/udev:ro
- ./scrutiny/config:/opt/scrutiny/config
- ./scrutiny/data:/opt/scrutiny/influxdb
devices:
- "/dev/sda:/dev/sda"
- "/dev/sdb:/dev/sdb"
environment:
- SCRUTINY_WEB_INFLUXDB_HOST=localhost
Mẹo nhỏ: Nếu server có quá nhiều ổ cứng, thay vì liệt kê từng thiết bị trong mục devices, bạn có thể dùng privileged: true và map /dev:/dev. Tuy nhiên, hãy ưu tiên liệt kê cụ thể để tăng tính bảo mật cho hệ thống.
Bước 2: Khởi động hệ thống
Kích hoạt container bằng lệnh quen thuộc:
docker-compose up -d
Sau khoảng 30 giây, hãy mở trình duyệt và truy cập http://IP-Server:8080. Bạn sẽ thấy một Dashboard hiện đại liệt kê đầy đủ danh sách ổ cứng kèm trạng thái sức khỏe hiện tại.
Giám sát tập trung nhiều Server (Mô hình Hub & Spoke)
Đây là tính năng đáng giá nhất cho dân Sysadmin. Giả sử bạn có 5 server chạy storage, bạn không cần cài 5 cái Dashboard. Chỉ cần cài 1 bản Scrutiny Hub làm trung tâm và các bản Scrutiny Collector siêu nhẹ trên các máy vệ tinh.
Trên các máy vệ tinh, bạn chạy lệnh Docker sau:
docker run -d \
--name scrutiny-collector \
--device=/dev/sda \
-e SCRUTINY_API_ENDPOINT=http://IP-SERVER-CHINH:8080 \
ghcr.io/analogj/scrutiny:master-collector
Collector sẽ định kỳ quét thông số S.M.A.R.T rồi đẩy về server chính. Giờ đây, bạn chỉ cần quản lý một tab trình duyệt duy nhất cho toàn bộ hạ tầng của mình.
Thiết lập cảnh báo qua Telegram
Hệ thống giám sát sẽ vô nghĩa nếu bạn không biết lúc nào nó hỏng. Mình từng trả giá đắt vì chủ quan không check Dashboard thường xuyên khiến ổ cứng chết hẳn mà không hay biết. Hãy cấu hình thông báo ngay.
Mở file scrutiny.yaml trong thư mục config và thêm cấu hình Telegram:
notify:
urls:
- "tgram://bottoken/chatid"
# Scrutiny hỗ trợ chuẩn Apprise, tương thích với hầu hết các app chat hiện nay
Khi nhiệt độ vượt ngưỡng (thường là 55°C) hoặc chỉ số Pending_Sector tăng, Scrutiny sẽ lập tức bắn tin nhắn vào điện thoại. Cảm giác cực kỳ an tâm!
3 lưu ý “xương máu” khi theo dõi sức khỏe ổ cứng
Sau nhiều năm lăn lộn với hàng trăm TB dữ liệu, mình rút ra vài kinh nghiệm sau:
- Đừng quá lo lắng về Power_On_Hours: Một chiếc HDD chạy 30.000 giờ (hơn 3 năm) vẫn có thể rất tốt. Hãy chú trọng vào
Reallocated_Sector_Count. Nếu con số này nhảy từ 0 lên 1, đó là dấu hiệu bạn nên chuẩn bị sẵn ổ cứng dự phòng. - Nhiệt độ là sát thủ thầm lặng: Đa số hư hỏng vật lý đến từ việc tản nhiệt kém. Nếu ổ cứng liên tục duy trì trên 50°C, hãy kiểm tra lại luồng gió (airflow) trong case ngay lập tức.
- Đặc thù của NVMe: Các dòng SSD NVMe không dùng các chỉ số giống HDD. Hãy để ý đến
Percentage Used. Khi con số này tiến gần mức 100%, chip nhớ đã hết vòng đời ghi xóa và bạn cần thay thế sớm.
Triển khai Scrutiny giúp mình thoát khỏi những công việc thủ công nhàm chán. Thay vì ngồi gõ lệnh check log, mình dành thời gian đó để tối ưu hệ thống, trong khi vẫn đảm bảo dữ liệu luôn nằm trong vùng an toàn.

