Linux inode
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中查看系统时间
下一篇: javascript实现A*算法实例汇总