---
title: "Inodes in Linux: limit, usage and helpful commands"
description: "Inodes in Linux are unique identifiers that describe files and directories within a filesystem. It is important to keep an eye on them to avoid issues related to inode shortage or excessive usage . Wh..."
url: https://www.stackscale.com/blog/inodes-linux/
date: 2023-03-13
modified: 2023-11-06
author: "Marketing Stackscale"
image: https://www.stackscale.com/wp-content/uploads/2022/06/inodes-linux-stackscale.jpg
categories: ["Systems"]
tags: ["Linux"]
type: post
lang: en
---

# Inodes in Linux: limit, usage and helpful commands

**Inodes in Linux are unique identifiers** that describe files and directories within a filesystem. It is important to **keep an eye on them to avoid issues related to inode shortage or excessive usage**.

## What is an inode?

An inode is **a data structure that keeps track of all the files and directories within a Linux or UNIX-based filesystem**. So, every file and directory in a filesystem is allocated an inode, which is identified by an integer known as “inode number”. These unique identifiers store metadata about each file and directory.

> “Inode” is the abbreviation for “index node”.

**All inodes within the same filesystem are unique**. However, the same inode number can be used in different filesystems. Because the filesystem ID and each inode number are combined to create unique identification labels.

### Metadata stored in an inode

Inodes store metadata such as:

- File type
- File size
- Owner ID
- Group ID
- Read, write and execute permissions
- Last access time
- Last change time
- Last modification time

### Inode number: creating, copying and modifying files

As explained above, **each inode is identified by an inode number**. Therefore, when creating or copying a file, [Linux](https://www.stackscale.com/blog/linux/) assigns a different inode number to the new file. However, when moving a file, the inode number will only change if the file is moved to a different filesystem. This applies to directories as well.

## Number of inodes in a filesystem

The theoretical total number of inodes in a system is approximately 4.3 billion. But the figure you should care about is the number of inodes in your system. The general ratio of inodes is 1:16 KB of system capacity. You can check the number of inodes in a filesystem using the `df` command with the `-i` option.

Let’s see why it is important to know the number of inodes in a filesystem.

### Inode limit

The total number of inodes in a filesystem is defined when it is created and it cannot be changed dynamically. So, it is important to **regularly check inode usage to guarantee it adjusts to the configured limits**. 

If you have ever got the following error message when trying to create a new file on a server — even though you know there is plenty of space still available —, you might have reached the inode limit of your system:

No space left on device

Although **it is unusual to run out of inodes before running out of actual disk space**, it is not impossible. It can happen when: 

- Using [containerization](https://www.stackscale.com/blog/containerization-containers-orchestration/).
- Creating lots of directories, symbolic links and small files.
- Creating ext3 filesystems with smaller block sizes.

### Inode usage issues and best practices

An excessive inode usage can lead to issues when creating new files and directories. Some of the **issues users may encounter when the server runs out of inodes** are:

- Data loss.
- Server restart.
- Application crash.
- Scheduled tasks not running.

So, it is recommended to **keep inode usage low** by deleting:

- Unnecessary files and directories.
- Cache files.
- Old email files.
- Temporary files.

## Helpful commands

### Check a file’s inode number 

#### Using the stat command

The `stat` command gives **information about the file and filesystem**. So, you can use it to check the inode number of a file.

[root@stackscale ~]$ stat /var/log/lastlog

When executing the command, you will get the following information:

File: /var/log/lastlog
Size: 292292     Blocks: 96 IO Block: 4096 regular file
Device: fd00h/64768d    Inode: 17381397 Links: 1
Access: (0664/~~rw-rw-r-~~) Uid: ( 0/ root) Gid: ( 22/ utmp)
Context: system_u:object_r:lastlog_t:s0
Access: 2022-01-12 11:28:19.900058928 +0100
Modify: 2022-01-12 11:28:19.900058928 +0100
Change: 2022-01-12 11:28:19.900058928 +0100
Birth: 2021-06-25 17:40:57.254208200 +0200

#### Using the ls command

You can also use the `ls` command, together with the `-i` option, to get a file’s inode number. This command **lists files and directories within the filesystem**.

[root@stackscale ~]$ ls -i /var/log/lastlog
17381397 /var/log/lastlog

### Check a directory’s inode number using the ls command

You can also use the `ls` command and the `-i` option to get a directory’s inode number. For doing so, you need to add a few more options.

[root@stackscale ~]$ ls -idl /var/log
16813380 drwxr-xr-x. 18 root root 4096 Jun 6 12:33 /var/log

### Check inode usage within a filesystem using the df command

The `df` command is used to display information related to a **filesystem’s total and available space**. So, you can use it, together with the `-i` option, to control inode usage in filesystems.

[root@stackscale~]$ df -i /dev/sda1
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 524288 379 523909 1% /boot

### Check the number of inodes in a directory using the wc command

The `wc` command is used to count the number of characters, words, lines and bytes of files. Together with the `-l` option, you can use it to **count the number of inodes in a directory**.

[root@stackscale]# find /var/log | wc -l
120

Need help with system administration? We can help you.
