“ 上节说到文件属性有一个叫做inode,那么它到底是什么呢,又有着什么样的作用呢?让我们一起来探讨下这个问题。”
在linux系统中我们如果新增一块磁盘在系统中使用,那必须要格式化文件系统,然后挂载到系统中才可以使用,那么在我们格式化磁盘之后会生成一定数量的inode和block,那么生成它们有什么作用呢?
inode是索引节点,linux读取文件首先会读取到这个索引节点,然后根据索引节点去找实体的数据
block:磁盘读取数据是按block为单位读取
听不大明白?那我们举个栗子:


inode是索引节点它相当于一本书的目录
block用来存放数据,它相当于具体的书籍的内容(每一页)

inode存储了除了文件名以外的所有信息,作为索引指向实体block
131272 -rw-r--r-- 1 root root 261 Jun 16 15:18 /etc/hosts除了/etc/hosts这个文件名之外,其它的属性都是存储在我们的inode中的
inode是一串数字,不同文件对应的inode在文件系统里是唯一的
如果inode号是相同的,那么它们互为硬连接文件
一个文件被创建之后至少需要一个inode和一个block(你写一篇内容,那么就要有标题和内容一样)
ext3/ext4文件系统的block中存放,block大小一般为1,2,4k,引导分区为1k 普通为4k,如果一个文件很大,可能会占用很多个block,就算一个文件再小,也会占用一个block,而且剩余空间不可用
这个就是说,你block大小是4K,你存入一个1K的文件,那么其余的3K将不可用,如果你存入的是一个12K的文件,他会占用3个block
一个文件可能会占用多个block,读取一次block就会消耗一次i/o,一般我们都是按照默认的生成即可
我们可以查看下我们磁盘的inode和block的大小
# 查看inode和block大小
[root@web ~]# dumpe2fs /dev/vda1|grep -i "block size"
dumpe2fs 1.42.9 (28-Dec-2013)
Block size: 4096
[root@web ~]# dumpe2fs /dev/vda1|grep -i "Inode size"
dumpe2fs 1.42.9 (28-Dec-2013)
Inode size: 256
# 数量
[root@web ~]# dumpe2fs /dev/vda1|egrep -i "block count|inode count"
dumpe2fs 1.42.9 (28-Dec-2013)
Inode count: 2621440
Block count: 10485499
Reserved block count: 471831
该文件系统最多还能再放2621440个文件,inode或block满了都不可以再放文件了。
如果我们的磁盘报错No space left on device,那我们就要分开分析了,查看是iode满了 还是block满了
df -h 命令可以看到我们block是否满了
df -hi命令可以看到我们inode是否满了
写小文件,INode会先满,写大文件,block会先满。
多一个点在看

多一条小鱼干
欢迎大家一起交流




