Tiếng Việt
Ổ đĩa đầy
Khi filesystem hết dung lượng, các thao tác sẽ lỗi với thông báo No space left on device: triển khai code, cài gói, ghi cơ sở dữ liệu, ghi log và tải tệp lên đều không chạy được. Lỗi này cũng có thể xuất hiện khi ổ đĩa vẫn còn trống nhưng filesystem đã hết inode (quá nhiều tệp nhỏ).
Khi phần Kết quả của một sự kiện có dòng No space left on device, mục Giải pháp trong chi tiết sự kiện sẽ dẫn tới trang này.
Xử lý nhanh bằng Dọn dẹp hệ thống
Chạy tiện ích Dọn dẹp hệ thống trước. Tiện ích xoá log cũ, gói không dùng và bộ nhớ đệm mà không đụng tới website hay cơ sở dữ liệu, phần Kết quả của sự kiện cho biết dung lượng trước và sau khi dọn. Nếu ổ đĩa vẫn gần đầy, làm theo các bước dưới đây để tìm thứ đang chiếm dung lượng.
1. Kiểm tra dung lượng và inode
Mở Terminal trên trang tổng quan của máy chủ, hoặc kết nối SSH bằng người dùng root, rồi chạy:
bash
df -h
df -iUse%gần100%trongdf -h: filesystem đã hết dung lượng.IUse%bằng100%trongdf -i: filesystem đã hết inode. Tìm các thư mục chứa rất nhiều tệp nhỏ (cache, session, hàng đợi mail…).
2. Tìm thư mục đang chiếm dung lượng
Liệt kê các thư mục cấp cao nhất theo dung lượng, chỉ trong cùng một filesystem:
bash
sudo du -xhd1 / 2>/dev/null | sort -hSau đó xem sâu vào thư mục lớn nhất, ví dụ /var:
bash
sudo du -xhd1 /var 2>/dev/null | sort -hNhững nơi hay chiếm nhiều dung lượng: log trong /var/log, dữ liệu Docker trong /var/lib/docker, cơ sở dữ liệu trong /var/lib/mysql, bản sao lưu cục bộ, tệp tải lên hoặc cache trong thư mục website ở /home.
3. Duyệt trực quan bằng ncdu
ncdu liệt kê thư mục theo dung lượng giảm dần, cho phép di chuyển và xoá tệp ngay trên một màn hình. Cài đặt nếu máy chủ chưa có:
bash
sudo apt install -y ncduSau đó quét toàn bộ filesystem, hoặc một thư mục cụ thể:
bash
sudo ncdu -x /
sudo ncdu /var| Phím | Tác dụng |
|---|---|
| ↑ ↓ | Di chuyển trong danh sách |
| Enter hoặc → | Mở thư mục |
| ← | Quay lại thư mục cha |
| d | Xoá tệp hoặc thư mục đang chọn (có hỏi xác nhận) |
| q | Thoát |
WARNING
Xoá trong ncdu không thể hoàn tác. Kiểm tra kỹ đường dẫn trước khi xác nhận.
4. Giải phóng dung lượng an toàn
Chỉ xoá dữ liệu bạn đã chắc chắn không còn cần:
Bộ nhớ đệm của trình quản lý gói và journal cũ:
bashsudo apt clean sudo journalctl --vacuum-time=7dDocker: kiểm tra trước bằng
docker system df. Chỉ prune image, container hoặc volume bạn chắc chắn không dùng. Volume chứa dữ liệu ứng dụng (ví dụ dữ liệu n8n), tuyệt đối không xoá tuỳ tiện.Bản sao lưu và tệp nén cũ (
.zip,.tar.gz,.sql) còn sót trong thư mục website.Log của ứng dụng: xoay vòng hoặc làm rỗng log bằng chính ứng dụng, không xoá tệp log đang được ghi.
5. Kiểm tra tệp đã xoá nhưng vẫn bị giữ
Nếu đã xoá tệp lớn mà df -h vẫn báo đầy, có thể một tiến trình đang chạy vẫn giữ các tệp đó:
bash
sudo lsof +L1Khởi động lại dịch vụ hiện trong kết quả (ở trang Ứng dụng hoặc bằng systemctl restart), hoặc khởi động lại máy chủ vào lúc ít truy cập. Sau đó chạy lại df -h.
Sau khi dọn dẹp
- Chạy lại
df -hvàdf -iđể chắc chắn ổ đĩa đã có chỗ trống. - Thực hiện lại thao tác bị lỗi.
- Để ổ đĩa không bị đầy lại: lên lịch Dọn dẹp hệ thống, xem lại số lượng bản sao lưu được giữ, hoặc nâng cấp ổ đĩa máy chủ.
DANGER
Không bao giờ xoá thư mục hệ thống, tệp cơ sở dữ liệu (/var/lib/mysql…), tệp cấu hình hoặc dữ liệu website đang chạy nếu chưa rõ chúng là gì và chưa có bản sao lưu khôi phục được.