Nỗi đau khi quản lý backup hàng chục máy ảo
Anh em quản trị hệ thống chắc không lạ gì cảm giác “toát mồ hôi hột” khi một con VM quan trọng đột ngột hỏng, trong khi bản backup gần nhất đã từ… tuần trước. Mình đang vận hành một cụm homelab Proxmox với khoảng 15 máy ảo và container. Dù tính năng backup của Proxmox (PBS) rất mạnh, mình vẫn gặp khó khăn khi cần trích xuất nhanh vài file cấu hình nhỏ lẻ trong Windows, hoặc muốn một lớp bảo vệ độc lập hoàn toàn với Hypervisor.
Sau nhiều lần thử sai, mình chọn UrBackup. Đây là hệ thống sao lưu Client-Server mã nguồn mở cực kỳ tin cậy. Nó cho phép sao lưu Image (với Windows) và File (cho cả Windows lẫn Linux) với cơ chế tối ưu dung lượng rất ấn tượng.
So sánh các phương án backup phổ biến
Mỗi cách tiếp cận đều có ưu nhược điểm riêng. Việc hiểu rõ giúp anh em chọn đúng công cụ cho từng bài toán cụ thể:
1. Hypervisor-level Backup (như Proxmox Backup Server)
- Ưu điểm: Chụp ảnh toàn bộ máy ảo mà không cần cài thêm phần mềm bên trong (agentless).
- Nhược điểm: Việc mount file image 50-100GB chỉ để lấy lại một file văn bản thường rất chậm và tốn tài nguyên.
2. Script-based Backup (Rsync, Restic)
- Ưu điểm: Cực kỳ nhẹ, linh hoạt, là lựa chọn số 1 cho các server Linux thuần túy.
- Nhược điểm: Thiếu giao diện quản lý tập trung. Khi số lượng server lên đến 20-30 con, việc kiểm tra xem con nào đã backup thành công trở thành cơn ác mộng.
3. Client-Server Backup (UrBackup, Veeam)
- Ưu điểm: Theo dõi trạng thái qua Web UI, hỗ trợ sao lưu gia tăng (Incremental) giúp tiết kiệm băng thông mạng.
- Nhược điểm: Bắt buộc phải cài Agent lên máy khách. Tuy nhiên, Agent của UrBackup rất nhẹ và không gây treo máy.
Tại sao UrBackup lại đáng đồng tiền bát gạo?
Dù hoàn toàn miễn phí, những tính năng mà UrBackup mang lại thực sự vượt mong đợi của mình:
Điểm cộng lớn:
- Deduplication (Khử trùng lặp): Giả sử bạn có 10 máy ảo Windows 10 giống nhau. Thay vì tốn 300GB để lưu file hệ thống, UrBackup chỉ tốn khoảng 35GB cho bản gốc đầu tiên. Dung lượng ổ cứng được tiết kiệm đến 70-80%.
- Image Backup cho Windows: Sao lưu toàn bộ ổ C ngay khi máy đang chạy (Live backup). Khi cần, bạn có thể khôi phục lại qua mạng hoặc USB cứu hộ chỉ trong 15-20 phút.
- Web UI hiện đại: Dashboard liệt kê chi tiết máy nào đang online, dung lượng backup của từng máy và lịch sử các lần lỗi.
Hạn chế:
- Sao lưu Image trên Linux vẫn còn khoảng cách so với Windows, chủ yếu vẫn dựa vào sao lưu File.
- Giao diện cấu hình có quá nhiều thông số về thời gian lưu trữ (retention), dễ làm người mới cảm thấy bối rối.
Triển khai UrBackup Server với Docker
Để hệ thống gọn gàng và dễ di chuyển, mình luôn ưu tiên dùng Docker Compose. Dưới đây là cấu hình chuẩn để bạn triển khai ngay:
# Chuẩn bị môi trường
mkdir -p ~/urbackup/data ~/urbackup/backups
# Tạo file cấu hình
cat <<EOF > ~/urbackup/docker-compose.yml
version: '3.8'
services:
urbackup:
image: urbackup/urbackup-server:latest
container_name: urbackup-server
restart: unless-stopped
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Ho_Chi_Minh
volumes:
- ./data:/var/urbackup
- ./backups:/media/backups
network_mode: "host"
EOF
# Khởi động hệ thống
cd ~/urbackup && docker compose up -d
Mẹo nhỏ: Chế độ network_mode: "host" giúp Server tự động nhận diện các Client trong mạng LAN mà không cần khai báo IP thủ công. Nếu bạn dùng trên Cloud (AWS, Azure), hãy nhớ mở port 55413 đến 55415 trên Firewall.
Sau khi khởi động, hãy truy cập http://<IP-Cua-Ban>:55414. Việc đầu tiên bạn cần làm là vào Settings -> Users để thiết lập mật khẩu Admin ngay lập tức.
Cài đặt Agent cho máy khách
Với máy Windows
Bạn chỉ cần tải bản cài đặt (.msi) từ trang chủ và nhấn Next. Nếu máy khách và server cùng mạng LAN, chúng sẽ tự “bắt sóng” nhau. Trường hợp máy khách nằm ở mạng khác, hãy chuột phải vào biểu tượng UrBackup ở khay hệ thống, chọn Settings và điền địa chỉ IP của Server vào mục Internet Server Designator.
Với máy Linux (Ubuntu/Debian)
UrBackup cung cấp script cài đặt cực nhanh qua dòng lệnh. Trên Web Admin, bạn chọn Add Client -> Add new Internet client để lấy mã cài đặt riêng cho từng máy:
# Lệnh mẫu cài đặt nhanh
TF=$(mktemp) && wget "http://<IP-SERVER>:55414/x?a=download_client&lang=en&clientid=1&authkey=xxxx" -O "$TF" && sudo sh "$TF"
Để thêm một thư mục dữ liệu cụ thể (ví dụ database hoặc code), hãy dùng lệnh:
urbackupclientctl add-backupdir -x -f -d /var/www/data_important
Kinh nghiệm tối ưu thực tế
Qua quá trình vận hành thực tế, mình rút ra 3 quy tắc vàng để hệ thống chạy mượt mà:
- Sử dụng File System thông minh: Hãy lưu trữ backup trên phân vùng ZFS hoặc Btrfs. Sự kết hợp giữa nén dữ liệu của File System và deduplication của UrBackup có thể giúp bạn tiết kiệm tới 60% dung lượng ổ cứng so với Ext4 thông thường.
- Tự động hóa việc dọn dẹp: Đừng để ổ cứng bị đầy một cách lãng phí. Hãy vào Settings -> Archiving để thiết lập quy tắc tự động xóa các bản backup cũ sau 30 hoặc 60 ngày.
- Client-side hashing: Hãy bật tính năng này để máy khách tự tính mã hash trước khi gửi dữ liệu. Nếu file đã tồn tại trên server, máy khách sẽ không cần upload lại, giúp giảm tải băng thông mạng đáng kể.
Thiết lập UrBackup chỉ mất 15 phút, nhưng nó mang lại sự an tâm tuyệt đối cho hệ thống của bạn. Hãy nhớ kiểm tra log hàng tuần để đảm bảo mọi thứ vẫn đang vận hành đúng kế hoạch.

