Backup và phục hồi

Quy tắc backup 3-2-1 áp dụng cho một VPS nhỏ ra sao?

Cách bố trí ba bản sao trên hai phương tiện với một bản tách failure domain, đồng thời kiểm soát quyền xóa và thử khôi phục cho VPS nhỏ.

Quy tắc backup 3-2-1 cho VPS
Mục lục

Rất nhiều người quản trị website khi nghe đến quy tắc backup 3-2-1 thường nghĩ đây là tiêu chuẩn chỉ dành cho các tập đoàn lớn có ngân sách dồi dào, hệ thống máy chủ đồ sộ hoặc các trung tâm dữ liệu trang bị băng từ (tape drive) chuyên dụng. Với một chiếc VPS chạy website tin tức hoặc bán hàng nhỏ có chi phí vài trăm nghìn đồng mỗi tháng, việc áp dụng nguyên tắc này nghe có vẻ xa vời và tốn kém.

Hậu quả là phần lớn các website nhỏ chỉ duy trì một script nén dữ liệu rồi lưu ngay vào thư mục /backup trên chính chiếc VPS đó. Khi máy chủ hoạt động bình thường, việc lấy lại một file xóa nhầm từ thư mục này rất tiện lợi. Nhưng đến khi chiếc VPS gặp sự cố lỗi phần cứng ổ đĩa, máy chủ bị treo hoàn toàn, hoặc tài khoản quản trị cloud bị chiếm quyền, bạn sẽ nhận ra một sự thật cay đắng: cả website đang chạy và file backup nằm trên cùng một ổ đĩa đã biến mất cùng lúc.

Thực tế, quy tắc 3-2-1 không bắt buộc bạn phải đầu tư phần cứng đắt đỏ. Bản chất của quy tắc này là tách các bản sao ra khỏi cùng một vùng rủi ro (failure domain), đảm bảo rằng bất kỳ sự cố đơn lẻ nào xảy ra ở máy chủ, tài khoản hay nhà cung cấp cũng không thể phá hủy toàn bộ dữ liệu của bạn.

Hiểu đúng bản chất của quy tắc 3-2-1 cho máy chủ đám mây

Quy tắc 3-2-1 kinh điển bao gồm 3 vế:

  • 3 bản dữ liệu: Ít nhất 3 bản sao lưu của dữ liệu quan trọng.
  • 2 phương tiện lưu trữ khác nhau: Không lưu toàn bộ các bản sao trên cùng một loại thiết bị hoặc cùng một hệ thống lưu trữ.
  • 1 bản lưu trữ offsite: Ít nhất 1 bản nằm hoàn toàn bên ngoài hạ tầng hoặc vị trí của hệ thống chính.

Khi chuyển giao tiếp cận này sang môi trường VPS và điện toán đám mây hiện đại, chúng ta không đếm theo số lượng ổ đĩa vật lý trong phòng máy mà đếm theo mức độ độc lập về hạ tầng và quyền kiểm soát:

Thành phầnTriển khai thực tế trên VPS nhỏRủi ro được phòng ngừa
Bản 1 (Production)Dữ liệu đang chạy trên VPS (database + thư mục upload)Phục vụ người dùng hàng ngày (đây là dữ liệu gốc, không tính là backup)
Bản 2 (Off-server)Bản backup tự động đẩy sang Object Storage (S3, Cloudflare R2...)Phòng ngừa lỗi ổ đĩa VPS, lỗi hệ điều hành, thao tác xóa nhầm trên server
Bản 3 (Off-site / Tách quyền)Bản copy sang tài khoản cloud thứ hai hoặc tải về máy tính văn phòngPhòng ngừa mất tài khoản cloud chính, nhà cung cấp khóa dịch vụ, script phá hoại

Đừng đếm nhầm số lượng bản sao

Một sai lầm rất phổ biến khi triển khai backup là đếm số lượng file thay vì đếm vùng rủi ro:

  • Tạo 5 file backup trong thư mục /backup của VPS: Bản chất ở đây vẫn chỉ là 1 bản dữ liệu nằm trên 1 ổ đĩa duy nhất. Nếu ổ cứng VPS bị lỗi hoặc máy chủ bị xóa, bạn mất cả 5 file cùng lúc.
  • Tạo thêm một phân vùng ổ đĩa (block storage volume) gắn vào cùng VPS: Dù là hai ổ đĩa khác nhau, nhưng chúng vẫn chịu chung quyền điều khiển của hệ điều hành VPS và chung tài khoản quản trị cloud. Một lệnh phá hoại chạy với quyền root trên VPS vẫn có thể format sạch cả hai ổ.
  • Lưu 3 bản backup vào cùng một bucket Object Storage: Đây là việc làm tốt cho chính sách xoay vòng thời gian (retention), nhưng nếu tài khoản cloud chính bị lộ thông tin đăng nhập hoặc tranh chấp thanh toán, toàn bộ bucket đó vẫn có thể bị xóa trong một nốt nhạc.

