Sức khỏe ổ cứng: Đánh giá 6 tháng sử dụng Scrutiny trên Docker trong môi trường thực tế

HomeLab tutorial - IT technology blog
HomeLab tutorial - IT technology blog

Bảo vệ dữ liệu trước khi tiếng “cạch cạch” bắt đầu

Sáu tháng trước, tôi thức dậy và thấy mảng RAID-Z2 trên máy chủ media chính của mình bị lỗi (degraded). Một trong những ổ Western Digital Red 8TB cũ kỹ của tôi đã xuất hiện hơn 1.400 sector được phân bổ lại (reallocated sectors) chỉ sau một đêm. Sự dư thừa dữ liệu đã cứu tôi, nhưng quá trình rebuild kéo dài 18 giờ là một hồi chuông cảnh tỉnh. Chiến lược giám sát của tôi hoàn toàn mang tính thụ động. Tôi chỉ dựa vào việc kiểm tra thủ công ngẫu nhiên và các email hệ thống thường kết thúc trong hòm thư rác.

Sự cố đó đã dẫn tôi đến với Scrutiny. Sau nửa năm chạy trong HomeLab thực tế, nó đã trở thành một phần không thể thiếu trong hệ thống của tôi. Nó loại bỏ sự phức tạp của dữ liệu S.M.A.R.T. (Self-Monitoring, Analysis, and Reporting Technology) thô, biến các giá trị thập lục phân (hexadecimal) khó hiểu thành một bảng điều khiển (dashboard) trực quan với các cảnh báo tự động.

Bạn theo dõi sức khỏe ổ đĩa bằng cách nào?

Trước khi quyết định chọn Scrutiny, tôi đã xem xét ba cách phổ biến để giám sát phần cứng. Lựa chọn đúng đắn tùy thuộc vào việc bạn quản lý hai ổ đĩa hay hai mươi ổ.

1. CLI thủ công (smartmontools)

Đây là phương pháp tiêu chuẩn. Bạn cài đặt smartmontools và chạy smartctl -a /dev/sda khi cảm thấy có điều gì đó không ổn. Nó nhẹ và không ảnh hưởng đến tài nguyên hệ thống. Tuy nhiên, nó không cung cấp lịch sử. Nếu một ổ đĩa đạt tới 55°C trong quá trình quét dữ liệu (heavy scrub) khi bạn đang ngủ, bạn sẽ bỏ lỡ thông tin đó. Nó cũng trở thành một gánh nặng khi bạn có nhiều máy chủ cần kiểm tra.

2. Thông báo tích hợp của NAS

TrueNAS và Synology cung cấp các cảnh báo email khá tốt cho các bài kiểm tra ngắn (short tests) bị thất bại. Điều này hoạt động tốt cho các thiết bị cụ thể đó. Nhưng trong một HomeLab hiện đại với các node Proxmox, Raspberry Pi và các host Docker độc lập, việc giám sát của bạn sẽ bị phân tán. Bạn không nên phải kiểm tra năm cổng thông tin web khác nhau để biết liệu bộ lưu trữ của mình có an toàn hay không.

3. Bảng điều khiển Scrutiny

Scrutiny đóng vai trò như một trung tâm chỉ huy. Nó sử dụng một “Collector” để thu thập dữ liệu phần cứng và một “Web UI” để lưu trữ dữ liệu đó trong cơ sở dữ liệu InfluxDB. Nó theo dõi mọi thuộc tính theo thời gian. Nếu “Reallocated Sector Count” của bạn tăng chỉ một hoặc hai mỗi tuần, Scrutiny sẽ gắn cờ xu hướng đó. Bạn có thể phát hiện một ổ đĩa sắp hỏng trước khi nó thực sự “chết” hàng tháng trời.

Nhận định sau 6 tháng: Ưu và Nhược điểm

Mọi dịch vụ bạn thêm vào máy chủ đều tiêu tốn tài nguyên và thời gian. Đây là cách Scrutiny thể hiện sau quá trình thử nghiệm dài hạn.

Ưu điểm

  • Bản đồ xu hướng trực quan: Xem biểu đồ biến động nhiệt độ giúp bạn phát hiện các vấn đề về luồng không khí. Tôi phát hiện ra một ổ đĩa ở khay dưới cùng luôn nóng hơn 5°C so với những ổ khác.
  • Lọc thuộc tính thông minh: Nó phân tách các lỗi nghiêm trọng khỏi các thông tin thông thường. Bạn sẽ không bị “đau tim” vì chỉ số “Power-On Hours” (số giờ hoạt động) cao.
  • Cảnh báo linh hoạt: Tích hợp với Discord, Telegram và Gotify. Tôi đã nhận được thông báo Discord ngay khi một ổ phụ chạm ngưỡng cảnh báo 45°C trong một đợt nắng nóng.
  • Triển khai nhanh chóng: Sử dụng Docker có nghĩa là bạn không phải bận tâm đến các phụ thuộc cấp máy chủ (host-level) hoặc các phiên bản Python.

