Day 21st: Inode Introduction

Source: Internet
Author: User
Tags disk usage

This chapter simply explains the knowledge of the Inode, about the following are all from the commitment to the operation of the friends! And I'm just a porter.


Delete files using inode:

Sometimes, you will have such confusion that deleting a file cannot be deleted. This may be because the file name is Chinese and is not displayed properly under the Linux command line.

such as: LS to see the current directory has a file named such a file

-=?+.jpg +-?+.jpg

The use of LS RM mv and other commands will be invalidated, what should I do?

Check the inode number first.


6340540-=?+.jpg 6340539 +-?+.jpg

The left is the number of inode. The removal method is

Find. -inum 6340540 |xargs RM

Find. -inum 6340539|xargs RM

Brief introduction:

The inode is a data structure in the UNIX operating system, which is essentially a struct, which contains some important information related to each file in the file system. When you create a file system in UNIX, a large number of inode is created at the same time. Typically, approximately 1% of the space in the file system disk space is allocated to the Inode table.

Sometimes, people use a number of different terms, such as Inode and index number (inumber). The two terms are very similar and interrelated, but they are not referring to the same concept. The inode refers to the data structure, and the index number is actually the ID number of the inode, which is also called the inode number or index number. The index number is just one important part of the file-related information. The next section describes some of the other properties in the Inode.

The Inode table contains a list of all inode numbers for the corresponding file system. When a user searches for or accesses a file, the UNIX system finds the correct inode number through the Inode table. After the inode number is found, the associated command can access the inode and make the appropriate changes to it.

For example, use VI to edit a file. When you type VI <filename>, the inode number is found in the Inode table, allowing you to open the inode. During the edit session for VI, some of the properties in the Inode were changed, and when you complete the operation and type: Wq, the inode is closed and freed. In this way, if two users attempt to edit the same file, the Inode has been assigned to another user ID (UID) during the first edit session, so the second editing task must wait until the Inode is released.


The inode structure is relatively simple for an experienced UNIX developer or administrator, but there may be some surprising insider information about the inode that you don't yet know. The following definition gives only important information that is included in the inode and is used frequently by UNIX users:

Inode number

Used to identify file types, and schema information for stat C functions

Number of links to files

The UID of the owner

Owner's group ID (GID)

Size of File

Actual number of disk blocks used by the file

Time of last modification

Time of last visit

Time of last change

Essentially, the inode contains all the information about the file (in addition to the actual name of the file and the actual data content). The complete inode structure can be found in unix/linux Header file/usr/include/jf/ino.h, or in Web pages.

The information listed above is important for files and is frequently used in UNIX. If this information is not available, the file will be considered compromised and unusable.

directories and files in UNIX systems may look different compared to other operating systems, but that is not the case. In UNIX, the directories themselves are files, but some additional settings are used in their inode. A directory is essentially a file that contains other files. In addition, some corresponding flags are set in the schema information to inform the system that the file is actually a directory.

First, what is the inode?

To understand the inode, start with the file storage.

The file is stored on the hard disk, and the minimum storage unit for the hard disk is called "Sector" (Sector). Each sector is stored 512 bytes (equivalent to 0.5KB).

When the operating system reads the hard disk, it does not read each sector, so the efficiency is too low, but the one-time continuous reading of multiple sectors, that is, one time to read a block. This "block", composed of multiple sectors, is the smallest unit of file access. "Block" size, the most common is 4KB, that is, eight consecutive sector to form a block.

File data is stored in "blocks", then obviously, we must also find a place to store the meta-information of the file, such as the creator of the file, the date the file was created, the size of the file, and so on. This area of stored file meta information is called Inode, and the Chinese name is "Index node".

Ii. contents of the Inode

The inode contains meta information for the file, specifically the following:

* Number of bytes in the file

* User ID of the owner of the file

* The group ID of the file

* file read, write, execute permissions

* File timestamp, total three: CTime refers to the time when the inode was last changed, mtime refers to the time when the file content was last changed, atime refers to the time when the file was last opened.

* Number of links, that is, how many filenames point to this inode

* Location of File data block

You can use the Stat command to view inode information for a file: Stat Example.txt

In summary, all file information except the filename is present in the inode. As for why there is no file name, the following is explained in detail.

Third, the size of the Inode

The inode also consumes hard disk space, so when the hard disk is formatted, the operating system automatically divides the hard disk into two zones. One is the data area, the file data is stored, and the other is the Inode area (inode table), which holds the information contained in the Inode.

The size of each inode node is typically 128 bytes or 256 bytes. The total number of inode nodes, given at the time of formatting, is usually set to one inode per 1KB or 2KB each. Assuming that the size of each inode node in a 1GB hard disk is 128 bytes, and one inode is set per 1KB, the Inode table will be about 128MB in size, accounting for 12.8% of the entire drive.

You can use the DF command to view the total number of inode per hard disk partition and the quantity that is already in use. df-i

