The inode number is the number identifier used to distinguish different files in the Linux system. Linux internally uses inode numbers to identify files, rather than file names. For the system, file names are another name for inode numbers, which is convenient for users to identify files. There is a one-to-one correspondence between file names and inode numbers, and each inode number corresponds to A filename.
In Linux, the i node refers to the inode node.
In Linux, file search is not done by file name. In fact, the search and positioning of files is achieved through i nodes. We can visualize the i node as a pointer fip. When a file is stored on the disk, the file will definitely be stored in a disk location. You can imagine that since the file data is stored on the disk, if we know the address of the file data, when we want to read and write the file At this time, can we just use this address to find the file?
Yes, under Linux, the i-node can actually be thought of like this. The i-node is regarded as an address pointing to the file storage area on the disk. Normally, we cannot use this address directly, but need to use it indirectly through the file name. In fact, in addition to the address of the file data storage area, the i node also contains a large amount of other information, such as file size, file information, etc. But the i node does not save the file name. The file name is saved in a directory entry. Each directory entry contains the file name and i-node.
We can use a diagram to see the relationship between directory entries, i nodes, and file data.
As you can see from the above figure, the directory entry contains the file name and i node.
At the same time, you will find that in the above figure, the i nodes of directory item A and directory item B point to the same storage area, and this storage area stores the data of printf ("ha").
That means the contents of helloA.c and helloB.c are the same.
iNode number
Each inode has a number (i.e. inode number), and the operating system uses the inode number to identify different files.
————Linux internally uses inode numbers to identify files, not file names. For the system, file names are another name for inode numbers, which is convenient for users to identify files. File names and inode numbers are the same. A corresponding relationship, each inode number corresponds to a file name.
The inode number is the only code recognized by the system, and the file name is only for user identification. The inode (index node) table contains a list of all files in the file system. One node (index node) is in a table entry. , contains information (metadata) about the file.
Structure after hard disk partition:
When a user tries to access a file in a Linux system, the system will first name to find its corresponding inode number; obtain the inode information through the inode number; check whether the user has the permission to access the file according to the inode information; if so, point to the corresponding data block and read the data; if not will return.
Simple process for accessing files:
2.1 Limit on the number of inodes
#Inodes also consume hard disk space, so when formatting, the operating system automatically divides the hard disk into two areas: one is the data area , stores file data; the other is the inode area, which stores the information contained in the inode. The size of each inode is generally 128 bytes or 256 bytes.
Normally, you don’t need to pay attention to the size of a single inode, but you need to focus on the total number of inodes. The total number of inodes has already been determined during formatting
——Why is the focus needed? Pay attention to the total number of inodes, because when the inodes are used up, new files cannot be created even if there is still space on the disk , because when creating a file, an inode number is required to correspond to it, and naturally it is impossible to create a new file without an inode. document.
Execute the "df-i" command to view the total number of inodes corresponding to each hard disk partition and the number of used inodes.
2.2 The content of inode
The inode contains the meta-information of the file, specifically the following contents:
The number of bytes of the file
The owner of the file user ID
The group of the file ID
File read, write, and execute permissions
Number of links, that is, how many files point to this inode
The timestamp of the file
Two ways to view the inode information of a certain file
Method 1: stat [file name]
Example: stat aa.txt
Advantages: You can view the detailed information of the file inode
Method 2: ls -i [file name]
Only the inode number can be displayed
2.3 Three main time attributes of Linux system files
The three main time attributes of Linux system files (that is, the timestamp in the inode)
ctime (change time)
refers to the last changeThe time of the file or directory (attribute)
atime (access time)
refers to the last access to the file or Directory time
mtime (modify time)
refers to the time when the last modification file or directory (content)
Because the inode number is separated from the file name, some Unix/Linux systems have the following phenomena :
When the file name contains special characters, the file may not be deleted normally. Delete the inode directly, or you can delete the file
Move Or when renaming a file, only the file name is changed and the inode number is not affected
After opening a file, the system identifies the file by the inode number and no longer considers the file name
After the file data is modified and saved, a new inode number will be generated (the original inode number will be released)
How to delete the inode Delete file number:
Method 1 (information required before deletion): find ./ -inum [inode number] -exec rm -i {} \ ;
Method 2 (direct deletion): find ./ -inum [inode number] -delete
The above is the detailed content of What does the linux i-node number mean?. For more information, please follow other related articles on the PHP Chinese website!