inode信息详解

inode介绍

要理解inode,就先要理解文件的存储方式。我们都知道,文件是存储在硬盘上的。硬盘的最小单位是扇区,每个扇区的大小为512字节。
如果系统在读取硬盘数据的时候按扇区一个一个来读取,那效率就太低了,而是一次连续性读取多个扇区,所以设计者又将多个扇区整合成一个块(block),所以,块就是文件存取的最小单位。一个块的大小为4k。
我们现在已经有了块的概念,文件数据就是存放在块中。但光有数据还是不行啊?为了方便管理文件,我们还需要文件的元信息,比如文件的属性,创建时间,权限,所占的块大小,数量等等。这些信息就是inode信息。所以硬盘在分区的时候会分为两个区域,一个区域存放数据,一个区域存放inode信息。
每一个文件都有一个对应的inode。

inode信息

使用stat指令可查看对应文件的inode信息。

[lzk@localhost ~]$ stat file 
  File: `file'
  Size: 319         Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d  Inode: 10775       Links: 1
Access: (0664/-rw-rw-r--)  Uid: (  500/     lzk)   Gid: (  500/     lzk)
Access: 2017-04-22 20:03:29.851012565 +0800
Modify: 2017-04-22 20:03:22.562012565 +0800
Change: 2017-04-22 20:03:22.563012584 +0800

具体内容如下:
文件名
inode编号
文件拥有者uid
文件的所属用户组 gid
文件的可读,可写,可执行权限 :Access: (0664/-rw-rw-r–)
文件的时间戳:

  • access time : 文件上一次打开的时间
  • modify time:文件内容上一次修改的时间
  • change time :文件的inode信息上一改变的时间

硬链接数:links
文件数据的所占用的块:block
文件所占用的字节数 size
等等。
Linux下一切皆文件,每个文件都有对应的inode信息。

关于inode编号,这里多说以下,每个文件都对应一个inode编号,操作系统用inode号码来识别文件,对于系统来说,文件名知识inode编号便于识别的别称或绰号。
表面上,打开文件是通过文件名,实际上要执行下面三个步骤:
1、查找文件的inode编号
2、根据inode编号,找到inode信息
3、根据inode信息找到文件对于所在的block,进行数据的读写。

inode大小

一个inode节点的大小一般为128字节或者256字节。inode节点的数量在硬盘格式化的时候就已经给定了。所以当Linux上创建文件过多时,就可能发生inode用光,无法创建新文件的问题。

查看inode的指令

查看每一个目录下每个文件的inode号
ls -i

查看对应文件的inode信息
stat [file]

查看硬盘上的inode总数和适用情况
df -i

查看硬盘上块(block)的总数和使用情况

df -l

[root@sys ~]# df -i
Filesystem      Inodes IUsed   IFree IUse% Mounted on

/dev/vda1      2621440 80420 2541020    4% /

 

[root@sys ~]# df -l
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/vda1       41151808 2536340  36502036   7% /
devtmpfs          498576       0    498576   0% /dev

 

查看每个inode大小

[root@system1 data]# dumpe2fs -h /dev/vda1 | grep "Inode size"
dumpe2fs 1.42.9 (28-Dec-2013)
Inode size:              256
 

实际问题

在一台配置较低的Linux服务器(内存、硬盘比较小)的/data分区内创建文件时,系统提示磁盘空间不足,用df -h命令查看了一下磁盘使用情况,发现/data分区只使用了66%,还有12G的剩余空间,按理说不会出现这种问题。 后来用df -i查看了一下/data分区的索引节点(inode),发现已经用满(IUsed=100%),导致系统无法创建新目录和文件。

 

查找原因:

  /data/cache目录中存在数量非常多的小字节缓存文件,占用的Block不多,但是占用了大量的inode。

解决方案:
  1、删除/data/cache目录中的部分文件,释放出/data分区的一部分inode。
  2、用软连接将空闲分区/opt中的newcache目录连接到/data/cache,使用/opt分区的inode来缓解/data分区inode不足的问题:

 

  ln -s /opt/newcache /data/cache

 

源指向目标链接

 

lrwxrwxrwx. 1 root root    5 Mar 10 18:34 test -> test3

test3是源 test是链接

 

无论对/opt/newcache 还是/data/cache操作都是对/opt/newcache进行操作的

[root@sys test2]# ln -s test3 test
[root@sys test2]# ls
test  test1  test2  test3  test4
[root@sys1 test2]# ll -h
total 8.0K
lrwxrwxrwx. 1 root root    5 Mar 10 18:34 test -> test3
drwxr-xr-x. 2 root root 4.0K Mar 10 18:34 test1
drwxr-xr-x. 2 root root 4.0K Mar 10 18:34 test2
-rw-r--r--. 1 root root    0 Mar 10 18:34 test3
-rw-r--r--. 1 root root    0 Mar 10 18:34 test4
[root@syst test2]# echo "hello" >> test3
[root@syst test2]# cat test3
hello
[root@sys test2]# cat test
hello
[root@sys test2]# echo "jack" >> test
[root@sys test2]# cat test
hello
jack
[root@sys test2]# cat test

 

出处:

 

http://blog.csdn.net/llzk_/article/details/70549742

参考:

https://www.cnblogs.com/itech/archive/2012/05/15/2502284.html

http://blog.csdn.net/samxx8/article/details/44779245

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值