Linux How To's | Bash Scripting | Python

Thursday, 2 January 2014

The inode ( also known as Index Node) is a very basic concept related to Linux and UNIX filesystem. Each and every object/element in the filesystem is associated with an inode.

You must be aware of the fact that, most of the countries have given a unique identity to their citizens in the form of a unique identification number ('Aadhar Card' in India and 'SSN' in the USA) to identify an individual easily and uniquely. This also leads to make all the paper work corresponding to any citizen easier to be handled.

Just like these identification numbers for people, there is a unique identity of every member of a Linux filesystem which is known as Inode number and it uniquely exists for each and every individual file on Linux or Unix filesystems.

In any Linux/Unix filesystem, inodes occupy only up to 1% of the available disk space, whether it is the hard disk itself or a partition present on it. The inode space is helpful to "track" the files saved in the hard disk memory. Size of each inode entry is 128 bytes. The inode entries store metadata about each object of the filesystem (file or directory) that just points to these structures and does not store any kind of data. The metadata, stored by each inode entry, may have the following information about each structure:

Inode number

Access Control List (ACL)

Extended attribute

Direct/indirect disk blocks

Number of blocks

File access, change and modification time

File deletion time

File generation number

File size

File type

Group

Number of links

Owner

Permissions

Status flags

Whenever a new file is created within a directory, two things are assigned to it : a Name and an Inode number. Some people may think that any parent directory contains the entire file and all the information relevant to it which might not be always true. So we see that a directory associates a file name with its Inode number.

When a user wants to access the contents of a file or any information related to a file then he makes use of its file name in order to do that, but internally the file name is first linked with its Inode number. Then with that Inode number, the associated Inode is retrieved. There exists a table known as Inode table, which maintains the mapping information of Inode numbers with their corresponding Inodes.

Defining an Inode

An inode is a data structure on a traditional Unix-style filesystem such as UFS or ext3. An inode stores basic information about a regular file, directory, or other filesystem object.

How to access Inode Numbers?

1) Ls -i Command

As we all know, ls is used for listing all the files within a directory. ls command when used with option -i, will display the list of files along with their inode numbers.

Syntax:

ls -i

Output:

2) Df -i Command

The df command when used with option -i, will display Inode information.

Syntax:

df -i

Output:

3) Stat Command

Stat command is very useful in displaying the file statistics. This command also shows inode number of a file.

Syntax:

stat [file-name]

Output:

Another Use of Inode Numbers

If you have a file with a name 1/1/2014 then you cannot delete such file by its name using any Unix/Linux command. The only way with which you can achieve this is to delete it using it’s inode number. Linux or UNIX doesn’t allow the users to create a file with a name like 1/1/2014, but if you are using NFS from MAC OS or Windows then it is possible to create such a file.

I searched for many artilces regarding inodes and File System but I was not having clear idea about what is going on inside with File System and inode. But I got it. Sir, this article is very good and now I have clear idea about inode and inode table. Thanks