Inodes là gì? Inodes là thành phần cốt lõi của hệ thống tệp, chịu trách nhiệm lưu trữ các thuộc tính và vị trí của dữ liệu, giúp hệ điều hành quản lý và truy cập các file một cách hiệu quả. Khi bạn mở, đọc, ghi hoặc xóa một file, hệ điều hành sẽ sử dụng số inode để tìm kiếm và truy cập thông tin siêu dữ liệu cũng như dữ liệu thực tế của file trên đĩa. Hãy cùng VinaHost tìm hiểu sâu hơn về Inodes nhé!
1. Tổng quan kiến thức về Inodes
1.1. Inodes là gì?
Về cơ bản, Inode (viết tắt của index node) được xem như một nút chỉ mục trong hệ thống tệp. Nó đóng vai trò là một mã nhận dạng duy nhất dành cho một loại siêu dữ liệu (metadata) cụ thể trên một số hệ thống tệp nhất định. Mỗi phần siêu dữ liệu này cung cấp thông tin chi tiết về đặc tính của tệp mà nó liên kết.
Bạn có thể hiểu rằng Inode chỉ hoạt động trong phạm vi của một hệ thống tệp cụ thể và không có sự liên thông với các hệ thống tệp khác. Điều đó đồng nghĩa với việc mỗi hệ thống tệp trong máy tính của bạn đều có một tập hợp Inode riêng biệt để thực hiện chức năng quản lý.
Một số Inode có thể được tái sử dụng nhiều lần, tuy nhiên, chúng tuyệt đối không bao giờ bị dùng chung trong cùng một hệ thống tệp. Khi kết hợp ID của hệ thống tệp với số hiệu riêng của Inode, chúng ta có thể tạo ra một mã định danh duy nhất cho từng cặp hệ thống tệp – Inode.

1.2. Số Inode là gì?
Số Inode (hay còn gọi là Inode number) là một con số duy nhất dùng để xác định một Inode cụ thể trong hệ thống tệp. Số Inode chính là chìa khóa để truy cập vào cấu trúc dữ liệu inode, và chính cấu trúc inode này mới chứa các thuộc tính (metadata) của một tệp hoặc thư mục.
Do đó, khi nói về “thuộc tính của Inode Number”, thực chất chúng ta đang nói đến các thuộc tính được lưu trữ trong cấu trúc dữ liệu mà số Inode đó trỏ tới.
Các thuộc tính chính (metadata) mà một Inode lưu trữ bao gồm:
- Số Inode User ID (UID): ID của người sở hữu tệp.
- Group ID (GID): ID của nhóm người dùng sở hữu tệp.
- Loại tệp (File type): Tệp thông thường, thư mục, liên kết, thiết bị,…
- Quyền truy cập (Permissions): Quyền đọc, ghi, thực thi (rwx) dành cho chủ sở hữu, nhóm và người khác.
- Kích thước tệp (File size): Tổng số byte của tệp.
- Thời gian liên quan đến tệp:
- ctime – Thời gian thay đổi thuộc tính Inode.
- mtime – Thời gian thay đổi nội dung tệp.
- atime – Thời gian truy cập cuối cùng.
- Số lượng liên kết (Hard links): Cho biết có bao nhiêu tên tệp trỏ đến cùng một Inode.
- Danh sách các khối dữ liệu (Data block pointers): Chỉ ra vị trí thực sự của dữ liệu trên ổ đĩa (thường chứa địa chỉ các block lưu nội dung tệp).
Xem thêm: Tổng hợp thông số Hosting Cơ Bản & Nâng Cao [Chi Tiết]
2. Cấu trúc của hệ thống file
Một hệ thống file thường được tổ chức thành hai phần chính: Inode và Data Block. Inode chịu trách nhiệm lưu trữ thông tin siêu dữ liệu (metadata) về tệp, trong khi Data Block là nơi lưu trữ nội dung thực sự của tệp. Khi hệ thống file được tạo ra (thường là khi định dạng phân vùng), số lượng inode và block cũng được xác lập và không thể thay đổi sau này, trừ khi bạn định dạng lại toàn bộ phân vùng.
Trong hệ thống file kiểu Unix, tên tệp, đường dẫn, vị trí và các thuộc tính khác không được lưu trực tiếp trong tệp hoặc trong inode. Thay vào đó, thư mục chỉ là một bảng ánh xạ giữa tên tệp và inode number tương ứng. Điều này có nghĩa là tên tệp chỉ là nhãn dùng để tham chiếu đến inode, và chính inode mới là phần lưu trữ toàn bộ thông tin về tệp và vị trí dữ liệu trên đĩa.
Một điểm đặc biệt của hệ thống này là bạn có thể tạo liên kết cứng (hard link), cho phép nhiều tên tệp khác nhau cùng trỏ đến một inode duy nhất – tức là cùng một tệp dữ liệu. Khi bạn tạo một hard link, bạn không sao chép hay di chuyển tệp, mà chỉ tạo thêm một mục nhập tên mới trong thư mục, trỏ về cùng inode ban đầu.
Do đó, nếu bạn cần “di chuyển” một tệp lớn sang thư mục khác, thay vì sao chép toàn bộ nội dung, bạn có thể chỉ cần tạo một mục nhập tên mới (name entry) trong thư mục đích và xóa mục nhập cũ. Cách làm này nhanh hơn rất nhiều và thực chất chỉ là thay đổi ánh xạ tên đến inodes. Tương tự như vậy, bạn có thể đổi tên tệp bằng cách cập nhật tên mà không thay đổi inode hay dữ liệu.
Về tổng thể, ta có thể thấy rằng hệ thống file hoạt động theo mô hình phân cấp. Ở cấp cao nhất là hệ thống file, trong đó chứa các thư mục. Bên trong mỗi thư mục là các tên tệp, mỗi tên sẽ ánh xạ tới một inode, và inode sẽ chỉ định tới các khối dữ liệu vật lý trên thiết bị lưu trữ.
Bạn có thể tham khảo cách mà hệ thống file tổ chức dữ liệu thực tế trên ổ đĩa qua hình minh họa sau đây nhé:

Trong đó:
- Directory (thư mục): Chứa danh sách ánh xạ giữa tên tệp và số Inodes.
- Inode: Không chứa tên tệp, mà chỉ chứa thông tin về tệp như quyền truy cập, kích thước, và đặc biệt là con trỏ đến các khối dữ liệu.
- Data block: Là nơi lưu trữ nội dung thực tế của tệp.
- Hai tên tệp có thể cùng trỏ đến một inode (như “report.doc” và “report_backup.doc”) -> đây chính là liên kết cứng (hard link).
3. Nguyên lý hoạt động của Inodes
Khi bạn tạo một tệp mới trên hệ thống file (filesystem), hệ điều hành sẽ tự động thực hiện hai bước song song:
- Gán một tên tệp (filename) để người dùng có thể nhận diện và truy cập.
- Cấp phát một inode mới, chứa toàn bộ thông tin siêu dữ liệu của tệp như: quyền truy cập, kích thước, thời gian tạo/sửa/truy cập, và đặc biệt là vị trí thực tế của nội dung tệp trên ổ đĩa.
Cả tên tệp và số inodes (inode number) đều được lưu dưới dạng các mục nhập (entry) trong một thư mục. Mỗi thư mục trên thực tế là một bảng ánh xạ giữa tên tệp và số inode tương ứng.
Khi người dùng thực hiện lệnh ls
trong terminal, hệ thống sẽ liệt kê tên các tệp có trong thư mục hiện tại. Nếu bạn muốn xem cả số inodes tương ứng, hãy sử dụng lệnh:
Lệnh này sẽ hiển thị danh sách các tệp trong thư mục, cùng với inode number của từng tệp. Ví dụ:
Trong đó, các số bên trái là inode number, còn bên phải là tên tệp.
Ngoài ra, để kiểm tra thông tin inode của từng hệ thống file, bạn có thể sử dụng lệnh:
Lệnh này hiển thị số lượng inodes hiện có, số inodes đã sử dụng và inodes còn trống trên từng phân vùng. Ví dụ đầu ra:
Thông tin này sẽ cho bạn biết hệ thống có còn đủ inode để tạo thêm tệp mới hay không, ngay cả khi dung lượng lưu trữ vẫn còn trống.
4. Inode được sử dụng để làm gì?
Trên các hệ thống file (như ext3, ext4 trong Linux), dữ liệu không được lưu trữ liên tục như trong các tệp văn bản đơn giản, mà được chia thành các khối dữ liệu (data blocks) có kích thước cố định. Khi bạn lưu một tệp có kích thước lớn hơn một block, hệ thống sẽ tự động tìm các khối trống tiếp theo để lưu phần còn lại của dữ liệu. Kết quả là nội dung của một tệp có thể bị phân tán trên nhiều khu vực khác nhau trong ổ đĩa.
Vấn đề phát sinh ở đây là làm sao bạn có thể biết toàn bộ dữ liệu của một tệp nằm ở đâu trên ổ đĩa, đặc biệt khi nó bị chia nhỏ và lưu rải rác? Inode sẽ giúp bạn giải đáp câu hỏi này!
Mặc dù không lưu trữ nội dung thực tế của tệp, Inodes được thiết kế để giữ toàn bộ siêu dữ liệu (metadata) liên quan đến tệp. Đặc biệt, nó chứa thông tin chỉ dẫn tới các khối dữ liệu mà hệ thống có thể sử dụng để truy xuất nội dung của tệp, bất kể dữ liệu đó nằm ở đâu trên ổ đĩa.

