Mọi thứ trong Linux được coi là file để duy trì sự nhất quán. Đó bao gồm thiết bị phần cứng, máy in, thư mục (directory), và tiến trình (process). File thông thường như nhạc, văn bản, video, và file đa phương tiện khác cũng có dữ liệu bổ sung liên kết gọi là metadata (siêu dữ liệu).
Inode trong Linux là gì? Các entry (mục) Inode là cơ sở của hệ thống file Linux. Chúng quản lý metadata về file và là mảnh ghép thiết yếu của hoạt động bên trong Linux.
Cấu trúc của hệ thống File (File System) là gì?
Hệ thống file được chia thành hai phần – data block (khối dữ liệu) và inode. Số lượng block được cố định khi tạo và không thể thay đổi.
Tên, đường dẫn (path), vị trí, link và các thuộc tính file khác không nằm trong thư mục. Thư mục đơn giản là các bảng (tables) chứa tên file với số inode khớp.
Bạn có thể tạo hard link dẫn đến nhiều hơn một tên cho cùng một file. Khi tạo hard link, nó cũng tạo tên mới trong bảng với inode nhưng không di chuyển file.
Nếu bạn di chuyển một file lớn, sẽ mất nhiều thời gian. Hiệu quả hơn là tạo entry tên 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ự.
Phần trên cùng của hệ thống phân cấp là chính hệ thống file. Bên trong hệ thống file là tên file. Tên file link đến inode. Inode link đến dữ liệu vật lý (physical data).
Inode trong Linux là gì?
Một inode là một cấu trúc dữ liệu (data structure). Nó định nghĩa một file hoặc thư mục trên hệ thống file và được lưu trữ trong entry thư mục. Inode trỏ đến các block tạo nên một file. Inode chứa tất cả dữ liệu quản trị (administrative data) cần thiết để đọc một file. Metadata của mọi file được lưu trữ trong inode trong cấu trúc bảng.
Khi dùng chương trình tham chiếu file bằng tên, hệ thống sẽ tìm trong entry file thư mục nơi nó tồn tại để lấy inode tương ứng. Điều này cung cấp cho hệ thống của bạn dữ liệu file và thông tin cần thiết để thực hiện tiến trình hoặc hoạt động.
Inode thường nằm gần đầu phân vùng (partition). Chúng lưu trữ tất cả thông tin liên kết với file trừ tên file và dữ liệu thực tế. Tất cả file trong bất kỳ thư mục Linux nào đều có tên file và số inode. Người dùng có thể lấy metadata cho file bằng cách tham chiếu số inode.
Tên file và số inode được lưu trữ trong một index (chỉ mục) riêng biệt và link đến inode. Bạn có thể link đến metadata đại diện cho file. Có thể có nhiều tên file link đến một mảnh dữ liệu hoặc inode như bạn thấy trong hình dưới.
Số Inode (Inode Number) là gì?
Mọi inode trong cấu trúc Linux có một số duy nhất (unique number) được xác định với nó. Nó cũng được gọi là index number (số chỉ mục) và có các thuộc tính sau:
- Kích thước (Size)
- Chủ sở hữu (Owner)
- Ngày/giờ (Date/time)
- Quyền hạn và kiểm soát truy cập (Permissions and access control)
- Vị trí trên ổ đĩa (Location on the disk)
- Loại file (File types)
- Số lượng link (Number of links)
- Metadata bổ sung về file
Để kiểm tra danh sách số inode, dùng lệnh sau:
ls -i
Ảnh chụp màn hình dưới đây hiển thị một thư mục với số inode xuất hiện ở cột ngoài cùng bên trái.
Inode hoạt động như thế nào?
Khi bạn tạo file mới, nó được gán tên file và số inode. Cả hai được lưu trữ như entry trong một thư mục. Chạy lệnh ls (ls -li) sẽ cho bạn thấy danh sách tên file và số inode lưu trữ trong một thư mục.
Dùng lệnh dưới để liệt kê thông tin inode cho mỗi hệ thống file.
df -hi
Bạn đang dùng bao nhiêu Inode?
Một cách hết dung lượng trong filesystem là dùng hết tất cả inode. Dù bạn có đủ dung lượng trống trên ổ đĩa, bạn sẽ không thể tạo file mới.
Dùng hết tất cả inode cũng có thể dẫn đến hệ thống bị dừng đột ngột. Để xem danh sách thống kê về việc dùng inode như đã dùng, trống, và phần trăm dùng, gõ lệnh sau:
sudo df -ih
Các cách bổ sung Inode được sử dụng
Cách inode hoạt động trong Linux làm cho việc có số inode xung đột trở nên không thể. Không thể tạo hard link xuyên qua các hệ thống file khác nhau. Tuy nhiên, bạn có thể dùng soft link (symbolic link) xuyên qua các hệ thống file khác nhau. Bạn có thể xóa file gốc và vẫn có dữ liệu khả dụng qua hard link.
Bằng cách xóa file, tất cả những gì bạn làm là xóa một trong những tên trỏ đến một số inode cụ thể. Dữ liệu sẽ tồn tại cho đến khi bạn xóa tất cả tên liên kết với cùng số inode. Hệ thống Linux cập nhật mà không yêu cầu reboot hệ thống lớn phần nào là nhờ cách inode hoạt động.
Một tiến trình (process) có thể dùng file thư viện (library file) đồng thời tiến trình khác thay thế cùng file đó bằng phiên bản mới hơn đã cập nhật và tạo inode mới. Tiến trình đang chạy tiếp tục dùng file cũ. Lần sau bạn dùng cùng tiến trình, nó sẽ dùng phiên bản mới.
Người dùng không tương tác trực tiếp với inode, nhưng chúng đại diện cho một thành phần cơ bản của cấu trúc file Linux.