Hướng Dẫn Cách Xử Lý VPS Bị Đầy Dung Lượng (Sửa Lỗi Full Disk)

Khi website đột ngột báo lỗi 500 hoặc database ngừng hoạt động kèm thông báo “No space left on device”, bạn cần biết cách xử lý VPS bị đầy dung lượng ngay lập tức để hệ thống vận hành trở lại. Tại sao VPS bị báo lỗi full disk và các bước gõ lệnh chi tiết nào giúp giải phóng dung lượng, dọn sạch file rác ngay lập tức? Bài viết này từ InterData sẽ hướng dẫn bạn các lệnh CLI thực tế trên Linux, cách truy vết thư mục chiếm chỗ và phương pháp làm sạch log an toàn không gây lỗi dịch vụ.

1. Tại sao VPS bị lỗi “No space left on device” (Full Disk)?

VPS bị đầy ổ cứng chủ yếu do file log hệ thống (journalctl), log web server phình to vượt kiểm soát, hoặc database sinh ra lượng lớn binlog. Khi ổ cứng vật lý không còn khoảng trống, mọi tiến trình ghi dữ liệu mới sẽ bị chặn, dẫn đến sập website và crash cơ sở dữ liệu.

VPS bị đầy dung lượng

Trước khi đi sâu vào các lệnh kỹ thuật, việc nắm rõ nền tảng VPS là gì và cách hệ điều hành Linux quản lý phân vùng lưu trữ sẽ giúp bạn đánh giá được giới hạn của máy chủ. Ngoài ra, việc quy đổi dung lượng để kiểm tra (ví dụ 1GB bằng bao nhiêu MB) rất cần thiết khi bạn cấu hình giới hạn kích thước file log hoặc database trên server.

Thuê VPS InterData

CPU thế hệ mới, SSD NVMe U.2, hỗ trợ kỹ thuật 24/7

Cần một môi trường Server Linux độc lập?

Máy chủ ảo VPS tại InterData hỗ trợ đa dạng hệ điều hành Linux (Ubuntu, Debian, CentOS) và đi kèm toàn quyền root. Môi trường lý tưởng để bạn chủ động thực hành cấu hình, quản trị và tối ưu dung lượng hệ thống với mức chi phí tiết kiệm nhất.

Xem Bảng Giá Thuê VPS ⟶

2. So sánh nguyên nhân: Đầy dung lượng vật lý vs Đầy Inode

Nhiều quản trị viên bối rối khi kiểm tra ổ cứng thấy vẫn còn trống hàng chục GB nhưng hệ thống vẫn báo lỗi. Điều này xảy ra do sự khác biệt giữa dung lượng lưu trữ (Block/Space) và số lượng file tối đa cho phép (Inode). Việc xác định đúng nguyên nhân giúp bạn không tốn thời gian xóa nhầm file.

Tiêu chí Đầy dung lượng (Full Block Space) Đầy số lượng tệp (Full Inode)
Định nghĩa Ổ cứng không còn byte nào để ghi dữ liệu mới. Hết số lượng file/thư mục hệ điều hành cho phép tạo.
Nguyên nhân chính File log khổng lồ, database lớn, chứa nhiều file backup/video. Mã nguồn tạo ra hàng triệu file cache nhỏ li ti (ví dụ cache session PHP).
Cách kiểm tra Lệnh df -h hiển thị Use% đạt mức 100%. Lệnh df -i hiển thị IUse% đạt mức 100%.
Phương pháp xử lý Tìm các file lớn (GB) và xóa bớt. Xóa hàng loạt thư mục chứa file kích thước nhỏ nhưng số lượng nhiều.

3. Lệnh kiểm tra dung lượng và tìm file lớn nhất trên Linux

Để giải phóng dung lượng, trước tiên bạn cần xác định chính xác ổ đĩa và thư mục nào đang chiếm chỗ. Nắm vững các lệnh cơ bản trong Linux là điều kiện bắt buộc để thực hiện bước này.