Nhược điểm

  • Quyền hạn phần cứng: Container cần chế độ --privileged để giao tiếp với bộ điều khiển đĩa. Đây là sự đánh đổi giữa bảo mật và chức năng mà một số người dùng có thể không thích.
  • Mức chiếm dụng tài nguyên: Vì nó chạy một instance InfluxDB nội bộ, nó sử dụng khoảng 200MB đến 300MB RAM. Con số này nhiều hơn một cron job đơn giản, nhưng vẫn không đáng kể đối với hầu hết các hệ thống hiện đại.

Chiến lược triển khai lý tưởng

Đối với hầu hết người dùng, Omnibus Docker Image là lựa chọn tốt nhất. Nó đóng gói UI, API và Database vào một container duy nhất. Nếu bạn có thiết lập đa máy chủ, bạn có thể chạy phiên bản đầy đủ trên node chính và phiên bản “Collector-only” trên các node nhỏ hơn. Tất cả dữ liệu sau đó sẽ đổ về một bảng điều khiển duy nhất.

Tôi khuyên bạn nên sử dụng Docker Compose. Nó giúp việc ánh xạ ổ đĩa rõ ràng và đảm bảo bạn có thể di chuyển thiết lập của mình sang máy chủ mới trong vài giây. Cách này gọn gàng hơn nhiều so với việc quản lý các lệnh CLI dài dằng dặc.

Từng bước: Triển khai Scrutiny

Chúng ta sẽ sử dụng image latest-omnibus để chạy mọi thứ cùng lúc. Hãy làm theo các bước sau để thiết lập trên host Docker của bạn.

1. Tổ chức các thư mục

Bắt đầu bằng việc tạo một không gian riêng cho các file cấu hình và cơ sở dữ liệu của Scrutiny.

mkdir -p ~/homelab/scrutiny/config
mkdir -p ~/homelab/scrutiny/influxdb
cd ~/homelab/scrutiny

2. Cấu hình Docker Compose

Tạo một file docker-compose.yml. Lưu ý phần devicesvolumes. Chúng cho phép container “nhìn thấy” phần cứng vật lý của máy bạn.

version: '3.8'

services:
  scrutiny:
    container_name: scrutiny
    image: ghcr.io/analogj/scrutiny:latest-omnibus
    restart: unless-stopped
    ports:
      - "8080:8080"
    volumes:
      - /run/udev:/run/udev:ro
      - ./config:/opt/scrutiny/config
      - ./influxdb:/opt/scrutiny/influxdb
      - /dev:/dev
    privileged: true
    environment:
      - TZ=America/New_York

3. Khởi động

Kích hoạt dịch vụ chỉ với một lệnh duy nhất:

docker-compose up -d

Truy cập http://your-server-ip:8080. Hãy đợi một phút để hệ thống thực hiện lần quét đầu tiên. Các ổ đĩa của bạn sẽ xuất hiện với trạng thái “Healthy” nếu mọi thứ hoạt động chính xác.

4. Thiết lập cảnh báo (Đừng bỏ qua bước này)

Một bảng điều khiển chỉ hữu ích nếu bạn thực sự xem nó. Để nhận thông báo đẩy, hãy tạo một file scrutiny.yaml trong thư mục config của bạn. Đây là một mẫu webhook Discord đơn giản:

version: 1
notify:
  urls:
    - "discord://webhookid@webhooktoken"
  threshold:
    status: ["failed", "warning"]
    metrics: true

Khởi động lại container bằng lệnh docker-compose restart scrutiny để áp dụng các thay đổi. Giờ đây, bạn có thể yên tâm khi biết rằng máy chủ sẽ “vỗ vai” báo cho bạn nếu một ổ đĩa bắt đầu gặp trục trặc.

Lưu ý về NVMe và RAID

Trong quá trình thử nghiệm, tôi thấy rằng các ổ NVMe và các ổ đĩa nằm sau card RAID phần cứng (như bộ điều khiển Dell PERC) có thể hơi rắc rối. Scrutiny tự động phát hiện khá tốt, nhưng đôi khi bạn có thể cần tạo file collector.yaml để chỉ định loại thiết bị như sat hoặc nvme. Đối với 95% người dùng sử dụng ổ SATA tiêu chuẩn hoặc HBA ở chế độ IT mode, nó hoạt động hoàn hảo ngay khi cài đặt.

Lời kết

Theo dõi ổ cứng không hẳn là một sở thích thú vị. Tuy nhiên, đó là nhiệm vụ bảo trì quan trọng nhất trong bất kỳ HomeLab nào. Scrutiny đạt được sự cân bằng hoàn hảo giữa một công cụ đơn giản và một trình phân tích dữ liệu chuyên sâu. Kể từ khi cài đặt, tôi đã thay thế được hai ổ đĩa có dấu hiệu hỏng hóc sớm. Tôi đã thực hiện việc đó theo lịch trình của riêng mình, thay vì trong một tình huống khẩn cấp lúc 2 giờ sáng. Nếu bạn quan tâm đến dữ liệu của mình, hãy dành 20 phút để thiết lập công cụ này vào cuối tuần này.

Share: