Rain WikiWindows · Linux · Android

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

Khái niệmext4 và các hệ thống tệp tương tự

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.

1Cá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 đó.

2Cá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.

3Tì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

  1. inode(7) man7.org
  2. df(1) man7.org
  3. du(1) man7.org
  4. find(1) man7.org

Xem xét lần cuối: