欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux inode

程序员文章站 2022-04-29 19:54:06
...

1、inode是什么

      理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫扇区(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个块(block)。这种由多个扇区组成的块是文件存取的最小单位,块的大小,最常见的是4KB,即连续八个sector组成一个block,文件数据都储存在块中,那么很明显,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创年日期、文件的大小等等。这种储存元信息的区域叫做inode,中文译名为”索引节点”。inode (index node) 表中包含文件系统的所有文件列表。

2、inode有哪些信息

       Inode编号

        用来识别文件类型,以及用于stat C函数的模式信息

        文件权限

        文件的拥有者的UID

        文件所属组的GID

        链接数(指向这个文件名路径名称个数)

        文件的大小

        文件的间戳(ctime指inode上一次变动的时间,mtime是指文件内容上一次变动的时间,atime指文件上一次打开的时间)

        指向磁盘文件的数据块指针

        有关文件的其它数据

[[email protected]_0_11_centos tmp]# touch demo.txt
[[email protected]_0_11_centos tmp]# stat demo.txt
  File: ‘demo.txt’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd01h/64769d    Inode: 3926        Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-12-24 08:03:35.489346716 -0700
Modify: 2019-12-24 08:03:35.489346716 -0700
Change: 2019-12-24 08:03:35.489346716 -0700
 Birth: -
[[email protected]_0_11_centos tmp]# ls -i demo.txt
3926 demo.txt
[[email protected]_0_11_centos tmp]# echo "12rwdwrfefetgrerwcertetfybeytvwcrgtvu">>demo.txt
[[email protected]_0_11_centos tmp]# stat demo.txt
  File: ‘demo.txt’
  Size: 38              Blocks: 8          IO Block: 4096   regular file
Device: fd01h/64769d    Inode: 3926        Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-12-24 08:03:35.489346716 -0700
Modify: 2019-12-24 08:05:46.166645228 -0700
Change: 2019-12-24 08:05:46.166645228 -0700
 Birth: -
[[email protected]_0_11_centos tmp]# 

3、inode大小

inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。

每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%。

df -i 命令查看inode的使用情况
[[email protected]_0_11_centos tmp]# df -i
Filesystem      Inodes IUsed   IFree IUse% Mounted on
devtmpfs        236780   320  236460    1% /dev
tmpfs           239501     7  239494    1% /dev/shm
tmpfs           239501   443  239058    1% /run
tmpfs           239501    16  239485    1% /sys/fs/cgroup
/dev/vda1      3276800 95354 3181446    3% /
tmpfs           239501     1  239500    1% /run/user/0

由于每个文件都必须有一个inode,因此有可能发生inode已经用光,但是硬盘还未存满的情况。这时,就无法在硬盘上创建新文件。 

4、 atime/ctime/mtime

   atime(access time):文件中的数据最后被访问的时间;

   ctime(change time):文件的元数据被访问,权限、所有者、属组;

   mtime(modify time):文件内容被修改的最后时间;

ls -l默认显示的是mtime
[[email protected]_0_11_centos tmp]# ls -l demo.txt 
-rw-r--r-- 1 root root 38 Dec 24 08:05 demo.txt
[[email protected]_0_11_centos tmp]# ls -l --time=ctime demo.txt
-rw-r--r-- 1 root root 38 Dec 24 08:05 demo.txt
[[email protected]_0_11_centos tmp]# ls -l --time=atime demo.txt
-rw-r--r-- 1 root root 38 Dec 24 08:03 demo.txt

5、i_node与i_count

当i_node与i_count同时为0,说明文件真正被删除掉;

 

 

相关标签: Linux专栏