设为首页 收藏本站
查看: 711|回复: 0

[经验分享] Linux系统inode和block知识详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-2-28 09:04:28 | 显示全部楼层 |阅读模式
1. inode和block概述
在每个Linux存储设备或存储设备的分区被格式化(ext3,ext4等)之后,一般都有两部分:一部分是inode,另一部分是block。block是用来存储实际数据的,而inode用来存储这些数据的属性信息,包括文件的大小、属主、归属的用户组、读写权限、文件类型、修改时间,还包含指向文件实体的指针功能(inode节点到block的对应关系)等,但并不包含文件名。文件名一般被存储在其所在目录的block里面。
inode除了记录文件属性信息外,还会为每个文件进行信息索引,因此就有了inode的数值,用ls -li命令可以看到输出信息的第一列就是每个文件的索引数值:

1
2
3
4
5
6
7
8
9
[iyunv@Howden ~]# ls -li
total 64
    26 -rw-r--r--. 1 root root   585 Feb 20 23:29 70-persistent-net.rules
147011 -rw-------. 1 root root  1206 Oct 17 13:46 anaconda-ks.cfg
151004 -rw-r--r--  1 root root   137 Oct 17 14:02 ifcfg-eth0.ori
130308 -rw-r--r--. 1 root root 30148 Oct 17 13:46 install.log
130309 -rw-r--r--. 1 root root  7119 Oct 17 13:45 install.log.syslog
157559 -rw-r--r--  1 root root   823 Feb 25 19:49 optimise_sysctl
157552 -rw-r--r--  1 root root  1150 Nov 23  2013 sysctl.conf.ori




2. 访问文件的简单流程
当一个用户在Linux系统中试图访问一个文件时,系统会先根据文件名去查找它的inode,看该用户是否具有访问这个文件的权限。如果有,就指向相对应的文件数据block;如果没有权限,就返回Permission denied。


3. inode的大小
由于inode要存放文件的属性信息,所以它也是有大小的。inode的默认大小在CentOS 5.x系统中是128字节,而在CentOS 6.x中是256字节。inode的大小在创建存储设备的文件系统时是可以指定的,而在格式化之后就不能更改了。不过一般工作环境中不会有这个需求。可以用dumpe2fs命令来查看当前系统中的inode大小:
1
2
3
4
5
6
7
8
9
10
11
[iyunv@Howden ~]# dumpe2fs /dev/sda3 | grep -i "inode size"
dumpe2fs 1.41.12 (17-May-2010)
Inode size:              256
[iyunv@Howden ~]# dumpe2fs /dev/sda1 | grep -i "inode size"
dumpe2fs 1.41.12 (17-May-2010)
Inode size:              128
[iyunv@Howden ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       9.2G  5.0G  3.7G  58% /
tmpfs           242M     0  242M   0% /dev/shm
/dev/sda1       194M   29M  155M  16% /boot



我的系统是CentOS 6.5,可以看出,/boot分区的默认inode大小仍然是128,而根分区(常规分区)是256。

4. block的大小
在ext3或者ext4文件系统中,block的大小一般是1k,2k或者4k。在我的CentOS 6.5系统中,引导分区的block大小是1k,常规分区是4k:
1
2
3
4
5
6
[iyunv@Howden ~]# dumpe2fs /dev/sda1 | grep -i "block size"
dumpe2fs 1.41.12 (17-May-2010)
Block size:               1024
[iyunv@Howden ~]# dumpe2fs /dev/sda3 | grep -i "block size"
dumpe2fs 1.41.12 (17-May-2010)
Block size:               4096




5. inode和block的数量
如果想查看磁盘中inode的数量和使用情况,可以用df -i命令:
1
2
3
4
5
[iyunv@Howden ~]# df -i
Filesystem     Inodes  IUsed  IFree IUse% Mounted on
/dev/sda3      610800 110679 500121   19% /
tmpfs           61778      1  61777    1% /dev/shm
/dev/sda1       51200     38  51162    1% /boot



也可以用dumpe2fs命令查看某个分区中inode和block的总量:

1
2
3
4
5
6
7
[iyunv@Howden ~]# dumpe2fs /dev/sda3 | grep -i "inode count"
dumpe2fs 1.41.12 (17-May-2010)
Inode count:              610800
[iyunv@Howden ~]# dumpe2fs /dev/sda3 | grep -i "block count"
dumpe2fs 1.41.12 (17-May-2010)
Block count:              2438912
Reserved block count:     121945




6. 文件、inode和block之间的对应关系
磁盘读取文件数据是以block为单位读取的。一个文件无论多大都必须占用一个inode和至少一个block,一个block只能被一个文件使用,而一个inode可以被多个文件占用(硬链接)。

7. block大小的选择
由于一个block只能被一个文件使用,因此block并非越大越好。block越大,对于小文件(1k以下或者至少是4k以下)非常多的应用会十分浪费空间,但是对于大文件较多的应用,如视频等多媒体文件的读取,可以提升读取的效率,因为block越大,同样大小的文件需要读取的block数量就会越少,从而减少磁盘IO消耗。而如果block太小,就会降低磁盘读取大文件的效率,因为需要读更多数量的block。实际上,对于ext3/ext4文件系统,block的大小只有三种选择:1k、2k、4k。

8. 如何改变inode和block的大小
只能在格式化的时候改变inode和block的大小,具体命令如下(以ext4文件系统为例):
1
[iyunv@Howden ~]# mkfs.ext4 -b 2048 -I 2048 /dev/sda2



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-42792-1-1.html 上篇帖子: ubuntu、Centos、win2003开启snmp服务 下篇帖子: Linux文件系统选择 Linux 知识
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表