Cách tạo snapshot và khôi phục VPS an toàn

Bạn vừa SSH vào VPS và nhận ra mình đã xóa nhầm thư mục /etc/nginx trong lúc chỉnh cấu hình. Hoặc tệ hơn, một lệnh apt upgrade làm hỏng kernel khiến máy không boot lại được. Nếu không có bản snapshot, bạn sẽ mất hàng giờ để dựng lại mọi thứ từ đầu. Bài viết này hướng dẫn chi tiết cách tạo snapshot và khôi phục VPS trên nền tảng KVM, giúp bạn đưa hệ thống về trạng thái hoạt động tốt chỉ trong vài phút.
- Tóm tắt nhanh: Snapshot là bản sao toàn bộ ổ đĩa tại một thời điểm, cho phép khôi phục nhanh khi gặp sự cố.
- Nên tạo snapshot trước khi thực hiện thay đổi lớn: nâng cấp kernel, cập nhật bảo mật, chỉnh sửa cấu hình dịch vụ.
- Snapshot không thay thế hoàn toàn backup định kỳ vì chỉ lưu trạng thái tại một thời điểm và thường bị giới hạn số lượng.
- Quy trình khôi phục thường mất 5-15 phút tùy dung lượng ổ đĩa, và dữ liệu mới phát sinh sau khi chụp snapshot sẽ bị mất.
Yêu cầu trước khi bắt đầu
- VPS đang chạy hệ điều hành Linux (Ubuntu 24.04, Debian 12) hoặc Windows Server, có full root/Administrator.
- Tài khoản đăng nhập vào control panel hoặc API của nhà cung cấp dịch vụ VPS Linux bạn đang sử dụng.
- Hiểu rõ sự khác biệt giữa snapshot và backup (sẽ giải thích ở phần dưới).
- DNS và các dịch vụ mạng khác hoạt động bình thường để kiểm tra sau khi khôi phục.
Snapshot là gì và vì sao bạn cần nó?
Snapshot là một bản sao gần như tức thời của toàn bộ ổ đĩa ảo, bao gồm hệ điều hành, ứng dụng, cấu hình và dữ liệu tại đúng thời điểm chụp. Trên nền tảng ảo hóa KVM, snapshot được tạo ở tầng hypervisor, nghĩa là quá trình này diễn ra độc lập với hệ điều hành bên trong VPS. Bạn có thể tạo snapshot cho cả VPS Linux lẫn Windows Server mà không cần cài thêm công cụ nào bên trong máy.
Điểm mạnh của snapshot là tốc độ. Khác với backup truyền thống phải đọc toàn bộ dữ liệu và ghi ra nơi khác, snapshot thường chỉ mất vài giây để tạo nhờ cơ chế copy-on-write. Điều này rất hữu ích khi bạn sắp thực hiện một thay đổi rủi ro cao như nâng cấp PHP lên bản mới, cập nhật kernel, hoặc chỉnh sửa cấu hình firewall. Nếu mọi chuyện sai, bạn chỉ cần vài cú click để quay về trạng thái trước đó.
Lưu ý quan trọng: snapshot không phải là giải pháp backup tối ưu. Nó thường được lưu trên cùng một hệ thống lưu trữ vật lý với VPS, nên nếu toàn bộ hạ tầng gặp sự cố, snapshot cũng có thể bị ảnh hưởng. Ngoài ra, hầu hết nhà cung cấp giới hạn số lượng snapshot (thường 2-5 bản mỗi VPS) và không khuyến khích giữ snapshot quá lâu vì chiếm dung lượng lưu trữ. Với dữ liệu quan trọng, bạn vẫn cần một chiến lược backup VPS trước khi nâng cấp an toàn riêng.
Bước 1 - Kiểm tra dung lượng và trạng thái VPS trước khi tạo snapshot
Trước khi bấm nút tạo snapshot, hãy kiểm tra nhanh tình trạng hệ thống để đảm bảo snapshot tạo ra ở trạng thái ổn định. SSH vào VPS và chạy:
df -h
free -h
uptime
Lệnh df -h cho biết mức sử dụng ổ đĩa, free -h hiển thị dung lượng RAM, còn uptime cho biết hệ thống đã chạy được bao lâu và tải trung bình. Một hệ thống đang bị full disk hoặc tải cao bất thường thì snapshot vẫn tạo được, nhưng trạng thái lưu lại có thể không phải là trạng thái "khỏe mạnh" mà bạn mong muốn.
Với VPS chạy database (MySQL, PostgreSQL), bạn nên kiểm tra thêm quá trình ghi dữ liệu có đang dồn dập không. Snapshot chụp tại thời điểm database đang ghi dở có thể tạo ra bản sao không nhất quán. Cách xử lý an toàn là dừng dịch vụ database trong vài giây trước khi chụp, hoặc dùng lệnh FLUSH TABLES WITH READ LOCK trong MySQL/MariaDB. Với các hệ thống quan trọng, nhiều admin chọn tạo snapshot vào khung giờ thấp điểm để giảm rủi ro này.
Verify: Chạy lệnh trên và kiểm tra output. Nếu df -h cho thấy phân vùng root đã dùng trên 90%, hãy xử lý VPS bị full disk trước khi tạo snapshot, vì bản snapshot sẽ chiếm thêm dung lượng lưu trữ.
Bước 2 - Tạo snapshot qua control panel của nhà cung cấp
Quy trình tạo snapshot phụ thuộc vào control panel mà nhà cung cấp sử dụng (Virtualizor, SolusVM, Proxmox, hoặc panel tự phát triển). Dù dùng panel nào, các bước cơ bản đều tương tự: vào trang quản lý VPS, tìm mục Snapshot hoặc Backup, nhập tên cho bản snapshot và bấm nút tạo.
Ví dụ trên control panel Virtualizor, bạn vào mục Snapshots, điền tên (nên đặt tên có ý nghĩa như truoc-upgrade-php-8-3 hoặc 2026-02-15-truoc-thay-doi-nginx), rồi bấm Create Snapshot. Hệ thống sẽ xử lý trong vài giây đến vài phút tùy dung lượng ổ đĩa. Với những nhà cung cấp dùng Proxmox, thao tác tương tự trong tab Snapshots của VM.
Nếu nhà cung cấp có API (hầu hết đều có), bạn có thể tự động hóa việc tạo snapshot bằng script. Đây là cách đặc biệt hữu ích cho các hệ thống cần snapshot định kỳ trước mỗi lần deploy. Ví dụ một script bash gọi API để tạo snapshot trước khi chạy CI/CD:
#!/bin/bash
# Script tạo snapshot trước khi deploy - điều chỉnh theo API của nhà cung cấp
API_URL="https://api.nhacungcap.com/v1/vps/12345/snapshots"
API_KEY="your_api_key_here"
curl -X POST "$API_URL" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "truoc-deploy-'$(date +%Y%m%d-%H%M)'"}'
Hãy kiểm tra tài liệu API của nhà cung cấp để có endpoint và cú pháp chính xác, vì mỗi nơi một khác. Nếu không chắc chắn, cứ tạo snapshot thủ công qua panel cũng hoàn toàn ổn.
Verify: Sau khi tạo, danh sách snapshot trong panel phải hiển thị bản mới với đúng tên và thời gian bạn đặt. Một số panel hiển thị thêm dung lượng mà snapshot chiếm chỗ.
Bước 3 - Quản lý nhiều snapshot và chính sách lưu giữ
Nhiều nhà cấp cung cấp giới hạn số lượng snapshot tối đa cho mỗi VPS, thường từ 2 đến 5 bản. Vì vậy, việc quản lý và xóa bớt snapshot cũ là rất cần thiết. Bạn nên đặt ra một chính sách lưu giữ snapshot rõ ràng cho riêng mình.
| Tình huống | Số lượng snapshot nên giữ | Thời gian lưu |
|---|---|---|
| VPS chạy production ít thay đổi | 2-3 bản | 7-14 ngày |
| VPS thử nghiệm, thay đổi liên tục | 1-2 bản | 2-3 ngày |
| VPS trước khi nâng cấp lớn | 1-2 bản | Giữ đến khi chắc chắn ổn định |
Nguyên tắc đơn giản: snapshot nào cũng chiếm dung lượng lưu trữ, nên giữ quá nhiều bản sẽ làm tăng chi phí. Trước khi nâng cấp lớn, bạn tạo snapshot, thực hiện thay đổi, theo dõi hệ thống trong 24-48 giờ, rồi xóa snapshot cũ khi mọi thứ đã ổn định. Nếu bạn thuê VPS Windows, lưu ý snapshot của Windows Server thường có dung lượng lớn hơn Linux vì file hệ thống chiếm nhiều chỗ, nên càng cần chú ý chính sách lưu giữ.
Bước 4 - Khôi phục VPS từ snapshot
Đây là thao tác quan trọng nhất và cũng là lúc bạn cần bình tĩnh làm đúng quy trình. Trước khi khôi phục, hãy kiểm tra kỹ tên và thời gian của snapshot để chắc chắn bạn chọn đúng bản. Khôi phục nhầm snapshot có thể đưa hệ thống về trạng thái cũ hơn mong muốn, mất sạch những thay đổi gần đây.
Quy trình khôi phục thường như sau:
- Vào trang quản lý VPS, chuyển đến mục Snapshot.
- Chọn bản snapshot muốn khôi phục.
- Bấm nút Restore hoặc Khôi phục.
- Xác nhận thao tác (một số panel yêu cầu gõ tên VPS hoặc nhập "YES").
- Đợi quá trình khôi phục hoàn tất, thường 5-15 phút.
- Khởi động lại VPS nếu panel không tự làm.
Cảnh báo quan trọng: quá trình khôi phục sẽ ghi đè toàn bộ ổ đĩa hiện tại bằng dữ liệu trong snapshot. Mọi thay đổi sau thời điểm chụp snapshot sẽ biến mất lâu dài. Vì vậy, trước khi khôi phục, nếu có thể, hãy tạo một snapshot mới cho trạng thái hiện tại để có đường lui. Đây là thói quen an toàn mà không phải ai cũng nhớ.
Trong lúc khôi phục, hệ thống sẽ không truy cập được. Thông báo cho đội ngũ hoặc người dùng biết nếu VPS đang chạy ứng dụng quan trọng. Với VPS chạy website, bạn có thể trỏ DNS tạm thời về một trang thông báo bảo trì hoặc dùng status page tự host với Uptime Kuma để mọi người nắm được tình hình.
Verify: Sau khi khôi phục và VPS boot lại, SSH vào và kiểm tra:
uptime
systemctl status nginx
df -h
Output phải cho thấy thời gian hoạt động (uptime) khớp với thời điểm snapshot, các dịch vụ chính hoạt động bình thường, và dung lượng ổ đĩa đúng như trạng thái đã lưu. Kiểm tra thêm website hoặc ứng dụng truy cập được bình thường.
Khắc phục sự cố thường gặp khi khôi phục snapshot
VPS không boot sau khi khôi phục: Nguyên nhân thường gặp nhất là snapshot được tạo khi VPS đang ghi dữ liệu, dẫn đến file hệ thống không nhất quán. Với Ubuntu/Debian, thử boot vào recovery mode qua control panel (nếu có) và chạy fsck /dev/vda1. Nếu không vào được, có thể phải khôi phục lại từ một snapshot cũ hơn.
IP hoặc network không hoạt động sau khôi phục: Nếu bạn thay đổi cấu hình network sau khi chụp snapshot, bản khôi phục sẽ mang cấu hình cũ. Kiểm tra file cấu hình mạng:
cat /etc/netplan/00-installer-config.yaml # Ubuntu
cat /etc/network/interfaces # Debian
So sánh với thông tin IP nhà cung cấp cung cấp và chỉnh lại nếu lệch. Trường hợp này hay gặp khi bạn đổi IP hoặc chuyển datacenter.
Mất dữ liệu mới phát sinh: Đây không phải lỗi mà là bản chất của snapshot. Dữ liệu tạo sau thời điểm chụp sẽ không tồn tại sau khi khôi phục. Nếu bạn vừa thêm bài viết, đơn hàng hay bản ghi database sau snapshot, chúng sẽ biến mất. Cách giảm thiểu là chụp snapshot thường xuyên và dùng rclone backup VPS lên Google Drive để có thêm một lớp bảo vệ.
Câu hỏi thường gặp
Snapshot và backup khác nhau thế nào?
Snapshot là bản sao ổ đĩa tại một thời điểm, lưu trên cùng hệ thống với VPS, tạo nhanh và khôi phục nhanh. Backup thường lưu ở nơi khác (object storage, server khác), chậm hơn nhưng an toàn hơn trước sự cố hạ tầng. Bạn nên dùng cả hai: snapshot cho khôi phục nhanh, backup cho an toàn dữ liệu lâu dài.
Tạo snapshot có làm gián đoạn hoạt động của VPS không?
Không. Snapshot trên nền tảng KVM được tạo ở tầng hypervisor, hoạt động của VPS gần như không bị ảnh hưởng. Bạn có thể tạo snapshot trong khi server vẫn đang phục vụ traffic bình thường.
Khôi phục snapshot mất bao lâu?
Thời gian phụ thuộc dung lượng ổ đĩa và tốc độ hệ thống lưu trữ của nhà cung cấp. Với VPS ổ đĩa 20-40GB thường mất 5-10 phút; ổ đĩa 100GB trở lên có thể mất 15-30 phút. Trong thời gian này VPS không truy cập được.
Có nên dùng snapshot làm backup chính cho website WordPress không?
Không nên. Snapshot rất tốt cho khôi phục nhanh, nhưng không thay thế được backup định kỳ vì bị giới hạn số lượng và lưu trên cùng hệ thống. Với WordPress, hãy kết hợp snapshot với backup database và file lên nơi lưu trữ ngoài theo định kỳ.
Chi phí của snapshot là bao nhiêu?
Bài viết liên quan
- Cách backup VPS trước khi nâng cấp an toàn
- Hướng dẫn backup tự động VPS lên S3 với restic
- Chuyển website sang VPS mới không downtime
- Thuê VPS theo tháng, rủi ro dữ liệu và cách tự bảo vệ


