Cài đặt Server

Hướng dẫn Restore Proxmox Server từ Backup

Tổng quan tình huống

  • Server gốc: Proxmox + VMs cài trên SSD 1TB chính
  • Backup storage: SSD 1TB riêng biệt (nvme0n1p1) chứa backup
  • Backup method:
  • Proxmox config backup bằng rclone
  • VM backup bằng Proxmox Web UI (vzdump)
  • Cloud backup bằng Duplicati lên Google Drive
  • Vấn đề: System crash, cần cài mới và restore toàn bộ

Chuẩn bị

Hardware layout sau khi cài mới:

  • sda: SSD Proxmox OS mới
  • sdb: SSD trống (dùng làm VM storage)
  • nvme0n1p1: SSD backup (chứa toàn bộ backup data)

Bước 1: Kiểm tra và Mount Backup Storage

Xác định cấu trúc ổ đĩa

lsblk -f
fdisk -l

Mount SSD backup

# Tạo mount point
mkdir -p /mnt/backup-disk

# Mount SSD backup (nvme0n1p1 chứa backup)
mount /dev/nvme0n1p1 /mnt/backup-disk

# Kiểm tra nội dung backup
ls -la /mnt/backup-disk/

Cấu trúc backup thường có:

  • dump/ – Backup VMs từ Proxmox
  • proxmox_host_config/ – Config Proxmox từ rclone
  • images/, iso/, template/ – Files hỗ trợ

Bước 2: Setup Storage trong Proxmox

Thêm storage vào Proxmox

# Thêm backup storage
pvesm add dir backup-disk --path /mnt/backup-disk --content backup,iso,vztmpl

# Setup VM storage trên SSD riêng
mkdir -p /mnt/vm-storage
mount /dev/sdb1 /mnt/vm-storage
pvesm add dir vm-storage --path /mnt/vm-storage --content images,rootdir

# Kiểm tra storage đã add
pvesm status

Cấu hình auto-mount

# Thêm vào fstab
echo "/dev/nvme0n1p1 /mnt/backup-disk ext4 defaults 0 2" >> /etc/fstab
echo "/dev/sdb1 /mnt/vm-storage ext4 defaults 0 2" >> /etc/fstab

# Test auto mount
mount -a
df -h

Bước 3: Restore Config Proxmox (Tùy chọn)

Kiểm tra backup config

# Xem nội dung backup config
tar -tzf /mnt/backup-disk/proxmox_host_config/catan-host-config-backup-YYYY-MM-DD*.tar.gz | head -20

Restore config (cẩn thận)

# Dừng services
systemctl stop pve-cluster pvedaemon pveproxy pvestatd pvescheduler

# Backup config hiện tại
cp -r /etc/pve /etc/pve.backup-new-install

# Restore từ backup
cd /
tar -xzf /mnt/backup-disk/proxmox_host_config/catan-host-config-backup-YYYY-MM-DD*.tar.gz

# Khởi động services
systemctl start pve-cluster pvedaemon pveproxy pvestatd pvescheduler

Lưu ý: Restore config có thể gây lỗi fstab, cần kiểm tra sau khi reboot.

Bước 4: Restore Virtual Machines

Kiểm tra backup VMs có sẵn

# Liệt kê backup VMs mới nhất
ls -la /mnt/backup-disk/dump/vzdump-qemu-*$(date +%Y_%m_%d)* 2>/dev/null
ls -la /mnt/backup-disk/dump/vzdump-qemu-*2025_09_12* # Backup cụ thể

Restore từng VM

Qua Web UI (dễ nhất):

  1. Datacenter → Storage → backup-disk → Backups
  2. Chọn backup file mới nhất
  3. Click Restore
  4. Cài đặt:
  • VM ID: Giữ nguyên ID cũ
  • Storage: vm-storage (hoặc storage mong muốn)
  • Unique: KHÔNG tích (để giữ config gốc)
  • Start after restore: Tùy chọn

Qua CLI (nhanh hơn):

# Restore từng VM với backup mới nhất
qmrestore /mnt/backup-disk/dump/vzdump-qemu-100-YYYY_MM_DD*.vma.zst 100 --storage vm-storage
qmrestore /mnt/backup-disk/dump/vzdump-qemu-101-YYYY_MM_DD*.vma.zst 101 --storage vm-storage
qmrestore /mnt/backup-disk/dump/vzdump-qemu-102-YYYY_MM_DD*.vma.zst 102 --storage vm-storage

Script restore tất cả VMs

#!/bin/bash
# Script restore tất cả VMs từ backup mới nhất

BACKUP_DIR="/mnt/backup-disk/dump"
STORAGE="vm-storage"
BACKUP_DATE="2025_09_12" # Thay đổi ngày backup

echo "=== Auto Restore All VMs ==="

# Restore các VM với backup ngày cụ thể
for vm_id in 100 101 102 103 104; do
    backup_file=$(ls $BACKUP_DIR/vzdump-qemu-${vm_id}-${BACKUP_DATE}*.vma.zst 2>/dev/null | head -1)

    if [[ -f "$backup_file" ]]; then
        echo "Restoring VM $vm_id from $(basename $backup_file)"
        qmrestore "$backup_file" $vm_id --storage $STORAGE

        if [ $? -eq 0 ]; then
            echo "✓ VM $vm_id restored successfully"
        else
            echo "✗ Failed to restore VM $vm_id"
        fi
        sleep 10
    else
        echo "! No backup found for VM $vm_id"
    fi
done

echo "=== Restore completed! ==="

Restore LXC Containers

# Restore container
pct restore 102 /mnt/backup-disk/dump/vzdump-lxc-102-YYYY_MM_DD*.tar.zst --storage vm-storage

Bước 5: Khởi động và Kiểm tra VMs

Khởi động VMs

# Xem danh sách VMs
qm list
pct list

# Khởi động từng VM
qm start 100
qm start 101
qm start 102
qm start 103
qm start 104

# Khởi động containers
pct start 102

# Kiểm tra status
qm list
pct list

Script khởi động tất cả

# Khởi động tất cả VMs
for vm in $(qm list | grep -v VMID | awk '{print $1}'); do
    echo "Starting VM $vm..."
    qm start $vm
    sleep 20
done

# Khởi động tất cả containers
for ct in $(pct list | grep -v VMID | awk '{print $1}'); do
    echo "Starting CT $ct..."
    pct start $ct
    sleep 15
done

Bước 6: Xử lý Sự cố Thường gặp

Lỗi ISO file không tồn tại

# Kiểm tra VM config
qm config <VM_ID>

# Xóa CD/DVD drive
qm set <VM_ID> --delete ide2
# Hoặc set thành none
qm set <VM_ID> --ide2 none,media=cdrom

Lỗi CSRF token trong Web UI

  • Refresh trang hoặc đăng nhập lại
  • Sử dụng CLI thay vì Web UI khi cần

Lỗi storage mount

# Kiểm tra mount points
df -h

# Remount nếu cần
umount /mnt/backup-disk
mount /dev/nvme0n1p1 /mnt/backup-disk

# Refresh storage trong Proxmox
pvesm set backup-disk --disable
pvesm set backup-disk --enable

Lỗi fstab sau khi restore config

# Vào emergency mode và edit fstab
mount -o remount,rw /
nano /etc/fstab

# Xóa các dòng có:
# - UUID không đúng
# - Mount point không tồn tại
# - Entry trùng lặp

# Chỉ giữ các dòng cần thiết:
/dev/pve/root / ext4 errors=remount-ro 0 1
/dev/pve/swap none swap sw 0 0
/dev/sdb1 /mnt/vm-storage ext4 defaults 0 2
/dev/nvme0n1p1 /mnt/pve/BACKUP-CATAN ext4 defaults 0 2

Bước 7: Khôi phục Backup System

Cài đặt lại Duplicati

# Download và cài đặt
wget https://updates.duplicati.com/beta/duplicati_2.0.7.1-1_all.deb
dpkg -i duplicati_2.0.7.1-1_all.deb

# Enable service
systemctl enable duplicati
systemctl start duplicati

# Truy cập Web UI: http://server-ip:8200

Cấu hình backup schedule mới

  1. Proxmox backup jobs: Datacenter → Backup → Add
  2. Duplicati jobs: Cấu hình backup lên Google Drive
  3. Test backup: Chạy thử backup để đảm bảo hoạt động

Bước 8: Khôi phục Users

Tạo lại PAM users bị thiếu

# Kiểm tra user hiện tại
cat /etc/pve/user.cfg

# Tạo lại user admin PAM nếu cần
useradd -m -s /bin/bash admin
passwd admin
usermod -aG sudo admin

# Test login
id admin
su - admin

Checklist Hoàn thành Restore

  • [ ] Mount backup storage thành công
  • [ ] Add storage vào Proxmox
  • [ ] Restore config Proxmox (nếu cần)
  • [ ] Restore tất cả VMs từ backup
  • [ ] Restore containers từ backup
  • [ ] Khởi động thành công tất cả VMs/containers
  • [ ] Kiểm tra network connectivity của VMs
  • [ ] Khôi phục backup system (Duplicati)
  • [ ] Cấu hình lại backup schedule
  • [ ] Tạo lại PAM users thiếu
  • [ ] Test backup mới hoạt động
  • [ ] Cleanup: xóa backup files cũ nếu cần

Lưu ý Quan trọng

  1. Luôn backup config hiện tại trước khi restore config cũ
  2. Test restore trên VM nhỏ trước khi restore tất cả
  3. Kiểm tra fstab sau khi restore config để tránh lỗi boot
  4. Sử dụng backup mới nhất để tránh mất dữ liệu
  5. Verify backup integrity bằng zstd -t trước khi restore
  6. Document changes so với setup cũ
  7. Test full system sau khi restore hoàn tất

Backup Prevention cho lần sau

  1. Backup config thường xuyên với script tự động
  2. Test restore định kỳ để đảm bảo backup hoạt động
  3. Giữ multiple backup copies (local + cloud)
  4. Document system configuration chi tiết
  5. Monitor backup jobs để phát hiện lỗi sớm
  6. Keep system updated nhưng test trước trên lab