Xử lý sự cố

VPS đầy ổ đĩa: nguyên nhân, dấu hiệu và cách phòng ngừa

Cách nhận biết VPS sắp hết dung lượng hoặc inode, những nguyên nhân thường gặp và quy trình xử lý an toàn trước khi xóa dữ liệu trên production.

Máy chủ lưu trữ và đồng hồ dung lượng gần chạm ngưỡng cảnh báo
Mục lục

VPS đầy ổ đĩa có thể khiến website không ghi được session, database dừng, container restart liên tục hoặc quá trình triển khai thất bại. Phản xạ xóa file thật nhanh đôi khi làm mất log điều tra hay xóa nhầm dữ liệu đang được ứng dụng sử dụng.

Việc đầu tiên nên làm là xác định phân vùng nào đầy, dung lượng hay inode đã cạn, và dữ liệu nào đang tăng. Chỉ dọn dẹp sau khi hiểu tác động và có phương án khôi phục.

Dấu hiệu VPS đang thiếu không gian lưu trữ

Ngoài cảnh báo disk usage, hệ thống có thể xuất hiện các biểu hiện:

  • Ứng dụng báo lỗi không thể ghi file hoặc tạo thư mục tạm.
  • Database không khởi động, chuyển sang chế độ chỉ đọc hoặc ghi log lỗi liên tục.
  • Docker không pull image hay tạo container mới.
  • Log rotation, backup hoặc deploy dừng giữa chừng.
  • SSH vẫn vào được nhưng nhiều lệnh tạo file thất bại.
  • Website trả lỗi 500 dù CPU và RAM không cao.

Cần phân biệt hết dung lượng với hết inode. Nhiều file rất nhỏ có thể dùng hết inode trong khi số GB còn trống. Hai tình huống cần cách xử lý khác nhau.

Những nguyên nhân thường gặp

Log không được xoay vòng

Access log, error log, journal hoặc log của ứng dụng có thể tăng liên tục. Một thay đổi khiến lỗi lặp hàng nghìn lần mỗi phút sẽ làm tốc độ tăng đột biến. Việc xóa log chỉ giải phóng tạm thời; phải sửa nguồn phát sinh và cấu hình rotation phù hợp.

Docker giữ image và dữ liệu cũ

Image không còn dùng, build cache, container đã dừng và volume có thể chiếm nhiều dung lượng. Không nên chạy lệnh prune diện rộng trên production trước khi xác định volume nào chứa dữ liệu và container nào có thể cần rollback.

Backup được lưu trên chính VPS

File dump database hoặc archive hằng ngày có thể tích tụ. Nếu backup chỉ nằm cùng máy với dữ liệu gốc, nó vừa chiếm dung lượng vừa không bảo vệ được khi VPS mất hoặc ổ đĩa hỏng.

Upload và dữ liệu ứng dụng tăng tự nhiên

Ảnh, video, tài liệu, email queue hoặc dữ liệu database có thể tăng đúng theo hoạt động kinh doanh. Đây không phải lỗi cần “dọn”, mà là tín hiệu cần chính sách retention, storage riêng hoặc kế hoạch mở rộng.

File đã xóa vẫn còn được tiến trình giữ

Trên Linux, một file đã xóa vẫn có thể chiếm dung lượng nếu process còn mở file đó. Khi ấy bạn không nhìn thấy file trong thư mục nhưng dung lượng chưa được trả lại. Cần xác định process liên quan và restart có kiểm soát thay vì reboot mù.

Quy trình xử lý an toàn

1. Dừng các thay đổi không cần thiết

Tạm dừng deploy, backup mới hoặc job tạo nhiều dữ liệu. Nếu hệ thống vẫn phục vụ người dùng, xác định mức độ ảnh hưởng trước khi restart dịch vụ.

2. Xác định phân vùng và xu hướng tăng

Kiểm tra cả dung lượng lẫn inode, sau đó tìm thư mục lớn theo từng filesystem. So sánh với monitoring hoặc backup cũ nếu có để biết dữ liệu tăng dần hay tăng đột biến.

3. Bảo toàn dữ liệu điều tra

Giữ lại log quanh thời điểm sự cố, danh sách process/container và thay đổi gần nhất. Nếu nghi ngờ tấn công hoặc lỗi ứng dụng nghiêm trọng, việc xóa ngay có thể làm mất bằng chứng cần thiết.

4. Phân loại dữ liệu trước khi xóa

Chia thành bốn nhóm: dữ liệu nghiệp vụ, backup, log/cache có thể tái tạo và file chưa xác định. Chỉ xóa nhóm đã hiểu rõ. Với log đang được process giữ, dùng cơ chế rotation hoặc restart dịch vụ theo kế hoạch.

5. Xử lý nguyên nhân và thiết lập ngưỡng cảnh báo

Sau khi giải phóng đủ không gian để ổn định dịch vụ, sửa job hoặc cấu hình gây tăng dữ liệu. Cảnh báo nên xuất hiện đủ sớm để còn thời gian xử lý, ví dụ nhiều mức theo phần trăm và dung lượng còn lại.

Những việc không nên làm vội

  • Xóa toàn bộ /var/log hoặc thư mục chưa hiểu rõ.
  • Chạy Docker prune kèm volume trên production.
  • Xóa backup duy nhất để lấy chỗ trống.
  • Reboot liên tục với hy vọng dung lượng tự giảm.
  • Mở rộng ổ đĩa rồi bỏ qua nguyên nhân tăng dữ liệu.

Mở rộng dung lượng có thể là giải pháp đúng khi dữ liệu tăng tự nhiên, nhưng nó chỉ mua thêm thời gian nếu log lỗi hoặc backup sai cấu hình tiếp tục tăng không giới hạn.

Phòng ngừa tái diễn

  • Theo dõi dung lượng, inode và tốc độ tăng theo thời gian.
  • Thiết lập log rotation và retention cho từng loại log.
  • Chuyển backup quan trọng ra storage độc lập.
  • Rà soát Docker image, cache và volume theo lịch có kiểm soát.
  • Tạo quota hoặc lifecycle policy cho upload nếu phù hợp.
  • Kiểm tra không gian trống trước deploy, migration và backup.
  • Viết runbook nêu rõ dữ liệu nào có thể dọn và ai phê duyệt.

Nếu VPS đã lỗi dịch vụ hoặc bạn chưa xác định được dữ liệu nào an toàn để xử lý, hãy giữ nguyên hiện trạng và gửi yêu cầu cứu hộ máy chủ. Không gửi mật khẩu hoặc private key trong form ban đầu.

Chia sẻ kiến thức hữu ích

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