热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux系统inode和block知识详解

1.inode和block概述在每个Linux存储设备或存储设备的分区被格式化(ext3,ext4等)之后,一般都有两部分:一部分是inode,另一部分是block。block是用

1. inode和block概述

在每个Linux存储设备或存储设备的分区被格式化(ext3,ext4等)之后,一般都有两部分:一部分是inode,另一部分是block。block是用来存储实际数据的,而inode用来存储这些数据的属性信息,包括文件的大小、属主、归属的用户组、读写权限、文件类型、修改时间,还包含指向文件实体的指针功能(inode节点到block的对应关系)等,但并不包含文件名。文件名一般被存储在其所在目录的block里面。

inode除了记录文件属性信息外,还会为每个文件进行信息索引,因此就有了inode的数值,用ls -li命令可以看到输出信息的第一列就是每个文件的索引数值:

[root@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大小:

[root@Howden ~]# dumpe2fs /dev/sda3 | grep -i "inode size"
dumpe2fs 1.41.12 (17-May-2010)
Inode size:	          256
[root@Howden ~]# dumpe2fs /dev/sda1 | grep -i "inode size"
dumpe2fs 1.41.12 (17-May-2010)
Inode size:	          128
[root@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:

[root@Howden ~]# dumpe2fs /dev/sda1 | grep -i "block size"
dumpe2fs 1.41.12 (17-May-2010)
Block size:               1024
[root@Howden ~]# dumpe2fs /dev/sda3 | grep -i "block size"
dumpe2fs 1.41.12 (17-May-2010)
Block size:               4096


5. inode和block的数量

如果想查看磁盘中inode的数量和使用情况,可以用df -i命令:

[root@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的总量:

[root@Howden ~]# dumpe2fs /dev/sda3 | grep -i "inode count"
dumpe2fs 1.41.12 (17-May-2010)
Inode count:              610800
[root@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文件系统为例):

[root@Howden ~]# mkfs.ext4 -b 2048 -I 2048 /dev/sda2


关于生产环境中文件系统类型和block大小如何选择,可以参考这篇博客:http://blog.csdn.net/liuaigui/article/details/5521024


Linux系统inode和block知识详解


推荐阅读
  • 猫猫分享,必须精品原文地址:http:blog.csdn.netu013357243articledetails44571163素材地址:http:download.csdn.n ... [详细]
  • 本文分析和介绍了GLo ... [详细]
  • Git(1)
    安装Git完毕(在开始菜单打开的话,打开的不是你想要的路径,切换路径很麻烦)1.D盘新建GitTest文件夹2.打开GitTest,在空白的地方右键,3.单击GitBashHere ... [详细]
  • python基础(二、pycharm安装、卸载)
    3.在Ubuntu中安装PyCharmPyCharm的官方网站地址是:https:www.jetbrains.compycharm注意:安装时不要使用root用户安装,否则后期使用 ... [详细]
  • MyBatis模糊查询和多条件查询一、ISmbmsUserDao层根据姓名模糊查询publicListgetUser();多条件查询publicList ... [详细]
  • 抓取百万知乎用户设计之实体设计
    一.实体的关系实体是根据返回的Json数据来设计的教育经历方面用户可以有很多教育经理,USER和education是一对多的关系,一个education对应一个education一 ... [详细]
  • Xib九宫格应用管理使用xib封装一个自定义view的步骤1新建一个继承UIView的自定义view,假设类名叫做(AppView)2新建一个AppView.xib文件来描述 ... [详细]
  • 看这里,教你如何快速将pdf文件翻译成中文
    因为网上下载的PDF资料,往往掺杂着一些英文,所以中英文翻译是一件很平常的事,毕竟不是每个人的英文都那么好,轻轻松松的就能够看完一篇英文的文件,那么,我们就要寻找翻译工具来帮助我们 ... [详细]
  • 以SOA服务为导向的信息系统构建是通过有计划地构建信息系统时,一种简单而有柔性的方法,就是组件化与服务导向架构。过去的信息系统,是在使用者需要新功能时才开发的,也就是响应不同时 ... [详细]
  • 接口测试的方式有很多,比如可以用工具(jmeter,postman)之类,也可以自己写代码进行接口测试,工具的使用相对来说都比较简单,重点是要搞清楚项目接口的协议是什么,然后有针对 ... [详细]
  • 作业迁移
    背景:数据库服务器更换,1、数据库迁移(BACKUPRESTORE);2、数据库登录名用户迁移(注意孤立用户);3、作业迁移数据库迁移,备份数据库、拷贝备份文件到新服务器,还原数据 ... [详细]
  • 22.Container With Most Water(能装最多水的容器)
    thecontainercontainsthemos ... [详细]
  • 简单动态字符串redis里面很多地方都用到了字符串,我们知道redis是一个键值对存储的非关系型数据库,那么所有的key都是用字符串存储的,还有字符串类型,这些都是用字符串存储的 ... [详细]
  • 例子如Table表有性别字段,1代表男2代表女、3代表中性、还有没填就代表未说明selectid,decode(sex,'1','男', ... [详细]
  • Linux     系统安装
    Linux系统安装linux系统安装准备工作电脑、u盘、光盘、网络、硬盘主要使用光盘、网络虚拟化软件vmwarevi ... [详细]
author-avatar
传闻中的张先生
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有