Câu chuyện thực: khi mất VM lúc 2 giờ sáng
Mình chạy homelab với Proxmox VE quản lý 12 VM và container — playground để test mọi thứ trước khi đưa lên production. Một lần mình update kernel trên VM chạy PostgreSQL, reboot xong không lên. Snapshot thì quên tạo. Kết quả: mất 3 tiếng loay hoay restore từ file backup thủ công cách đó cả tuần. Nếu hồi đó đã có PBS, toàn bộ quá trình restore chỉ mất khoảng 15 phút.
Từ hôm đó mình chuyển sang Proxmox Backup Server. Nếu bạn đang dùng Proxmox VE mà backup theo kiểu “nhớ thì làm, quên thì thôi” — bài này giúp bạn thiết lập backup tự động đàng hoàng, một lần cho xong.
Proxmox Backup Server là gì và tại sao nên dùng
PBS không phải tool backup generic — đây là phần mềm từ chính team Proxmox, xây dựng riêng cho hệ sinh thái Proxmox VE. So với backup thủ công bằng rsync hay Clonezilla, có mấy điểm khác hẳn:
- Incremental backup — chỉ lưu phần thay đổi so với lần trước. VM 50GB nhưng chỉ đổi 2GB thì chỉ upload 2GB
- Deduplication — loại bỏ dữ liệu trùng giữa các VM. Homelab mình tiết kiệm được ~65% dung lượng nhờ tính năng này
- Backup không downtime — VM vẫn chạy bình thường trong lúc PBS backup (live snapshot)
- Restore linh hoạt — restore cả VM hoặc chỉ lấy ra một file cụ thể bên trong backup
- Prune policy — tự động xóa backup cũ theo quy tắc đặt sẵn, không lo đầy ổ
Lợi thế lớn nhất với người dùng PVE: PBS tích hợp thẳng vào Web UI của Proxmox VE. Cấu hình, theo dõi, trigger backup thủ công — tất cả làm ngay trên giao diện quen thuộc, không cần mở thêm tab nào khác.
Cài đặt Proxmox Backup Server
Yêu cầu hệ thống
PBS phải chạy trên máy riêng biệt — tuyệt đối không cài chung hay chạy dưới dạng VM trên chính Proxmox VE đang cần backup. Lý do đơn giản: host chính lỗi thì PBS phải vẫn còn sống để restore.
- CPU: 2 core trở lên (x86_64)
- RAM: tối thiểu 2GB, khuyến nghị 4GB trở lên
- Storage: tính khoảng 1.5–2x tổng dung lượng VM cần backup
- OS: Debian 12 (PBS là Debian-based, cài từ ISO riêng)
Máy PBS trong homelab mình là một PC cũ: 4GB RAM, 2TB HDD. Backup 12 VM với retention 30 ngày chạy thoải mái, còn dư dung lượng.
Tải ISO và cài đặt
Tải file ISO PBS từ proxmox.com/en/downloads. Quá trình cài y chang Proxmox VE — boot USB, chọn ổ, đặt IP tĩnh, hostname, mật khẩu root. Không có gì bất ngờ.
# Sau khi cài xong, truy cập Web UI tại:
https://<PBS_IP>:8007
# Đăng nhập với:
# Username: root
# Realm: Linux PAM
# Password: mật khẩu đặt lúc cài
Giao diện PBS trông khá giống PVE. Đã quen Proxmox VE thì mất khoảng 5 phút để orientate xong.
Cấu hình chi tiết PBS và Proxmox VE
Tạo Datastore trên PBS
Datastore là nơi PBS chứa toàn bộ backup. Nên trỏ đến ổ đĩa dành riêng — đừng dùng chung ổ cài OS, kẻo đầy ổ thì cả hai thứ đều chết.
# Mount ổ đĩa backup (ví dụ /dev/sdb)
fdisk /dev/sdb # Tạo partition nếu ổ mới
mkfs.ext4 /dev/sdb1
mkdir -p /mnt/backup-disk
mount /dev/sdb1 /mnt/backup-disk
# Thêm vào /etc/fstab để tự mount khi reboot
echo "/dev/sdb1 /mnt/backup-disk ext4 defaults 0 2" >> /etc/fstab
Sau khi mount xong, trên PBS Web UI vào Administration → Datastore → Add Datastore:
- Name:
vm-backups - Backing Path:
/mnt/backup-disk
Kết nối PBS vào Proxmox VE
Trên Proxmox VE, vào Datacenter → Storage → Add → Proxmox Backup Server và điền:
- ID:
pbs-main - Server: IP của máy PBS (ví dụ
192.168.1.50) - Username:
root@pam - Datastore:
vm-backups - Fingerprint: copy từ PBS tại Dashboard → Show Fingerprint
# Hoặc thêm qua CLI trên node Proxmox VE:
pvesm add pbs pbs-main \
--server 192.168.1.50 \
--datastore vm-backups \
--username root@pam \
--password YourPBSPassword \
--fingerprint AA:BB:CC:DD:... # Lấy fingerprint từ PBS Web UI
Tạo Backup Job tự động
Vào Datacenter → Backup → Add trên Proxmox VE. Đây là bước cốt lõi — cấu hình xong là backup chạy không cần nhớ nữa.
- Storage: chọn
pbs-main - Schedule:
0 2 * * *— backup lúc 2 giờ sáng mỗi ngày - Selection: All (backup tất cả VM) hoặc chọn từng VM/CT cụ thể
- Mode: Snapshot — VM không bị tắt trong lúc backup
- Compression: Zstandard — nhanh, nén tốt, dùng luôn
- Send email to: điền email để nhận cảnh báo khi backup lỗi
# Chạy backup thủ công ngay để test (không cần đợi lịch)
vzdump 100 --storage pbs-main --mode snapshot --compress zstd
Cấu hình Prune Policy — tự dọn backup cũ
Không cấu hình prune thì ổ đĩa sẽ đầy sau vài tuần. Vào PBS Web UI: Datastore → vm-backups → Prune & GC.
Policy mình đang dùng cho homelab:
- Keep Last:
3— giữ 3 bản backup gần nhất - Keep Daily:
7— 1 bản/ngày trong 7 ngày qua - Keep Weekly:
4— 1 bản/tuần trong 4 tuần qua - Keep Monthly:
3— 1 bản/tháng trong 3 tháng qua
# Xem trước prune sẽ xóa gì (--dry-run: chưa xóa thật)
proxmox-backup-manager prune-datastore vm-backups \
--keep-last 3 \
--keep-daily 7 \
--keep-weekly 4 \
--keep-monthly 3 \
--dry-run
# Chạy Garbage Collection sau prune để thu hồi dung lượng thật sự
proxmox-backup-manager garbage-collection start vm-backups
Kiểm tra và Monitoring Backup
Xem log và trạng thái
PBS Web UI → Dashboard hiển thị tổng quan: deduplication ratio, dung lượng đã dùng, lần backup gần nhất. Vào Datastore → vm-backups → Content để xem danh sách backup từng VM theo ngày.
# Xem log backup trên PBS
journalctl -u proxmox-backup -n 50
# Trên Proxmox VE, xem task log vzdump
pvesh get /nodes/<node-name>/tasks --typefilter vzdump
# Liệt kê tất cả backup trong datastore
proxmox-backup-client list \
--repository root@[email protected]:vm-backups
Restore thử nghiệm — bước không được bỏ qua
Backup chưa test restore thì về mặt kỹ thuật coi như chưa có backup. Sau khi setup xong, mình luôn restore thử một VM vào ID mới để xác nhận data còn nguyên.
# Restore VM 100 thành VM mới với ID 200 để test
qmrestore pbs-main:backup/vm/100/2025-03-01T02:00:00Z 200 \
--storage local-lvm \
--unique # Tạo MAC address mới, tránh xung đột mạng
Boot VM test lên, kiểm tra data, xóa đi. Cả quá trình mất 10–15 phút — làm một lần để ngủ ngon về sau.
Notification và cảnh báo
PBS gửi email khi backup thất bại. Cấu hình SMTP tại Configuration → Notifications hoặc qua CLI:
# Cấu hình SMTP
proxmox-backup-manager smtp-config set \
--server smtp.gmail.com \
--port 587 \
--mode starttls \
--username [email protected] \
--password "app-password-here"
# Gửi email test
proxmox-backup-manager smtp-config test --email [email protected]
Theo dõi hiệu năng qua Dashboard
Dashboard PBS có mấy con số đáng xem thường xuyên:
- CPU/RAM usage trong quá trình đang backup
- Deduplication ratio — tỷ lệ tiết kiệm dung lượng (thường đạt 2x–4x)
- Backup size over time — theo dõi tốc độ tăng trưởng dữ liệu
Homelab mình hiện dedup ratio ~2.8x. 12 VM tổng gần 800GB raw, PBS chỉ chiếm ~290GB trên ổ — nhờ incremental kết hợp deduplication.
Một số lưu ý từ kinh nghiệm thực tế
- PBS phải chạy trên máy hoặc host vật lý riêng — không cài PBS dưới dạng VM trên chính Proxmox VE đang backup. Khi PVE chết, PBS phải còn sống
- Incremental backup đầu tiên luôn chậm vì phải đẩy toàn bộ dữ liệu — các lần sau nhanh hơn nhiều, chỉ upload phần thay đổi
- Network 1Gbps nội bộ là thoải mái cho backup ban đêm. Qua WiFi thì chậm và hay timeout
- Nhớ cấu hình no-subscription repo để nhận security update — enterprise repo báo lỗi nếu không có license
# Cấu hình repository no-subscription cho PBS
echo "deb http://download.proxmox.com/debian/pbs bookworm pbs-no-subscription" \
> /etc/apt/sources.list.d/pbs-no-subscription.list
apt update && apt dist-upgrade -y
Setup xong là bạn có backup chạy tự động mỗi đêm, dọn backup cũ theo lịch, email cảnh báo khi có vấn đề. Cứ update kernel, thử nghiệm thoải mái — worst case restore lại bản hôm qua, mất vài tiếng làm việc. Không còn mất ngủ rebuild từ đầu nữa.
