Inode trong linux

I. Inode là gì.

Inode là một cấu trúc dữ liệu trong hệ thống Unix. Inode được cấp phát cho mọi tập tin và thư mục trong hệ thống. Inode không lưu dữ liệu thực tế. Thay vào đó, nó sẽ chỉ lưu siêu dữ liệu (metadata) của tập tin và thư mục.

Mỗi Inode trong Linux là một số xác định duy nhất. Nó còn được gọi là số chỉ mục và bao gồm các thuộc tính sau:

  • Kích thước
  • Quyền sở hữu (owner)
  • Date/time
  • Quyền và kiểm soát truy câp (access control).
  • Vị trí trên Disk
  • Loại file
  • Số lượng liên kết.
  • Metadata của file

Số lượng Inode giới hạn tổng số file và thư mục có thể được lưu trữ trong hệ thống (linux).

II. Kiểm tra Inode:
  1. Kiểm tra số inode của một file hoặc folder: có thể sử dụng một trong hai lệnh sau đây
    # stat [file-name]
    # ls -i [file-name]

  2. Kiểm tra số inode trên hệ thống:
    Sử dụng lệnh df -i để xem số inode trên hệ thống.
    Trong hình dưới, tổng số inode trên /dev/mapper/centos-root là 3654400, sô inode đã sử dụng là 62285, số inode còn lại là 23592115.

     
    Ngoài ra có thể thêm tùy chọn h trong lệnh trên để hiển thị kết quả tổng quát dể nhìn hơn: df -ih
II. Tình trạng full inode:
  • Trong hầu hết các trường hợp, số inode mặc định là dư thừa cho nhu cầu sử dụng thông thường.
  • Khi số inode sử dụng hết (100%), hệ thống linux sẽ không thể tạo thêm file hoặc thư mục.
  • Để kiểm tra những thư mục đang sử dụng nhiều inode, có thể thực hiện lệnh sau:
    # find / -xdev -printf '%h\n' | sort | uniq -c | sort -k 1 -n
IV. Tăng số lượng inode trên server Linux:
  1. Các thông số cần lưu ý:
    • Kích thước của một inode (inode size) mặc định là 256B, số lượng Inode tăng thì không gian để lưu trữ inode cũng tăng theo, không gian này sẽ không hiển thị trong systemfile. Nên các lệnh show thông tin systemfile như df -h sẽ hiển thị không đầy đủ không gian của partition.
    • Thông số byte-per-inode (tỷ lệ inode trên dung lượng tính bằng byte) sẽ ảnh hưởng đến số lượng inode trên một partition. Thông số này được thiết lập khi tạo systemfile cho partition và sẽ không thay đổi được. Mặc định với ext4 là 16 kB.
  2. Tăng số inode: có thể thực hiện một trong 2 cách sau:
    • Format lại partition kèm theo thiết lập thông số byte-per-inode.
      mkfs.ext4 -i [bype-per-inode] /dev/[parition]
      Ví dụ:    
      mkfs.ext4 -i 1024 /dev/sdb
      Với byte-per-inode là 1024 B = 1 kB
      Lưu ý:
      • Cách này sẽ format lại partition, đồng nghĩa với việc toàn bộ dữ liệu trên parition sẽ bị mất.
      • Long Vân khuyến cáo khách hàng có nhu cầu nên thực hiện từ partition/disk thứ 2 trở đi (partition/disk đầu chứa hệ điều hành).
    • Tăng dung lượng partition.