Một bản sao chỉ thực sự có giá trị khi nó có thể tồn tại độc lập nếu hệ thống chính gặp sự cố nghiêm trọng nhất.

Mô hình 3-2-1 thực tế và tiết kiệm chi phí cho một VPS nhỏ

Bạn hoàn toàn có thể thiết lập mô hình 3-2-1 hoàn chỉnh cho một website nhỏ với chi phí gần như không đáng kể bằng cách kết hợp các dịch vụ cloud sẵn có:

Bản 1: Dữ liệu Production trên máy chủ VPS

Đây là database đang vận hành và thư mục mã nguồn/tệp tải lên mà người dùng tương tác mỗi ngày. Bạn cần cấu hình dọn dẹp log định kỳ để ổ đĩa máy chủ luôn có dung lượng trống an toàn.

Bản 2: Đẩy tự động ra Object Storage độc lập (Ví dụ: Cloudflare R2 hoặc Wasabi/Backblaze)

Thay vì lưu backup trên VPS, mỗi đêm một tiến trình tự động (cron job) sẽ:

  1. Xuất database thành file dump nhất quán và nén thư mục upload, phối hợp chặt chẽ theo hướng dẫn tại Backup database và backup file cần phối hợp thế nào?.
  2. Mã hóa file nén bằng mật khẩu mạnh (dùng GPG hoặc mã hóa của công cụ backup như Restic, Borg).
  3. Đẩy trực tiếp file đã mã hóa sang một bucket Object Storage bên ngoài qua giao thức tương thích S3 và áp dụng chính sách thời gian lưu trữ và xoay vòng backup.
  4. Xóa ngay file tạm trên VPS để giải phóng dung lượng đĩa.

Chi phí lưu trữ của các dịch vụ như Cloudflare R2 hay Backblaze B2 hiện tại rất rẻ (chỉ khoảng vài chục nghìn đồng mỗi tháng cho vài chục GB dữ liệu) và hoàn toàn miễn phí băng thông tải ra trong đa số trường hợp cơ bản.

Bản 3: Bản sao tách biệt quyền quản trị hoặc lưu ngoại tuyến (Offline)

Để hoàn thiện vế số 1 trong quy tắc 3-2-1, bạn có hai hướng đi thực tế:

  • Hướng Cloud-to-Cloud (Hoàn toàn tự động): Thiết lập một tiến trình sao chép tự động từ bucket ở nhà cung cấp thứ nhất sang một bucket ở nhà cung cấp thứ hai (hoặc một tài khoản cloud hoàn toàn tách biệt). Điểm mấu chốt là tài khoản trên VPS chính chỉ có quyền ghi vào bucket thứ nhất, hoàn toàn không có thông tin xác thực (API key) của bucket thứ hai. Nếu VPS bị xâm nhập, kẻ tấn công cũng không có cách nào chạm tới bản sao thứ ba.
  • Hướng Ngoại tuyến (Offline / Tải về định kỳ): Mỗi tuần một lần, người quản trị tải bản backup mã hóa về một máy tính hoặc ổ cứng gắn ngoài tại văn phòng, sau đó ngắt kết nối internet của ổ cứng đó. Đây là phương án đơn giản, chi phí bằng 0 và cực kỳ an toàn trước mọi nguy cơ tấn công qua mạng.

Tách biệt quyền hạn: Khóa van an toàn cho dữ liệu backup

Một hệ thống backup offsite lưu trên cloud vẫn có thể bị phá hủy nếu bạn cấu hình quyền hạn quá lỏng lẻo. Nếu bạn lưu cặp khóa API (Access Key / Secret Key) có toàn quyền quản trị (Admin hoặc full quyền DeleteObject) ngay trong file cấu hình trên VPS, thì bất kỳ ai chiếm được quyền root trên VPS cũng có thể dùng chính khóa đó để xóa sạch mọi bản backup lưu trên cloud.

Để bảo vệ bản sao lưu, hãy áp dụng hai nguyên tắc phân quyền sau:

  1. Nguyên tắc quyền tối thiểu (Least Privilege): Cặp khóa API lưu trên VPS chỉ được cấp quyền PutObject (ghi file mới) và ListBucket. Tuyệt đối không cấp quyền DeleteObject (xóa file) hoặc DeleteBucket. Khi đó, VPS chỉ có thể gửi thêm bản backup mới lên cloud mà không thể xóa đi các bản cũ.
  2. Kích hoạt tính năng chống ghi đè/xóa (Object Lock / Immutability): Hầu hết các dịch vụ lưu trữ đám mây hiện đại đều có tính năng Object Lock hoặc Bucket Lock. Khi bật tính năng này, bất kỳ file nào được ghi vào bucket sẽ bị khóa cứng trong một khoảng thời gian nhất định (ví dụ 14 ngày hoặc 30 ngày). Trong suốt thời gian này, ngay cả khi quản trị viên đăng nhập vào giao diện web cũng không thể xóa file. Đây là lớp bảo vệ vững chắc nhất giúp doanh nghiệp miễn nhiễm trước các đợt tấn công mã hóa tống tiền hoặc thao tác bấm nhầm tai hại.

Tối ưu tài nguyên VPS khi tạo backup

Một chiếc VPS nhỏ thường chỉ có từ 1 đến 2 core CPU và 1 đến 2 GB RAM. Nếu script backup thực hiện nén dữ liệu quá nặng nề trong giờ hoạt động, CPU máy chủ có thể bị đẩy lên 100%, dẫn đến tình trạng website bị treo hoặc phản hồi chậm chạp.

Để backup diễn ra êm ả mà không làm ảnh hưởng đến người dùng:

  • Chọn khung giờ thấp điểm: Đặt lịch cron chạy vào khoảng 2h00 đến 4h00 sáng, thời điểm lượng truy cập website ở mức thấp nhất trong ngày.
  • Giới hạn mức độ sử dụng CPU và I/O: Sử dụng các tiện ích của Linux như nice (hạ độ ưu tiên xử lý của CPU) và ionice (hạ độ ưu tiên đọc/ghi ổ đĩa) khi chạy lệnh nén:
bash
  nice -n 19 ionice -c 3 tar -czf backup.tar.gz /var/www/uploads
  • Không backup file thừa: Cấu hình loại trừ hoàn toàn các thư mục log hệ thống, cache tạm và các file rác phát sinh.
  • Đẩy việc nhân bản sang phía cloud: Thay vì bắt chiếc VPS yếu ớt phải upload dữ liệu 2 lần lên 2 nơi khác nhau, hãy để VPS upload 1 lần sang Object Storage chính, sau đó dùng tính năng đồng bộ tự động giữa các cloud (chẳng hạn dùng Rclone chạy trên máy chủ khác hoặc tính năng Replication của nhà cung cấp) để chuyển sang bản thứ ba.

Thử khôi phục: Bước cuối cùng để hoàn tất quy tắc 3-2-1

Một hệ thống dù có đủ 3 bản sao lưu ở 3 chân trời khác nhau nhưng chưa từng được thử khôi phục thì trên thực tế vẫn chỉ là con số 0. Một lỗi cú pháp nhỏ trong script giải nén, một mật khẩu giải mã bị nhớ sai, hoặc một bản dump database bị thiếu bảng quan trọng có thể biến toàn bộ công sức sao lưu thành vô nghĩa khi sự cố thật xảy ra.

Mỗi quý một lần, hãy dành ra 30 phút để thực hiện bài kiểm tra thực tế theo Checklist thử restore website trên môi trường tách biệt:

  1. Đóng vai một người không có quyền truy cập vào VPS chính đang bị hỏng.
  2. Truy cập vào nơi lưu trữ bản sao thứ hai hoặc thứ ba để tải file backup về.
  3. Giải mã file bằng mật khẩu dự phòng đã lưu trong trình quản lý mật khẩu của doanh nghiệp.
  4. Bung database và file lên một VPS thử nghiệm hoặc máy tính cá nhân.
  5. Mở website và xác nhận các chức năng đăng nhập, hiển thị hình ảnh và dữ liệu hoạt động trơn tru.

Quy tắc 3-2-1 là mảnh ghép trọng yếu trong chiến lược backup VPS cho doanh nghiệp nhỏ. Nó không đòi hỏi bạn phải trở thành một chuyên gia hạ tầng kỳ cựu hay sở hữu ngân sách lớn. Bằng cách hiểu đúng rủi ro, phân quyền chặt chẽ và chọn đúng dịch vụ lưu trữ đám mây giá rẻ, bạn hoàn toàn có thể trang bị cho chiếc VPS nhỏ của mình một chiếc khiên bảo vệ vững chắc, giúp doanh nghiệp luôn làm chủ dữ liệu trong mọi tình huống.

Chia sẻ bài viết hữu ích

Gửi bài viết này cho đồng nghiệp

Đọc tiếp

Bài nên đọc tiếp

Xem tất cả bài về Backup và phục hồi