5. Tính ứng dụng của Inodes là gì?
Trong hệ điều hành Linux, Inode đóng vai trò trung tâm trong việc quản lý tệp tin một cách an toàn, hiệu quả và ổn định. Mỗi tệp hoặc thư mục khi được tạo ra sẽ được cấp phát một inode number duy nhất trong hệ thống file tương ứng, giúp ngăn chặn xung đột hoặc trùng lặp giữa các inode trong cùng một phân vùng.
Một đặc điểm quan trọng khác của hệ thống inode là liên kết cứng (hard link) – tức là nhiều tên tệp có thể trỏ đến cùng một inode không thể được tạo giữa các hệ thống file khác nhau. Điều này là do inode chỉ có ý nghĩa trong phạm vi của một hệ thống file duy nhất. Trong trường hợp cần liên kết giữa các hệ thống file, bạn buộc phải sử dụng liên kết mềm (soft link), tức là một tệp đặc biệt chứa đường dẫn đến tệp gốc thay vì liên kết trực tiếp đến inode.
Khi bạn xóa một tệp trong Linux, thực chất bạn chỉ đang xóa một trong các tên trỏ đến inode (tức là mục nhập trong thư mục). Tuy nhiên, dữ liệu thực tế của tệp và inode tương ứng sẽ vẫn còn tồn tại trên hệ thống cho đến khi mọi hard link trỏ đến inode đó bị xóa. Chỉ khi không còn tên nào tham chiếu đến inodes, hệ thống mới giải phóng inode và các block dữ liệu liên quan.
Điều này lý giải vì sao bạn có thể xóa một tệp gốc nhưng dữ liệu vẫn còn khả dụng thông qua một hard link hoặc vì sao một process vẫn tiếp tục hoạt động với một file đã bị “xóa”.
Linux cũng hỗ trợ bạn khả năng cập nhật linh hoạt mà không cần khởi động lại hệ thống nhờ cách quản lý inode. Giả sử một process đang sử dụng một thư viện dùng chung (shared library). Trong khi process này vẫn đang chạy, một process khác có thể thay thế tệp thư viện đó bằng một phiên bản mới – tức là tạo một tệp mới với inode mới.
Khi đó:
- Process đang chạy vẫn tiếp tục dùng phiên bản cũ vì nó đã mở inode cũ và đang giữ nó trong bộ nhớ.
- Process khởi động sau sẽ sử dụng phiên bản mới vì nó được ánh xạ đến inode mới thông qua tên thư viện hiện tại.
Cơ chế này giúp hệ thống vận hành ổn định, hỗ trợ cập nhật nóng (hot update) mà không làm gián đoạn các dịch vụ đang hoạt động.
Mặc dù người dùng cuối không tương tác trực tiếp với inode (vì thao tác chủ yếu qua tên tệp), nhưng inode vẫn là một thành phần nền tảng của hệ thống file trong Linux. Mọi hành động như tạo tệp, xóa tệp, đổi tên, cấp quyền truy cập, liên kết tệp… đều gián tiếp làm việc với inode thông qua hệ thống quản lý file của kernel.
6. Hướng dẫn cách kiểm tra số lượng Inodes
Để kiểm tra số lượng Inode hiện đang có trong hệ thống, bạn có thể sử dụng các câu lệnh sau đây:
# Xem số inode của tất cả file trong thư mục
ls -i
# Xem số inode của một file cụ thể
stat filename.txt
# Xem thông tin chi tiết bao gồm số inode
ls -li
Mình sẽ lấy ví dụ như sau:
$ ls -i
2621441 document.txt
2621442 photos/
2621443 music.mp3
Trong ví dụ này thì:
document.txt
có số inode là 2621441- Thư mục
photos/
có số inode là 2621442 music.mp3
có số inode là 2621443
7. Hướng dẫn cách giảm số lượng Inodes trong Hosting
Thông thường, mỗi nhà cung cấp hosting đều đặt giới hạn inodes cho mỗi tài khoản (thường từ 250,000 đến 500,000 inodes). Khi đạt giới hạn này, bạn sẽ không thể tạo file mới, upload ảnh, cài đặt plugin, gửi email, hay thực hiện bất kỳ thao tác nào cần tạo file mới – ngay cả khi tài khoản vẫn còn dung lượng đĩa. Điều này khiến website hoạt động bất thường, không thể backup, cập nhật, và có thể gây ra lỗi nghiêm trọng ảnh hưởng đến trải nghiệm người dùng.
Do đó, việc giảm số lượng Inodes trong hosting sẽ giúp bạn tránh vượt quá giới hạn tài nguyên do nhà cung cấp Hosting đặt ra, đảm bảo hiệu suất hoạt động ổn định và tránh lỗi khi tạo tệp, gửi email hoặc cập nhật website. Quá nhiều Inodes (tức là quá nhiều tệp nhỏ) có thể làm chậm hệ thống, gây khó khăn khi sao lưu, phục hồi dữ liệu và tiềm ẩn rủi ro bảo mật. Do đó, việc quản lý inodes hiệu quả sẽ giúp đảm bảo website của bạn luôn hoạt động ổn định, tránh gián đoạn dịch vụ.

