06-Linux基础入门-文件和目录的属性及权限之inode与block
Posted 张雨嘉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了06-Linux基础入门-文件和目录的属性及权限之inode与block相关的知识,希望对你有一定的参考价值。
一、Linux中的文件-文件属性概述(在Linux里一切皆文件)
Linux系统中的文件或目录的属性主要包括:索引节点(inode)、文件类型、权限属性、链接数、所归属的用户和用户组、最近修改时间等内容。
下列我们看下执行ls -lhi命令结果:
[root@centos6 ~]# ls -lhi
total 40K
789556 -rw-------. 1 root root 1.2K 1月 27 19:28 anaconda-ks.cfg
783363 -rw-r--r--. 1 root root 22K 1月 27 19:28 install.log
783364 -rw-r--r--. 1 root root 5.8K 1月 27 19:26 install.log.syslog
文字解释:
第一列:inode索引节点编号(类似于人的身份证,全国唯一),系统读取文件时首先通过文件名找到inode,然后才能读取到文件内容;
第二列:文件类型及权限(共11个字符,第一个字符为类型,后9个字符为文件权限(r:read 可读,w:write 可写,x:execute 可执行),第2-4个字符为所有者权限,第5-7个字符为所属用户组权限,第8-10个字符为其他人权限,最后一个字符“.”是与SELinux相关的标识);
第三列:硬链接个数(详细参看ln命令的讲解);
第四列:文件或目录所属的用户(属主),在Linux里面文件和程序存在必须要有用户和组满足相应的存在需求;
第五列:文件或目录所属的组;
第六列:文件或目录的大小;
第七、八、九列:文件或目录的修改时间,默认情况下月日时分;
第十列:实际的文件名或目录名(严格的说文件名不算文件的属性);
二、关于inode
1、概述
硬盘要存储数据首先要分区,然后格式化创建文件系统,最后存储数据。
inode,中文意思是索引节点(index node)。在每个Linux存储设备或存储设备的分区(存储设备可以是硬盘、软盘、U盘……)被格式化为ext4(CentOS6.9)文件系统后,一般都有两部分:第一部分是Inode(很多个),第二部分是Block(很多个)。
这个Block是用来存储实际数据用的,例如:照片,视频等普通文件数据。
而inode就是用来存储这些数据属性信息的(也就是ls -l的结果),inode的属性信息包括不限于文件大小、属主(用户)、归属的用户组、文件权限、文件类型、修改时间,还包括指向文件实体的指针的功能(inode节点--block的对应关系)等,但是inode里边唯独不包含文件名。
inode除了记录文件属性的信息外,还会为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,即可通过inode的值最快的找到相对应的文件实体、文件,inode和block之间的文件关系见下图:
打个比方,一本书相当于一块磁盘或分区,书的目录相当于inode,每页的文字和图片相当于block。
因为inode要存放文件的属性信息,所以每个inode本身是有大小的,CentOS5 系列inode的默认大小是128字节,而CentOS6系列inode的默认大小是256字节,inode的大小在分区被格式化创建文件系统之后定下来的,格式化以后就无法更改inode大小,格式化前可以通过参数指定inode大小,但是一般工作环境没这个要求。
• 显示inode参数
ls -li 或 stat 文件名(查看文件详细属性)
• 查看inode
[root@centos ~]# dumpe2fs /dev/sda1 |grep -i "inode size"
dumpe2fs 1.41.12 (17-May-2010)
Inode size: 128
[root@centos ~]# dumpe2fs /dev/sda2 |grep -i "inode size"
dumpe2fs 1.41.12 (17-May-2010)
dumpe2fs: Bad magic number in super-block 当尝试打开 /dev/sda2 时
[root@centos ~]# dumpe2fs /dev/sda3 |grep -i "inode size"
dumpe2fs 1.41.12 (17-May-2010)
Inode size: 256
• 查看文件系统inode总量以及剩余量
df -i
• 查看磁盘的使用量
df -h
磁盘空间是否满了(no space left on device),是由两项参数决定的:
第一个是inode是否满了,第二个是block是否满了,任何一项满了,都无法存放数据。
2、小结
①磁盘被分区格式化为ext4文件系统后会生成一定数量的inode和block。
②inode称为索引节点,它的作用是存放文件的属性信息以及作为文件的索引(指向文件的实体)。
③ext3/etx4文件系统的block存放的是文件的实际内容。
④inode是磁盘上的一块存储空间,centos6非启动分区inode默认大小是256字节,centos5是128字节。
⑤inode的表现形式是一串数字,不同的文件对应的inode(一串数字)在文件系统里是唯一的。
⑥inode节点号相同的文件,互为硬链接文件,可以认定是一个文件的不同入口。
⑦ext3/etx4文件系统下,一个文件被创建后至少要占用一个inode和一个block。
⑧ext3/etx4文件系统下,正常情况下一个文件占用且只能占用一个inode。
⑨block是用来存储实际数据的,每个block的大小一般有1k,2k,4k几种,其中引导分区等为1k,其他普通分区多为4k。(CentOS6)
⑩如果一个文件很大,可能占多个Block。如果文件很小,至少占一个,并且这个block的剩余空间就浪费了,即无法在存储其它数据了。
⑪inode大小和总量查看
[root@centos ~]# dumpe2fs /dev/sda3 |egrep -i "block size|inode size"
[root@centos ~]# dumpe2fs /dev/sda3 |egrep -i "block count|inode count"
默认情况下 block count一般会大于inode count。
⑫查看inode的总量和使用量
df -i
⑬查看文件的inode的信息方法
ls -li 或 stat /etc/hosts
⑭如何生成及指定inode大小
格式化命令:mkfs.ext4 -b 2048 -i 256 /dev/sdb
三、关于block
①磁盘读取数据是按block为单位读取的。
②一个文件可能占用多个block,但是每读取一个block就会消耗一次磁盘I/O。
③如果要提升磁盘IO性能,那么就要尽可能一次性读取数据尽量的多。
④一个block只能存放一个文件的内容,无论内容有多小。如果block默认是4K大小,那么存放一个1K的文件,剩余3K就不能存放别的文件,只能浪费了。
⑤block并非越大越好,block太大对于存放小文件就会浪费磁盘空间,例如:1000K的文件,block的大小为4k,占用250个block,如果block默认为1k,则需要占1000个block,则消耗IO分别为250次和1000次。
⑥根据业务需求,确定默认的block大小,如果是大文件(大于16K)一般设置block大一点,小文件(小于1k)一般设置block小一点。
⑦block太大,例如4k,文件都是0.1k的,大量浪费磁盘空间,但是访问性能高。
⑧block太小,例如1k,文件都是1000k,消耗大量磁盘IO。
⑨block大小的设置也是格式化分区时候确定的,命令mkfs.ext4 -b 2048 -I 256 /dev/sdb。
⑩企业里文件都会比较大(一般会大于4k),block设置大一些会提升磁盘的访问效率。
⑪ext3/ext4文件系统(CentOS5和6),一般都设置为4K。
四、文件删除恢复ext3grep,应该多养成好习惯,先备份在操作,要能快速还原,不容易还原的,先通过多套测试环境测试,然后在操作。
五、总结
①磁盘被分区格式化文件系统后,会分为inode和block两部分内容。
②inode存放文件的属性以及指向文件实体的指针,文件名不在inode里,一般在上级目录的block里。
③访问文件,通过文件名→inode→blocks。
④inode一般情况默认大小256B,block大小为1,2,4k,默认是4k,注意,引导分区等特殊分区除外。
⑤通过df -i查看inode的数量及使用情况,dumpe2fs /dev/sda3查看inode及block的大小及数量
⑥一个文件至少要占用一个inode及一个block,多个文件可以占用一个inode(硬链接),相同文件。
⑦一个block只能被一个文件使用,如果文件很小block很大,剩余空间浪费,无法继续被其他文件使用。
⑧block不是越大越好,要根据业务的文件大小进行选择,一般CentOS6就是4K。
⑨可以在格式化的时候改变inode及block大小。
欢迎关注
新浪微博:https://weibo.com/yougazhang0506
微信公众平台:张雨嘉
我的网站:http://www.zhangyujia.cn
51CTO博客:http://blog.51cto.com/11099293
CSDN博客:http://blog.csdn.net/u013260195
GitHub:https://github.com/zhangyujia0506/
以上是关于06-Linux基础入门-文件和目录的属性及权限之inode与block的主要内容,如果未能解决你的问题,请参考以下文章
08-Linux基础入门-文件和目录的属性及权限之文件类型文件扩展名及文件权限基础
10-Linux基础入门-文件和目录的属性及权限之用户与组和时间戳基础
09-Linux基础入门-文件和目录的属性及权限之链接(综合网络整理)