Disk, filesystem và kiểm tra dung lượng là chủ đề cực kỳ thực tế vì rất nhiều sự cố production bắt nguồn từ việc ổ đầy: database không ghi được, log phình to, backup fail, package update lỗi hoặc website trắng trang vì hết chỗ ghi session/cache.
Bài này giúp anh hiểu không chỉ dung lượng tổng, mà cả mount point, inode và cách truy ra thư mục nào đang chiếm chỗ.
1. Các lệnh đầu tiên
df -h
lsblk
mount | head
sudo du -sh /var/* 2>/dev/null | sort -h | tail -20
df -h cho biết filesystem nào đang đầy; du giúp truy tiếp thư mục nào chiếm dung lượng.
2. Hiểu mount point
Không phải mọi thư mục đều nằm cùng một phân vùng. Ví dụ /, /var, /home có thể tách riêng. Vì vậy, nhìn du một nơi mà kết luận cả máy còn chỗ hay không là chưa đủ.
3. Inode là gì và vì sao ổ còn dung lượng vẫn báo full?
Một filesystem có thể hết inode trước khi hết GB nếu chứa quá nhiều file nhỏ. Kiểm tra:
df -ih
Nếu inode 100%, anh phải xóa bớt file nhỏ, không phải mở rộng dung lượng ngay lập tức.
4. Kịch bản thực tế: log làm đầy /var
df -h /var
sudo du -sh /var/log/* 2>/dev/null | sort -h | tail -20
Nếu một file log tăng bất thường, cần tìm nguyên nhân và cấu hình logrotate thay vì chỉ xóa cho xong.
5. File bị xóa nhưng dung lượng chưa trả lại
Một process có thể vẫn giữ file đã xóa. Kiểm tra bằng:
sudo lsof | grep deleted | head
Đây là lỗi rất hay gặp với log file của ứng dụng đang mở.
6. Lab step-by-step
- Chạy
df -hvà ghi lại mount point nào quan trọng. - Chạy
df -ihđể xem inode. - Dùng
du -shđể tìm thư mục lớn trong/varvà/home. - Tạo thư mục lab chứa vài file lớn nhỏ khác nhau rồi quan sát bằng
du -sh. - Nếu có Docker hoặc logs lớn, quan sát thêm các thư mục chuyên biệt.
7. Lỗi thường gặp
- chỉ nhìn
df -hmà không truy đến thư mục chiếm chỗ - xóa log nhưng quên process vẫn giữ file open
- không theo dõi inode
- để backup local nằm mãi trên production
8. Tài liệu chính thống
9. Checklist production
- theo dõi cả dung lượng và inode
- biết mount point nào chứa log, data, backup
- có logrotate và chính sách dọn dẹp backup local
- biết dùng
lsofkhi xóa file mà disk chưa giảm - có cảnh báo khi filesystem vượt ngưỡng 80% hoặc 90%
10. Runbook xử lý disk full an toàn
- Xác định filesystem nào đầy bằng
df -hvà inode bằngdf -ih. - Xác định mount point bị ảnh hưởng:
/,/var,/home, volume riêng hay container storage. - Dùng
duđể truy dần thư mục chiếm chỗ, không xóa theo cảm giác. - Nếu vừa xóa file mà disk chưa giảm, kiểm tra file deleted còn bị process giữ bằng
lsof | grep deleted. - Xác định thứ gì có thể dọn an toàn: cache, backup cũ, artifact cũ, log rotate lỗi, file tmp hết hạn.
- Xác minh lại ứng dụng và log sau khi giải phóng dung lượng.
11. Bốn thủ phạm rất hay gặp
- log phình to: ứng dụng lỗi liên tục hoặc logrotate cấu hình sai
- backup local tồn đọng: file tar/SQL dump để lại nhiều ngày
- Docker/container artifacts: image, layer, volume hoặc container log
- file tạm: cache, upload chưa xử lý xong, file build
12. Case thực tế: /var đầy do log tăng bất thường
df -h /var
sudo du -sh /var/log/* 2>/dev/null | sort -h | tail -20
sudo ls -lah /var/log
Nếu phát hiện một log file khổng lồ, đừng chỉ xóa nó cho xong. Hãy hỏi tiếp: ứng dụng nào đang spam lỗi, logrotate có chạy không, và nếu truncate/xóa thì process có cần reopen file không.
13. Case thực tế: inode full dù còn nhiều GB
Nếu df -h trông vẫn ổn nhưng hệ thống báo không tạo được file mới, hãy nhìn df -ih. Điều này thường xảy ra khi có quá nhiều file nhỏ như cache, mail queue, session file hoặc ảnh thumbnail sinh quá mức.
14. Những thứ không nên xóa bừa
- file database đang dùng
- binary hoặc thư mục ứng dụng active mà chưa hiểu rõ
- toàn bộ
/var/logchỉ vì thấy nhiều file - volume hoặc image container khi chưa biết service nào đang phụ thuộc
15. Lab mở rộng: truy dần thư mục lớn theo cây
sudo du -xhd1 / | sort -h
sudo du -xhd1 /var | sort -h
sudo du -xhd1 /home | sort -h
Tùy chọn -x giúp anh không nhảy sang filesystem khác khi đang truy nguyên nhân trong một phân vùng cụ thể.
Kết luận: nắm chắc Disk, filesystem và kiểm tra dung lượng giúp anh xử lý sự cố đầy ổ có phương pháp, tránh vừa xóa dữ liệu vừa gây thêm rủi ro.
