Bạn đang sử dụng rsnapshot để sao lưu dữ liệu từ máy trạm Ubuntu lên Synology NAS? Bạn gặp phải tình trạng phân vùng gốc bị đầy khi NAS không khả dụng, do rsnapshot tiếp tục ghi dữ liệu vào thư mục mount tạm thời? Bài viết này sẽ cung cấp giải pháp toàn diện để tự động phát hiện tình trạng NAS mất kết nối, gửi cảnh báo, dừng sao lưu và tự động mount lại NAS khi nó hoạt động trở lại, đảm bảo quá trình sao lưu diễn ra liên tục và an toàn.
Khi cấu hình rsnapshot sao lưu lên một thư mục được mount từ Synology NAS qua NFS, nếu NAS gặp sự cố (ví dụ: bảo trì, cập nhật phần mềm hoặc mất điện), thư mục mount đó sẽ trở thành một thư mục cục bộ trên phân vùng gốc. Rsnapshot sẽ tiếp tục sao lưu vào thư mục này, nhanh chóng làm đầy phân vùng gốc và gây ra các vấn đề về hệ thống. Điều này đặc biệt nghiêm trọng nếu bạn không theo dõi dung lượng ổ cứng thường xuyên.
Để giải quyết vấn đề này, chúng ta cần một cơ chế tự động để:
Chúng ta sẽ sử dụng lệnh `mountpoint` để kiểm tra xem thư mục NAS đã được mount hay chưa. Lệnh này sẽ trả về true nếu thư mục được mount và false nếu không. Đây là một phương pháp đáng tin cậy hơn so với việc chỉ kiểm tra sự tồn tại của thư mục.
Ví dụ:
if [[ ! mountpoint -q /synology ]]; then
echo "NAS không được mount!"
else
echo "NAS đã được mount."
fi
Chúng ta sẽ tạo một script để thực hiện các hành động sau:
Ví dụ script (lưu vào `/usr/local/bin/check_nas_mount.sh`):
#!/bin/bash
MOUNT_POINT="/synology"
EMAIL_RECIPIENT="your_email@example.com"
if [[ ! mountpoint -q "$MOUNT_POINT" ]]; then
echo "NAS không được mount! Đang cố gắng mount lại..."
# Gửi email cảnh báo (cần cài đặt mailutils hoặc ssmtp)
echo "NAS không khả dụng! Đang thử mount lại." | mail -s "Cảnh báo: Synology NAS mất kết nối" "$EMAIL_RECIPIENT"
mount "$MOUNT_POINT"
if [[ mountpoint -q "$MOUNT_POINT" ]]; then
echo "Mount NAS thành công!"
# Gửi email thông báo thành công
echo "Synology NAS đã được mount lại thành công." | mail -s "Thông báo: Synology NAS đã hoạt động trở lại" "$EMAIL_RECIPIENT"
else
echo "Không thể mount NAS!"
echo "Không thể mount NAS!" | mail -s "Lỗi: Không thể mount Synology NAS" "$EMAIL_RECIPIENT"
fi
fi
**Lưu ý:** Thay đổi `MOUNT_POINT` và `EMAIL_RECIPIENT` cho phù hợp với cấu hình của bạn. Đảm bảo script có quyền thực thi (`chmod +x /usr/local/bin/check_nas_mount.sh`). Bạn cũng cần cài đặt `mailutils` hoặc `ssmtp` để có thể gửi email từ command line.
Chúng ta sẽ sử dụng cron để chạy script này định kỳ, ví dụ mỗi 5 phút. Mở file crontab bằng lệnh `crontab -e` và thêm dòng sau:
*/5 * * * * /usr/local/bin/check_nas_mount.sh
Dòng này sẽ chạy script `/usr/local/bin/check_nas_mount.sh` mỗi 5 phút.
Bạn có thể tích hợp việc kiểm tra và mount NAS vào cron job của rsnapshot. Ví dụ, bạn có thể thêm điều kiện kiểm tra mount trước khi chạy rsnapshot:
0 6,10,14,16 * * * root if ! mountpoint -q /synology; then mount /synology; fi && /usr/bin/rsnapshot hourly
Điều này đảm bảo rằng rsnapshot chỉ chạy nếu NAS đã được mount.
Bằng cách triển khai các bước trên, bạn có thể tự động hóa quá trình kiểm tra và mount lại Synology NAS, ngăn chặn tình trạng rsnapshot làm đầy phân vùng gốc khi NAS không khả dụng. Điều này giúp đảm bảo quá trình sao lưu diễn ra liên tục, bảo vệ dữ liệu của bạn và giảm thiểu sự can thiệp thủ công.
Hãy nhớ rằng việc sao lưu dữ liệu là một phần quan trọng của việc bảo trì hệ thống. Việc chủ động giải quyết các vấn đề tiềm ẩn như thế này sẽ giúp bạn tránh được những rủi ro không đáng có.
Bài viết liên quan