Rain Wiki · Linux

Inode và lỗi 'No space left on device'

Inode là gì, cách xem mức sử dụng inode bằng lệnh df -i và cách tìm các thư mục chứa hàng triệu tệp nhỏ.

Linux · Rain Wiki

Inode là cấu trúc dữ liệu mà hệ thống tệp kiểu Unix sử dụng để lưu trữ thông tin về một tệp, chẳng hạn như chủ sở hữu, quyền truy cập, kích thước và vị trí lưu trữ dữ liệu của tệp đó. Mỗi tệp sử dụng một inode và nhiều hệ thống tệp có số lượng inode cố định, vì vậy hàng triệu tệp nhỏ có thể gây ra lỗi 'No space left on device' trong khi lệnh df -h vẫn hiển thị dung lượng trống.

Cách xem inode

Lệnh 'df -i' liệt kê tổng số, số lượng đã sử dụng và số lượng inode trống trên mỗi hệ thống tệp. Lệnh 'ls -i' hiển thị số inode của một tệp và 'stat <file>' hiển thị chi tiết về inode của tệp đó.

Các nguyên nhân phổ biến

Các thư mục phiên làm việc (session) hoặc bộ nhớ đệm (cache) của ứng dụng web, hàng đợi thư điện tử, các tệp nhật ký nhỏ chưa được xoay vòng và bộ nhớ đệm bản dựng có thể tạo ra hàng triệu tệp.

Tìm thư mục gây lỗi

GNU du có thể đếm inode: 'du --inodes -x / | sort -n | tail' liệt kê các thư mục có nhiều mục nhập nhất.

Cách khắc phục tình trạng cạn kiệt inode

  1. Xác nhận: df -i (IUse% gần 100%).
  2. Tìm thư mục: sudo du --inodes -x --max-depth=3 / | sort -n | tail -20
  3. Kiểm tra xem cái gì tạo ra các tệp đó trước khi xóa bất kỳ thứ gì.
  4. Xóa các tệp cũ của ứng dụng đó bằng công cụ riêng của ứng dụng hoặc bằng lệnh find, ví dụ: find /path -type f -mtime +7 -delete sau khi chạy thử mà không có tham số -delete.

Lưu ý

  • Luôn chạy lệnh find mà không có -delete trước và đọc danh sách kết quả.
  • Số lượng inode của ext4 được cố định khi hệ thống tệp được tạo.

Nguồn

Cập nhật lần cuối: 2026-10-08

Bài liên quan