Bước 1: Kiểm tra tổng thể ổ cứng bằng lệnh df

df -h

Lệnh trên (chữ “h” là human-readable) giúp bạn thấy dung lượng tổng, dung lượng đã dùng và cột Use%. Hãy chú ý phân vùng gắn với thư mục gốc /, nếu nó đạt 100% thì bạn đang gặp lỗi full disk vật lý.

Kiểm tra dung lượng VPS bằng lệnh df

Để kiểm tra tình trạng Inode, sử dụng:

df -i

Bước 2: Tìm 10 thư mục hoặc file lớn nhất bằng lệnh du

Khi đã xác định phân vùng bị đầy, sử dụng lệnh du để quét toàn bộ hệ thống từ thư mục gốc, lọc ra các vị trí nặng nhất:

du -sh /* 2>/dev/null | sort -rh | head -n 10

Nếu phát hiện thư mục /var chiếm quá nhiều dung lượng, bạn tiếp tục quét sâu vào bên trong:

du -sh /var/* 2>/dev/null | sort -rh | head -n 10

4. Hướng dẫn giải phóng dung lượng Linux (Ubuntu/CentOS)

Dọn rác trên Linux đòi hỏi sự cẩn thận để không xóa nhầm file hệ thống. Dưới đây là các bước an toàn nhất bạn có thể thực hiện để lấy lại không gian lưu trữ nhanh chóng.

1/ Truy cập vào máy chủ: Hãy truy cập VPS Linux bằng SSH thông qua PuTTY hoặc Terminal trên máy tính của bạn với quyền root.

2/ Dọn dẹp cache của Package Manager: Khi cài đặt phần mềm, Ubuntu hay CentOS đều lưu lại các file cài đặt (định dạng .deb hoặc .rpm) trong cache. Việc xóa chúng rất an toàn.

Trên Ubuntu/Debian:

apt-get clean
apt-get autoremove -y

Trên CentOS/AlmaLinux:

yum clean all

3/ Xóa bớt file nhật ký hệ thống (Journal Logs): Journald lưu trữ log của hệ điều hành và thường phình to lên đến vài GB. Bạn có thể giới hạn và xóa các log cũ giữ lại log trong vòng 3 ngày:

journalctl --vacuum-time=3d

Xóa bớt file nhật ký hệ thống

Hoặc chỉ giữ lại tổng dung lượng log không vượt quá 100MB:

journalctl --vacuum-size=100M

4/ Tìm và xóa các file rác lớn vô danh: Đôi khi trong quá trình sử dụng, bạn vô tình để quên các file nén .tar.gz hoặc file backup dung lượng lớn. Lệnh sau sẽ tìm các file lớn hơn 500MB trên toàn hệ thống:

find / -type f -size +500M -exec ls -lh {} \;

Tìm và xóa các file rác lớn vô danh

Nếu xác định file không cần thiết, bạn có thể xóa nó bằng lệnh rm -f /đường-dẫn-file.

5. Cách dọn rác VPS Linux: Xóa log Nginx, Apache và MySQL

Phần lớn trường hợp xử lý VPS bị đầy dung lượng xuất phát từ log của web server và database. Đặc biệt với các website có Data Transfer lớn hoặc hứng chịu đợt tấn công từ chối dịch vụ (DDoS), access log sẽ đầy ổ cứng trong vài giờ.

Dọn dẹp Web Server Logs (Nginx / Apache)

Đối với hệ thống sử dụng web server Nginx hoặc Apache, tuyệt đối không dùng lệnh rm để xóa file log đang ghi dở. Việc xóa nóng có thể làm Nginx ngừng hoạt động hoặc không thể ghi log tiếp theo. Bạn nên làm rỗng nội dung file thay vì xóa nó:

# Làm rỗng log Nginx
cat /dev/null > /var/log/nginx/access.log
cat /dev/null > /var/log/nginx/error.log

# Làm rỗng log Apache
cat /dev/null > /var/log/apache2/access.log
cat /dev/null > /var/log/httpd/access_log

Xóa log Nginx Web Server

Dọn dẹp MySQL Binlog

Database ghi lại mọi thay đổi dữ liệu vào file binlog để phục vụ replication hoặc recovery. Khi binlog phình to, RAM và Disk bị vắt kiệt gây ra lỗi kết nối cơ sở dữ liệu (Error Establishing a Database Connection). Thay vì xóa vật lý trong thư mục /var/lib/mysql, hãy đăng nhập vào MySQL prompt và yêu cầu xóa an toàn:

mysql -u root -p

Chạy lệnh xóa các binlog cũ hơn 3 ngày:

PURGE BINARY LOGS BEFORE DATE(NOW() - INTERVAL 3 DAY);

Dọn dẹp MySQL Binlog

Săn Ưu Đãi Tối Ưu Chi Phí

Nếu bạn đã nắm rõ các lệnh quản trị và muốn khởi tạo VPS mới, chuyên trang Canh Me tổng hợp các chương trình khuyến mãi, mã giảm giá và Hot Deals VPS/Cloud Server mới nhất của InterData sẽ giúp bạn tối ưu chi phí hạ tầng cực kỳ hiệu quả.

Xem Các Ưu Đãi VPS Tiết Kiệm Tại Canh Me ⟶

6. Khắc phục lỗi báo Full Disk nhưng dung lượng vẫn còn trống

Một tình huống oái oăm thường gặp: Bạn đã dùng lệnh `rm` xóa thành công file log nặng hàng chục GB, website vẫn trả về lỗi 502 Bad Gateway và gõ `df -h` thì hệ thống vẫn báo dung lượng ở mức 100%.

Nguyên nhân: File bị xóa vật lý nhưng tiến trình (Process) của web server hoặc database vẫn đang “ngậm” (hold) file đó trong RAM. Linux không thực sự giải phóng không gian đĩa cho đến khi tiến trình kết thúc.

Cách khắc phục:

Dùng lệnh lsof (List Open Files) để tìm các file đã bị xóa nhưng tiến trình vẫn đang giữ:

lsof +L1

Hoặc grep từ khóa “deleted”:

lsof | grep deleted

Hệ thống sẽ hiển thị danh sách, cột thứ hai là số PID (Process ID) của tiến trình.

Tìm các file đã bị xóa nhưng tiến trình vẫn đang giữ

Lúc này, bạn chỉ cần khởi động lại dịch vụ đó hoặc kill tiến trình:

# Ví dụ kill tiến trình có PID là 1234
kill -9 1234

# Hoặc khởi động lại dịch vụ Nginx/MySQL đang giữ file
systemctl restart nginx

Kiểm tra lại bằng df -h, dung lượng đĩa sẽ được giải phóng lập tức.

7. Cấu hình bảo mật và tối ưu Logrotate tự động

Để tránh tình trạng nửa đêm thức giấc xử lý VPS bị đầy dung lượng do log, bạn cần cấu hình công cụ xoay vòng log (Logrotate). Đây cũng là một phần của quy trình bảo mật VPS, giúp ngăn chặn các đợt scan từ botnet làm sập ổ cứng máy chủ.

Sửa file cấu hình logrotate của Nginx tại /etc/logrotate.d/nginx:

/var/log/nginx/*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
    endscript
}

Cấu hình trên sẽ giúp tự động nén (compress) file log cũ và chỉ giữ lại log của 7 ngày gần nhất (rotate 7). Trong trường hợp máy chủ của bạn thường xuyên đầy ổ đĩa do dữ liệu thật của khách hàng tăng lên, chứ không phải do file rác, bạn cần xem xét nâng cấp lên hệ thống Cloud Server để có khả năng tăng dung lượng đĩa lập tức (Scale up) mà không phải xóa bớt dữ liệu.

Cloud Server InterData

Nâng/hạ tài nguyên nhanh theo tải, mạng tốc độ cao

Môi trường production cần hạ tầng ổn định hơn?

Đối với các website doanh nghiệp lớn, nền tảng thương mại điện tử hoặc dự án có nhiều thành viên quản trị, việc gián đoạn do hết disk cứng là không thể chấp nhận. Nâng cấp lên Cloud Server tại InterData giúp bạn linh hoạt mở rộng tài nguyên (RAM, CPU, Disk) nhanh chóng ngay khi có nhu cầu, đảm bảo hệ thống vận hành liên tục mà không cần cấu hình lại từ đầu.

Xem Bảng Giá Cloud Server ⟶

Câu Hỏi Thường Gặp về Quản Trị Dung Lượng Linux

Tại sao VPS bị full ổ cứng dù tôi ít tải file?

Nguyên nhân chính là các hoạt động ngầm sinh ra file như nhật ký (log) của hệ điều hành, log truy cập web, hoặc binlog của cơ sở dữ liệu. Nếu không thiết lập cơ chế xóa tự động, chúng sẽ phình to không giới hạn.

Lệnh kiểm tra dung lượng VPS là gì?

Để kiểm tra dung lượng tổng thể, sử dụng lệnh df -h. Lệnh này hiển thị số block đã dùng. Nếu nghi ngờ hết số lượng file (inode), hãy gõ df -i. Để quét thư mục chiếm chỗ, dùng lệnh du -sh /*.

Làm sao tìm file lớn nhất trong Linux?

Sử dụng tổ hợp lệnh du -sh /* | sort -rh | head -n 10 để tìm 10 thư mục lớn nhất. Nếu tìm chính xác file lớn hơn 1GB, sử dụng lệnh find / -type f -size +1G -exec ls -lh {} \;.

Xóa file log Nginx/MySQL bằng “rm” có sao không?

Tuyệt đối không dùng rm xóa log web hoặc database khi dịch vụ đang chạy vì sẽ gây lỗi tiến trình ghi file. Hãy dùng lệnh cat /dev/null > /đường-dẫn-file-log để làm rỗng nội dung file một cách an toàn.

Khắc phục lỗi báo full disk nhưng dung lượng vẫn còn trống?

Điều này xảy ra do bạn xóa file bằng rm nhưng dịch vụ vẫn giữ file đó trên RAM. Sử dụng lệnh lsof +L1 để tìm tiến trình đang “ngậm” file, sau đó khởi động lại dịch vụ hoặc dùng lệnh kill để giải phóng hoàn toàn.

Tổng Kết

Việc xử lý VPS bị đầy dung lượng không hề khó nếu bạn thao tác bình tĩnh và kiểm tra chính xác nguyên nhân thông qua các lệnh df -h, du -sh và lsof. Cốt lõi của quản trị Linux là không tùy tiện xóa file vật lý bằng lệnh rm đối với các tiến trình log đang chạy, mà thay vào đó sử dụng lệnh làm rỗng an toàn.

Hãy cấu hình công cụ Logrotate để tự động dọn rác và lên phương án giám sát. Nếu dữ liệu website thực sự phát triển vượt mức lưu trữ cho phép, hãy xem xét nâng cấp gói VPS hiện tại hoặc chuyển đổi sang hạ tầng Cloud Server của InterData để đảm bảo không gian mở rộng tốt nhất.

Nội dung mang tính tham khảo. Lệnh, cú pháp, đường dẫn file và tùy chọn cấu hình có thể thay đổi theo phiên bản hệ điều hành, phiên bản phần mềm và môi trường cụ thể. Nên kiểm thử, sao lưu dữ liệu và đánh giá rủi ro trước khi áp dụng lên server production.