Thao tác này thường được thực hiên khi bạn sử dụng dịch vụ hosting giới hạn inodes (như cPanel Hosting) hoặc bị cảnh báo vượt quá số inode cho phép. Để giảm số lượng Inodes, bạn có thể:
- Xóa file không cần thiết: Dọn dẹp các tệp tạm (
.tmp
), log (error_log
,*.log
), bản sao lưu cũ (.zip
,.tar.gz
), và tệp rác khác trong thư mụcpublic_html
hoặc các thư mục con. - Xóa email cũ: Truy cập vào thư mục
mail/
và xóa các email đã đọc, thư rác, thư trong thùng rác hoặc các tệp đính kèm không cần thiết. - Dọn cache website: Nếu bạn dùng WordPress, hãy xóa các tệp trong thư mục
wp-content/cache/
hoặc sử dụng plugin như WP-Optimize để dọn cache và dữ liệu tạm. - Xóa plugin, theme và mã nguồn không sử dụng: Truy cập
wp-content/plugins/
vàwp-content/themes/
để xóa những thứ không dùng đến. - Giảm số lượng hình ảnh và thumbnail: Sử dụng plugin để hạn chế tạo quá nhiều kích thước ảnh (thumbnail), và xóa ảnh không dùng đến.
- Nén các tệp nhỏ: Gom các tệp nhỏ lại và nén chúng thành file
.zip
nếu không cần truy xuất thường xuyên. - Giới hạn tự động sinh tệp: Kiểm tra các script, cron job hoặc plugin có khả năng tự động tạo hàng nghìn tệp nhỏ và tắt chức năng không cần thiết.
=> Đối với các dịch vụ Hosting của VinaHost bao gồm: Hosting giá rẻ, Hosting NVMe, Hosting Windows, Hosting WordPress, Hosting n8n, Hosting doanh nghiệp, SEO Hosting,… Khi khách hàng bị vượt số inode thì hãy liên hệ ngay với hỗ trợ kỹ thuật 24/7 để được hỗ trợ tận tình.
8. Một số câu hỏi liên quan đến Inodes
8.1. Số lượng của Inodes là bao nhiêu?
Về mặt lý thuyết, số lượng Inode tối đa có thể lên tới (khoảng 4.3 tỷ Inode). Con số này được giới hạn bởi kích thước trường định danh Inode trong cấu trúc hệ thống tệp.
Trong thực tế, số lượng Inode trên một hệ thống tệp cụ thể được xác định khi hệ thống tệp đó được tạo (định dạng), ví dụ như khi bạn sử dụng lệnh mkfs.ext4
. Số lượng này thường phụ thuộc vào:
- Dung lượng của phân vùng đĩa: Phân vùng lớn hơn thường có nhiều Inode hơn.
- Tỷ lệ byte/Inode: Đây là một tham số quan trọng. Khi định dạng, hệ thống sẽ phân bổ một Inode cho mỗi X byte dung lượng đĩa (ví dụ: 1 Inode cho mỗi 16KB hoặc 32KB). Tỷ lệ này càng nhỏ (tức là càng nhiều Inode trên mỗi byte dung lượng), thì tổng số Inodes tối đa càng cao. Tuy nhiên, điều này cũng đồng nghĩa với việc bảng Inode sẽ chiếm nhiều không gian đĩa hơn.
Trong môi trường shared hosting, các nhà cung cấp dịch vụ thường áp đặt giới hạn cứng về số lượng Inode cho mỗi tài khoản hoặc gói hosting. Các gói hosting phổ thông thường có giới hạn khoảng 200.000 đến 500.000 Inode. Các gói cao cấp hơn hoặc dịch vụ VPS (máy chủ riêng ảo) có thể có giới hạn lên tới vài triệu Inode hoặc thậm chí không giới hạn (tùy thuộc vào tài nguyên của VPS).
=> Nếu Khách hàng có nhu cầu sử dụng dịch vụ VPS, tham khảo ngay: VPS giá rẻ, VPS cao cấp, VPS windows, VPS NVMe, VPS MMO, VPS n8n, VPS GPU, VPS Forex.
9. Tổng kết
Qua bài viết này, ta có thể thấy Inode đóng vai trò rất quan trọng trong hệ thống file vì nó lưu trữ thông tin siêu dữ liệu của tệp như quyền truy cập, kích thước, thời gian sửa đổi và vị trí dữ liệu trên ổ đĩa. Nhờ Inode, hệ điều hành có thể quản lý, truy xuất và kiểm soát tệp hiệu quả mà không phụ thuộc vào tên tệp. VinaHost hi vọng bạn đã hiểu rõ Inodes là gì và biết cách kiểm soát số lượng inodes trong Hosting để quản lý dữ liệu một cách hiệu quả nhất!
Bạn có thể xem thêm các bài viết thú vị khác tại đây và đừng ngại ngần liên hệ VinaHost nếu cần hỗ trợ nhé:
- Email: support@vinahost.vn
- Hotline: 1900 6046
- Livechat: https://livechat.vinahost.vn/
Xem thêm một số bài viết khác:
Number of Processes là gì? | Ý nghĩa của Number of Processes
Entry Processes là gì? | Khắc phục Max Entry Processes A-Z
CPU là gì | Phân loại CPU phổ biến hiện nay