Inode linux là gì

Inodes chính là các cơ sở hệ của hệ thống file Linux. Vậy cụ thể hơn, Inodes là gì? Nó có vai trò như thế nào? Sau đây là những kiến thức cơ bản cần biết về Inodes.

Mọi thứ trong Linux được coi là một file để duy trì tính nhất quán. Trong đó bao gồm thiết bị phần cứng, printer, directory, process. Các file thông thường như nhạc, văn bản, video và các file đa phương tiện khác cũng có dữ liệu đi kèm được gọi là siêu dữ liệu (metadata). Các Inodes trong Linux là cơ sở của hệ thống file Linux. Chúng quản lý metadata về một file và là những phần thiết yếu trong hoạt động bên trong của Linux.

Inode linux là gì
Inodes là gì?

Cấu trúc của một hệ thống file 

Một hệ thống file được chia thành hai phần – data block và inodes. Số lượng block được cố định sau khi tạo và không thể thay đổi.

Tên, đường dẫn, vị trí, liên kết và các thuộc tính file khác đều không nằm trong thư mục. Thư mục chỉ đơn giản là các bảng chứa tên của các file với inode number phù hợp.

Bạn có thể tạo một liên kết cứng (hard link) để có nhiều hơn một tên cho cùng một file. Khi bạn tạo một liên kết cứng, nó cũng tạo ra một tên mới nhưng không di chuyển file.

Nếu bạn phải di chuyển một file lớn, sẽ mất nhiều thời gian. Do đó, sẽ hiệu quả hơn nếu tạo name entry trong thư mục mới và xóa entry cũ. Bạn cũng có thể đổi tên file theo cách tương tự.

Inode linux là gì
Cấu trúc của một hệ thống file

Phần trên cùng của hệ thống phân cấp là hệ thống file. Trong hệ thống file là các tên file. Tên file liên kết đến các inodes. Và các inode sẽ liên kết đến dữ liệu vật lý.

Vậy Inodes là gì?

Inode là một cấu trúc dữ liệu. Nó xác định một file hoặc một thư mục trên hệ thống file và được lưu trữ trong directory entry. Inodes trỏ đến các block tạo nên một file. Chúng chứa tất cả dữ liệu quản trị cần thiết để đọc một file. Metadata của mọi file được lưu trữ trong các inodes trong cấu trúc bảng.

Khi sử dụng một chương trình đề cập đến một file theo tên, hệ thống sẽ tìm trong directory entry file để kéo lên inode tương ứng. Điều này cung cấp cho hệ thống dữ liệu file và thông tin cần thiết để thực hiện các process.

Inodes thường nằm gần đầu của một phân vùng. Chúng lưu trữ tất cả thông tin được liên kết với một file ngoại trừ file name và dữ liệu thực tế. Tất cả các file trong bất kỳ thư mục Linux nào đều có filename và inode number. User có thể truy xuất metadata cho file bằng cách tham chiếu inode number.

File name và inode number được lưu trữ trong một index riêng biệt và liên kết đến inodes. Bạn có thể liên kết đến metadata đại diện cho file. Có thể có nhiều file name liên kết đến một phần dữ liệu hoặc inode như bạn có thể thấy trong hình dưới đây.

Inode linux là gì
Nhiều file name liên kết đến inode

Inode number là gì?

Mỗi inode trong cấu trúc Linux có một số duy nhất được xác định với nó. Nó còn được gọi là index number và có các thuộc tính sau:

  • Size
  • Chủ sở hữu
  • Date/time
  • Permission và access control
  • Vị trí trên đĩa
  • Loại file
  • Số lượng link
  • Metadata bổ sung

Để kiểm tra danh sách các inode number, hãy sử dụng lệnh sau:

ls -i

Ảnh chụp màn hình bên dưới hiển thị một thư mục có inode number xuất hiện ở cột ngoài cùng bên trái.

Inode linux là gì
Thư mục có inode number

Cách hoạt động của Inodes là gì?

Khi bạn tạo một file mới, nó sẽ được gán file name và inode number. Cả hai đều được lưu trữ dưới dạng các entry trong một thư mục. Chạy lệnh ls (ls -li) sẽ hiển thị danh sách file name và inode number được lưu trữ trong một thư mục.

Sử dụng lệnh bên dưới để liệt kê thông tin inode cho mỗi hệ thống file.

df -hi
Inode linux là gì
Thông tin inodes cho mỗi hệ thống file

Bạn đang sử dụng bao nhiêu Inodes?

Một cách để chạy hết dung lượng trong hệ thống file là sử dụng hết các inodes. Ngay cả khi có đủ dung lượng trống trên đĩa, bạn sẽ không thể tạo file mới.

Sử dụng hết tất cả cũng có thể dẫn đến hệ thống đột ngột dừng lại. Để xem danh sách thống kê về việc sử dụng inode, chẳng hạn như số lượng đã dùng, số lượng còn trống và tỷ lệ phần trăm được sử dụng, hãy nhập lệnh sau:

sudo df -ih
Inode linux là gì
Danh sách thống kê về việc sử dụng inodes

Các ứng dụng khác của Inodes là gì?

Cách hoạt động của inodes trong Linux đảm bảo không thể có xung đột giữa các inodes number. Ngoài ra cũng không thể tạo liên kết cứng trên các hệ thống file khác nhau. Thay vào đó, bạn có thể sử dụng các liên kết mềm (soft link). Bạn có thể xóa các file gốc mà vẫn có dữ liệu thông qua một liên kết cứng.

Khi bạn xóa một file, cũng có nghĩa là bạn đã xóa một trong những tên trỏ đến một inode number cụ thể. Dữ liệu sẽ vẫn còn cho đến khi bạn xóa tất cả các tên được liên kết với cùng một inode number. Hệ thống Linux cập nhật mà không yêu cầu khởi động lại là do cách thức hoạt động của chúng.

Một process có thể sử dụng thư viện file trong khi một process khác thay thế file đó bằng một phiên bản cập nhật mới hơn, và tạo một inode mới. Process đang chạy tiếp tục sử dụng file cũ. Lần tiếp theo bạn sử dụng process tương tự, nó sẽ sử dụng phiên bản mới.

User không tương tác trực tiếp với inodes, nhưng lại đại diện cho một thành phần cơ bản của cấu trúc file Linux.