Lý Thuyết Cốt Lõi
1. Data Protection Options cho Azure VM
Azure cung cấp nhiều lớp bảo vệ dữ liệu VM khác nhau. Mỗi option có mục đích riêng — không phải một giải pháp thay thế toàn bộ cho nhau.
| Option | Mục đích | RPO | RTO |
|---|---|---|---|
| VM Snapshot | Điểm khôi phục tức thì trước khi thay đổi lớn | Tức thì | Phút |
| Azure Backup | Backup định kỳ, retention dài hạn, crash-consistent | 24h (daily) | Giờ |
| Azure Site Recovery | DR liên tục sang region khác, chuyển đổi khi thảm họa | 15–30 phút | Phút–Giờ |
| Availability Zones | HA trong cùng region, không phải backup | N/A | Giây |
- • Crash-consistent: chụp trạng thái đĩa tại thời điểm đó, như khi mất điện đột ngột. Phù hợp OS disk, workload không giao dịch.
- • App-consistent (VSS): flush buffer, quiesce I/O trước khi snapshot. Đảm bảo database/transaction nhất quán. Cần VSS writer hỗ trợ (Windows) hoặc pre/post script (Linux).
- • Azure Backup VM dùng app-consistent trên Windows và file-system-consistent trên Linux.
- • Standard policy: backup 1 lần/ngày, instant restore snapshot 1–5 ngày
- • Enhanced policy: backup nhiều lần/ngày (mỗi 4/6/8/12 giờ), instant restore snapshot tối đa 30 ngày, hỗ trợ Trusted Launch VM và Ultra/Premium SSD v2
- • Enhanced policy yêu cầu vault phải enable Trusted Launch hoặc chạy VM thế hệ mới
2. VM Snapshots & Disk Snapshots
Snapshot là bản sao read-only của managed disk tại một thời điểm. Khác với Azure Backup, snapshot lưu trong subscription của bạn (không trong vault) và tính phí theo dung lượng.
Bản sao đầy đủ của toàn bộ disk. Tốn dung lượng nhất nhưng độc lập, có thể chuyển sang subscription khác.
Chỉ lưu các block thay đổi so với snapshot trước. Tiết kiệm ~70–90% dung lượng. Khuyến nghị dùng loại này.
Collection snapshot của tất cả disk VM (OS + data) tại cùng 1 thời điểm. Dùng để restore toàn bộ VM.
3. Backup & Restore Azure VM
Azure Backup VM sử dụng VM extension (VMSnapshot trên Windows, VMSnapshotLinux trên Linux) được tự động cài khi bật backup lần đầu. Không cần agent thủ công.
- Azure Backup service trigger theo schedule
- Extension VMSnapshot gửi lệnh quiesce I/O (VSS)
- Snapshot các disk (OS + data) đồng thời
- Snapshot lưu tạm tại resource group (instant restore tier)
- Data transfer từ snapshot lên Recovery Services vault
- Backup job hoàn thành, recovery point được tạo
- Create new VM: tạo VM mới từ recovery point, không ảnh hưởng VM gốc. Phù hợp kiểm tra tính toàn vẹn backup.
- Restore disks: tạo managed disk từ recovery point, gắn vào VM khác hoặc dùng để tạo VM mới bằng template.
- Replace existing disk: thay thế disk của VM hiện tại bằng disk từ recovery point. VM phải stop.
- File Recovery: mount recovery point như ổ đĩa trên máy tính, chỉ lấy file cụ thể mà không restore toàn bộ VM.
4. DPM, MABS, Soft Delete & Azure Site Recovery
| Tiêu chí | DPM | MABS |
|---|---|---|
| License | System Center license | Miễn phí (Azure sub) |
| SQL requirement | SQL Server riêng | SQL Express tích hợp |
| Tape support | Có | Không |
| Secondary DPM | Có | Không |
| Cloud offload | Azure Backup | Azure Backup |
Cả DPM và MABS đều dùng Azure Backup như secondary storage (cloud offload). Lựa chọn DPM khi đã có System Center, MABS khi muốn giải pháp đơn giản hơn.
- MARS Agent: cài trực tiếp trên máy, backup file/folder/System State, KHÔNG backup toàn bộ VM, không cần server trung gian. Phù hợp Windows Server nhỏ lẻ.
- MABS (Azure Backup Server): server trung gian, backup VM, SQL, SharePoint, Exchange on-prem. Cần server Windows Server chạy MABS software.
- DPM: giống MABS nhưng tích hợp System Center, có thêm chức năng tape và secondary DPM server.
Soft delete bảo vệ backup data khỏi xóa vô tình hoặc do ransomware:
- • Khi backup bị xóa, data không bị xóa ngay mà vào trạng thái "soft deleted" và giữ thêm 14 ngày
- • Trong 14 ngày: không tính phí compute, vẫn tính phí storage
- • Có thể "Undelete" để khôi phục backup item về trạng thái bình thường
- • Soft delete mặc định bật trên mọi Recovery Services vault mới
- • Có thể tắt nhưng không khuyến nghị
- • Enhanced soft delete (Always-on): không thể tắt, bảo vệ tuyệt đối
ASR là dịch vụ Disaster Recovery (không phải backup) — nhân bản VM liên tục sang region thứ 2:
- • RPO: 15–30 phút (replication liên tục)
- • RTO: vài phút (pre-warmed VM ở secondary)
- • Failover: chuyển hướng traffic sang secondary region khi primary down
- • Failback: chuyển về primary sau khi khắc phục sự cố
- • Test failover: chạy DR drill mà không ảnh hưởng production
- • Dùng Recovery Services vault — cùng vault có thể dùng cho cả Backup và ASR
- • Mobility Service agent tự động cài trên VM được bảo vệ
Bài Tập Thực Hành (Lab)
Tạo Resource Group, Recovery Services Vault và VM test
# Tạo Resource Group
az group create \
--name rg-az104-m27 \
--location southeastasia \
--tags Module=27 Course=AZ-104 Environment=Lab
# Tạo Recovery Services vault
az backup vault create \
--name rsv-az104-m27 \
--resource-group rg-az104-m27 \
--location southeastasia
# Dùng LRS cho lab (tiết kiệm chi phí)
az backup vault backup-properties set \
--name rsv-az104-m27 \
--resource-group rg-az104-m27 \
--backup-storage-redundancy LocallyRedundant
# Xác nhận soft delete đang bật (mặc định)
az backup vault backup-properties show \
--name rsv-az104-m27 \
--resource-group rg-az104-m27 \
--query "properties.softDeleteFeatureState"
# Tạo VM Ubuntu nhỏ để lab backup (Standard_B1s tiết kiệm)
az vm create \
--name vm-az104-m27 \
--resource-group rg-az104-m27 \
--location southeastasia \
--image Ubuntu2204 \
--size Standard_B1s \
--admin-username azureadmin \
--generate-ssh-keys \
--tags Module=27 Course=AZ-104
echo "VM created. Waiting for VM to be running..."
az vm wait --name vm-az104-m27 --resource-group rg-az104-m27 --created
vm-az104-m27 trạng thái Running. Portal → Recovery Services vaults → rsv-az104-m27 tồn tại, Properties → Backup Configuration = Locally-redundant, Soft delete = Enabled.
Bật Azure Backup cho VM và chạy on-demand backup
# Lấy VM resource ID
VM_ID=$(az vm show \
--name vm-az104-m27 \
--resource-group rg-az104-m27 \
--query id -o tsv)
echo "VM ID: $VM_ID"
# Bật Azure Backup cho VM với DefaultPolicy
az backup protection enable-for-vm \
--vault-name rsv-az104-m27 \
--resource-group rg-az104-m27 \
--vm vm-az104-m27 \
--policy-name DefaultPolicy
# Kiểm tra backup item đã đăng ký
az backup item list \
--vault-name rsv-az104-m27 \
--resource-group rg-az104-m27 \
--output table
# Lấy container name (tên VM được encode trong container)
CONTAINER=$(az backup container list \
--vault-name rsv-az104-m27 \
--resource-group rg-az104-m27 \
--backup-management-type AzureIaasVM \
--query "[0].name" -o tsv)
echo "Container: $CONTAINER"
# Lấy item name
ITEM=$(az backup item list \
--vault-name rsv-az104-m27 \
--resource-group rg-az104-m27 \
--backup-management-type AzureIaasVM \
--query "[0].name" -o tsv)
echo "Item: $ITEM"
# Chạy on-demand backup (retain 30 ngày)
az backup protection backup-now \
--vault-name rsv-az104-m27 \
--resource-group rg-az104-m27 \
--container-name $CONTAINER \
--item-name $ITEM \
--backup-management-type AzureIaasVM \
--retain-until $(date -d "+30 days" +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -v +30d +%Y-%m-%dT%H:%M:%SZ)
# Theo dõi backup job (có thể mất 20-40 phút)
echo "Backup job started. Monitoring..."
az backup job list \
--vault-name rsv-az104-m27 \
--resource-group rg-az104-m27 \
--output table
vm-az104-m27 xuất hiện với Last backup status = In Progress hoặc Completed. Vào Backup jobs → xác nhận job type = Backup, Status = In Progress.
Tạo Disk Snapshot thủ công và restore VM từ recovery point
# --- PHẦN A: Disk Snapshot thủ công ---
# Lấy OS disk ID của VM
OS_DISK_ID=$(az vm show \
--name vm-az104-m27 \
--resource-group rg-az104-m27 \
--query "storageProfile.osDisk.managedDisk.id" -o tsv)
echo "OS Disk ID: $OS_DISK_ID"
# Tạo incremental snapshot của OS disk
az snapshot create \
--name snap-vm-az104-m27-osdisk \
--resource-group rg-az104-m27 \
--source $OS_DISK_ID \
--incremental true \
--sku Standard_ZRS \
--tags Module=27 Purpose=PreMaintenance
# Xác nhận snapshot tạo thành công
az snapshot show \
--name snap-vm-az104-m27-osdisk \
--resource-group rg-az104-m27 \
--query "{name:name, diskSizeGB:diskSizeGb, provisioningState:provisioningState}" \
--output table
# --- PHẦN B: Restore VM từ Azure Backup (sau khi backup hoàn thành) ---
CONTAINER=$(az backup container list \
--vault-name rsv-az104-m27 \
--resource-group rg-az104-m27 \
--backup-management-type AzureIaasVM \
--query "[0].name" -o tsv)
ITEM=$(az backup item list \
--vault-name rsv-az104-m27 \
--resource-group rg-az104-m27 \
--backup-management-type AzureIaasVM \
--query "[0].name" -o tsv)
# Liệt kê recovery points
az backup recoverypoint list \
--vault-name rsv-az104-m27 \
--resource-group rg-az104-m27 \
--container-name $CONTAINER \
--item-name $ITEM \
--backup-management-type AzureIaasVM \
--output table
# Lấy recovery point mới nhất
RP_NAME=$(az backup recoverypoint list \
--vault-name rsv-az104-m27 \
--resource-group rg-az104-m27 \
--container-name $CONTAINER \
--item-name $ITEM \
--backup-management-type AzureIaasVM \
--query "[0].name" -o tsv)
echo "Recovery Point: $RP_NAME"
# Lấy Subscription ID
SUB_ID=$(az account show --query id -o tsv)
# Restore disks (tạo managed disk từ recovery point, không tạo VM ngay)
az backup restore restore-disks \
--vault-name rsv-az104-m27 \
--resource-group rg-az104-m27 \
--container-name $CONTAINER \
--item-name $ITEM \
--rp-name $RP_NAME \
--storage-account "$(az storage account list --resource-group rg-az104-m27 --query '[0].name' -o tsv 2>/dev/null || echo 'staz104m27restore')" \
--target-resource-group rg-az104-m27
# Xem restore job
az backup job list \
--vault-name rsv-az104-m27 \
--resource-group rg-az104-m27 \
--output table
snap-vm-az104-m27-osdisk → xác nhận Incremental = Yes. Portal → rsv-az104-m27 → Backup jobs → xác nhận Restore job xuất hiện với status In Progress hoặc Completed.
Kiểm tra Soft Delete và cấu hình nâng cao vault
CONTAINER=$(az backup container list \
--vault-name rsv-az104-m27 \
--resource-group rg-az104-m27 \
--backup-management-type AzureIaasVM \
--query "[0].name" -o tsv)
ITEM=$(az backup item list \
--vault-name rsv-az104-m27 \
--resource-group rg-az104-m27 \
--backup-management-type AzureIaasVM \
--query "[0].name" -o tsv)
# Xem trạng thái soft delete của vault
az backup vault backup-properties show \
--name rsv-az104-m27 \
--resource-group rg-az104-m27 \
--query "{softDeleteState:properties.softDeleteFeatureState, storageType:properties.storageModelType}"
# Thử xóa backup protection (với soft delete bật, data không bị xóa ngay)
az backup protection disable \
--vault-name rsv-az104-m27 \
--resource-group rg-az104-m27 \
--container-name $CONTAINER \
--item-name $ITEM \
--backup-management-type AzureIaasVM \
--delete-backup-data false \
--yes
# Kiểm tra backup item vẫn còn (trạng thái ProtectionStopped)
az backup item list \
--vault-name rsv-az104-m27 \
--resource-group rg-az104-m27 \
--backup-management-type AzureIaasVM \
--output table
# Bật lại bảo vệ (resume protection)
az backup protection resume \
--vault-name rsv-az104-m27 \
--resource-group rg-az104-m27 \
--container-name $CONTAINER \
--item-name $ITEM \
--policy-name DefaultPolicy
# Xác nhận bảo vệ đang hoạt động trở lại
az backup item show \
--vault-name rsv-az104-m27 \
--resource-group rg-az104-m27 \
--container-name $CONTAINER \
--name $ITEM \
--backup-management-type AzureIaasVM \
--query "properties.currentProtectionState"
vm-az104-m27 → xác nhận Protection Status = Protection resumed (hoặc Protection started). Thử xóa backup item từ Portal → xác nhận item vào trạng thái "Soft deleted" thay vì bị xóa hoàn toàn.
Cleanup — Dọn dẹp tài nguyên
CONTAINER=$(az backup container list \
--vault-name rsv-az104-m27 \
--resource-group rg-az104-m27 \
--backup-management-type AzureIaasVM \
--query "[0].name" -o tsv 2>/dev/null)
ITEM=$(az backup item list \
--vault-name rsv-az104-m27 \
--resource-group rg-az104-m27 \
--backup-management-type AzureIaasVM \
--query "[0].name" -o tsv 2>/dev/null)
# Bước 1: Tắt bảo vệ và xóa backup data
if [ -n "$CONTAINER" ] && [ -n "$ITEM" ]; then
az backup protection disable \
--vault-name rsv-az104-m27 \
--resource-group rg-az104-m27 \
--container-name $CONTAINER \
--item-name $ITEM \
--backup-management-type AzureIaasVM \
--delete-backup-data true \
--yes
echo "Backup protection disabled and data deleted."
fi
# Bước 2: Tắt soft delete (cần thiết để xóa vault ngay)
az backup vault backup-properties set \
--name rsv-az104-m27 \
--resource-group rg-az104-m27 \
--soft-delete-feature-state Disable
# Chờ soft delete items hết hạn hoặc undelete trước khi xóa vault
# (Trong lab: chờ khoảng 1 phút sau khi tắt soft delete)
# Bước 3: Xóa snapshot
az snapshot delete \
--name snap-vm-az104-m27-osdisk \
--resource-group rg-az104-m27
# Bước 4: Xóa toàn bộ Resource Group
az group delete --name rg-az104-m27 --yes --no-wait
echo "Cleanup initiated. RG rg-az104-m27 đang được xóa..."
echo "Lưu ý: vault chỉ tự xóa khi không còn backup item nào."
Kết Quả Đầu Ra
So sánh được Snapshot vs Azure Backup vs ASR, biết khi nào dùng option nào dựa trên RPO/RTO yêu cầu
Tạo incremental snapshot của managed disk, hiểu sự khác biệt full vs incremental, quản lý vòng đời snapshot
Bật backup cho Azure VM, chạy on-demand backup, xác nhận recovery point và theo dõi backup job
Chọn đúng restore mode (Create new VM / Restore disks / Replace disk / File Recovery) theo từng kịch bản
Giải thích cơ chế soft delete 14 ngày, undelete backup item, phân biệt soft delete thường vs always-on
Giải thích Azure Site Recovery cho DR, phân biệt MARS vs MABS vs DPM và khi nào chọn từng giải pháp
Ứng Dụng Thực Tế
Tình huống 1: Ngân hàng — Bảo vệ VM core banking với RPO thấp
Ngân hàng TMCP tại Hà Nội chạy core banking trên 8 Azure VM (Windows Server 2022, SQL Server). Yêu cầu RPO < 1 giờ, RTO < 4 giờ, dữ liệu giao dịch không được mất.
Enhanced backup policy: backup mỗi 4 giờ, instant restore snapshot giữ 7 ngày. GRS vault. Azure Site Recovery nhân bản sang Japan East (DR region). Snapshot trước mỗi maintenance window.
Soft delete always-on chống ransomware xóa backup. App-consistent backup với VSS SQL writer đảm bảo database transaction integrity. Cross-Region Restore enable. Monthly DR drill test failover sang Japan East.
RPO thực tế = 4 giờ (vượt yêu cầu). Khi thảm họa xảy ra: ASR failover trong 30 phút, RTO = 30 phút (dưới mục tiêu 4 giờ). Ransomware không thể xóa backup nhờ always-on soft delete.
Tình huống 2: Thương mại điện tử — VM backup + snapshot trước deployment
Sàn TMĐT tại TP.HCM có 20 VM chạy web app (PHP/MySQL). Team dev release code mỗi tuần, đôi khi release làm hỏng production cần rollback nhanh.
Azure Backup daily cho toàn bộ 20 VM, retention 30 ngày (daily) + 12 tháng (monthly). CI/CD pipeline tự động tạo VM disk snapshot trước mỗi deployment thông qua az snapshot create trong Azure DevOps.
Snapshot incremental tự động xóa sau 3 ngày (Azure Policy lifecycle). Khi rollback cần: restore từ snapshot trong <10 phút. Khi mất data dài hạn: restore từ Azure Backup. Backup Center giám sát 20 VM từ 1 giao diện.
Rollback production deployment trong <10 phút. Chi phí snapshot thấp nhờ incremental. Dev team tự tin release thường xuyên hơn (từ 1 lần/tuần lên 3 lần/tuần). Không cần downtime để backup.
Tình huống 3: Công ty logistics — Hybrid DPM + Azure Backup
Công ty logistics tại TP.HCM có 50 máy chủ on-premises (Hyper-V, Windows Server) và 15 Azure VM. Đang dùng System Center, muốn tích hợp cloud backup.
System Center DPM backup on-prem servers + Hyper-V VMs, offload sang Azure Backup (Recovery Services vault). 15 Azure VM backup trực tiếp qua Azure Backup. 1 vault GRS cho toàn bộ workload.
DPM backup on-prem vào disk local (nhanh) + cloud offload Azure 1 lần/ngày. Azure VM backup qua Azure Backup native. Backup Center hiển thị tất cả 65 workload (on-prem + cloud) từ 1 dashboard. Soft delete bật toàn bộ.
Tận dụng System Center license sẵn có. On-prem restore nhanh từ DPM disk, cloud là safety net. Loại bỏ tape backup hoàn toàn. Tiết kiệm 60% chi phí lưu trữ so với giải pháp NAS offsite cũ.