To see the size of each inode node, you can use the following command:

sudo dumpe2fs-h/dev/hda | grep "Inode size"

Since each file must have an inode, it is possible that the inode has been exhausted, but the hard disk is not yet full. At this point, you cannot create a new file on your hard disk.

Iv. inode Number

Each inode has a number, and the operating system uses Inode numbers to identify different files.

It is worth repeating that the Unix/linux system does not use file names, and inode numbers are used to identify files. For the system, the file name is just an alias or nickname for the inode number to easily identify. On the surface, the user opens the file by file name. In fact, this process inside the system is divided into three steps: First, the system finds the inode number corresponding to the file name, and secondly, obtains the inode information through the inode number, and finally, according to the Inode information, finds the block of the file data and reads the data.

with the Ls-i command, you can see the inode number corresponding to the file name: ls-i example.txt

V. Catalogue files

In a unix/linux system, directory is also a file. Opening the directory is essentially opening the directory file.

The structure of the catalog file is very simple, which is a list of a series of catalog items (dirent). Each directory entry consists of two parts: the file name of the included file, and the inode number that corresponds to the file name.

the LS command lists only all the file names in the directory file: ls/etc

The ls-i command lists the entire directory file, that is, the file name and inode number: Ls-i/etc

If you want to view the details of a file, you must access the Inode node based on the inode number and read the information. The ls-l command lists the details of the file. Ls-l/etc

Six, hard links

In general, the file name and inode number are the "one by one correspondence" relationship, and each inode number corresponds to a file name. However, the Unix/linux system allows multiple filenames to point to the same inode number. This means that the same content can be accessed with different file names, and changes to the contents of the file affect all file names, but deleting a file name does not affect access to another file name. This is referred to as a "hard link".

The ln command can create a hard link: the ln source file destination file

After running the above command, the source file is the same as the inode number of the destination file, pointing to the same inode. One of the inode information is called the "number of links," which records the total number of filenames pointing to the inode, which increases by 1. Conversely, deleting a file name causes the "number of links" in the Inode node to be reduced by 1. When this value is reduced to 0, indicating that no file name points to the Inode, the system reclaims the inode number and its corresponding block region.

Here, by the way, the "number of links" to the catalog file. When you create a catalog, two catalog entries are generated by default: "." and ".". The inode number of the former is the inode number of the current directory, which is equivalent to the "hard link" of the current directory, and the inode number is the inode number of the parent directory of the current directory, which is equivalent to the "hard link" of the parent directory. Therefore, the total number of "hard links" in any directory is always equal to 2 plus the total number of subdirectories (including hidden directories), where 2 is the "hard link" to the parent directory and the ". Hard link" in the current directory.

Seven, soft link

In addition to hard links, there is a special case. The inode number for file A and file B is different, but the content of file A is the path to file B. When you read file A, the system automatically directs the visitor to file B. Therefore, regardless of which file you open, the final read is file B. At this point, file A is referred to as the "soft link" of File B (soft link) or "Symbolic link" (symbolic).

This means that file a depends on file B and if file B is deleted, opening file A will cause an error: "No such file or directory". This is the biggest difference between soft links and hard links: file a points to file B's file name, not file B's inode number, and file B's Inode "link count" does not change.

The ln-s command can create a soft link.

Ln-s source file or directory destination file or directory

Viii. the special role of the Inode

Because the inode number is separated from the file name, this mechanism causes some unix/linux system-specific phenomena.

1. Sometimes the file name contains special characters and cannot be deleted properly. At this point, delete the Inode node directly, you can play the role of deleting files.

2. Move or rename the file, just change the file name without affecting the inode number.

3. After opening a file, the system will identify the file with the Inode number and no longer consider the filename. Therefore, it is generally not possible for the system to know the file name from the inode number.

The 3rd makes software updates simple and can be updated without shutting down the software, without requiring a restart. Because the system through the Inode number, identify the running files, not through the file name. Update, the new version of the file with the same file name, the generation of an inode, will not affect the running files. The next time you run this software, the file name will automatically point to the new version of the file, the old file's inode is recycled.

Nine Practical problems

In a low-profile Linux server (memory, hard disk relatively small) in the/data partition to create files, the system prompted insufficient disk space, with the df-h command to see the disk usage, found that the/data partition only used 66%, and 12G of the remaining space, it is said that this problem does not occur. Later, using Df-i to view the index node (inode) of the/data partition, it was found to be full (iused=100%), which prevented the system from creating new directories and files.

Find Reason:

There are a very large number of small-byte cache files in the/data/cache directory, with no more blocks, but a lot of inode.


1. Delete some files in the/data/cache directory and release part of the inode from the/data partition.

2. Use a soft connection to connect the Newcache directory in the free partition/opt to the/data/cache, using the inode of the/OPT partition to alleviate the problem of insufficient/data partition Inode:


Day 21st: Inode Introduction

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.