#概述

#1.linux里一切皆为文件
#2.Linux系统中的文件或目录的属性主要包括:inode(索引节点)、文件类型、权限属性、链接数、所属用户和用户组、最近修改时间等内容

 

#例如:执行ls -lhi ,会出现10列内容

[root@cots3 ~]# ls -lhi
total 28K
33865597 -rw-r--r--  1 root root  104 Feb 29 09:43 1.txt
33865598 -rw-r--r--  1 root root   13 Feb 29 09:44 2.txt
33619589 -rwxr-xr-x  1 root root  187 Mar  2 23:44 3.sh

#10列内容讲解

第一列:inode索引节点编号(唯一的,像人的身份证)
第二列:文件类型及权限(共10个字符,第一字符为类型,后9个为文件权限)
第三列:硬链接数
第四列:文件或目录所属的用户
第五列:文件或目录所属的组
第六列:文件或目录的大小
第七、八、九列:时间戳
第十列:实际的文件或目录名

#上图

linux文件和目录的属性详解

 

2.文件属性详细讲解

2.1索引节点:inode

#概述

#1.indoe,中文意思是索引节点(index node)。在每个Linux存储设置或存储设备的分区被格式化为ext4文件系统之后,一般会生成两个部分,第一部分时inode,第二部分时block

#
2.block是真正用来存储实际数据的,例照片,视频等普通文件数据 inode是用来存储这些数据的属性信息(也就是ls -l的结果),inode属性信息包括不限于文件大小、属主(用户)、归属的用户组、文件权限、文件类型、修改时间,但是inode里面不包含文件名
#
3.inode除了记录文件属性的信息外,还会为每个文件信息索引,操作系统就会根据inode的值最快的找到相对应的文件实体

 

#读文件的过程

文件名>inode>block
#读文件的时候首先找到文件名,然后找到文件的inode,文件许可后就可以看block数据了

#例子:

# 比如一本书,整本书就相当于一块磁盘或分区,书的前几页目录就相当于inode。每一页的文字、图片相当于一个block

 

#扩展:Linux组成

#Linux文件系统由三分部组成:文件名,inode,block(真正存数据)  

 

#使用stat命令查看inode信息

#stat:显示文件和文件系统状态

[root@cots3 ~]# stat /etc/passwd
  File: ‘/etc/passwd’
  Size: 1032          Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 17042355    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-03-04 03:37:21.549000201 -0500
Modify: 2020-02-29 20:50:57.126146678 -0500
Change: 2020-02-29 20:50:57.126146678 -0500
 Birth: -

#查看目录的inode号

[root@cots3 ~]# ls -di /etc/
16777281 /etc/

 

#inode的大小

#inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域

一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息

 

#查看磁盘空间是否满了,由inode是否满了和block是否满了决定的,任何一个满了,都无法存放东西

#磁盘满的特征(no space on device left)

 

#查看每个硬盘分区的inode总数和已经使用的数量,可以使用df命令

[root@cots3 ~]# df -i
Filesystem               Inodes IUsed   IFree IUse% Mounted on
/dev/mapper/centos-root 8910848 33678 8877170    1% /
devtmpfs                 230105   396  229709    1% /dev
tmpfs                    233163     1  233162    1% /dev/shm
tmpfs                    233163   723  232440    1% /run
tmpfs                    233163    16  233147    1% /sys/fs/cgroup
/dev/sda1                524288   327  523961    1% /boot
tmpfs                    233163     1  233162    1% /run/user/0

#查看磁盘的使用量

[root@cots3 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   17G  2.2G   15G  13% /
devtmpfs                 899M     0  899M   0% /dev
tmpfs                    911M     0  911M   0% /dev/shm
tmpfs                    911M  9.5M  902M   2% /run
tmpfs                    911M     0  911M   0% /sys/fs/cgroup
/dev/sda1               1014M  142M  873M  14% /boot
tmpfs                    183M     0  183M   0% /run/user/0

 

#扩展:linux中ctime,mtime,atime的区别

ctime: 改变时间(change time)
mtime:修改时间(modification time)
改变和修改之间的区别在于是改文件的属性还是更改它的内容。chmod a-w myfile,那么这是一个改变
  echo foo >> myfile,那么这是一个修改
改变是文件的索引节点发生了改变;修改是文本本身的内容发生了变化

atime: 访问时间(access time)
访问时间是文件最后一次被读取的时间。因此阅读一个文件会更新它的访问时间,但是它的改变时间和修改时间并没有变

ls -lc filename   列出文件的ctime
ls -lu filename   列出文件atime
ls -l  fimename   列出文件的mtime

 

#inode和block的小结

有关inode的小结
      1、磁盘被分区并格式化为ext4文件系统后会生成一定数量的inode和block
      2、inode称为索引节点,它的作用是存放文件的属性信息以及作为文件的索引(指向文件的实体)
      3、ext3/ext4文件系统的block存放的是文件的是实际内容
      4、inode是磁盘上的一块存储空间,非启动分区inode默认大小256字节
      5、inode的表现是形式一串数字,不同的文件对应的inode(一串数字)在文件系统里是唯一的
      6、inode节点号相同的文件,互为硬链接文件,可以认为是一个文件的不同入口
      7、ext3/ext4文件系统下,一个文件被创建后至少要占用一个inode和一个block
      8、ext3/ext4文件系统下,正常一个文件占用且只能占用一个inode(相当于人和身份证)
      9、block是用来存储实际数据的,每个block的大小一般有1K、2K、4K几种,其中引导分区等为1K,其他普通分区多为4K
     10、查看inode的大小和总量: 
     11、查看inode的总量和使用量命令 df -i
     12、查看文件的inode信息方法
     13、如何生成及指定inode大小
                   格式化命令:mkfs.ext4 -b 2048 -l 256 /dev/sdb

有关block的知识小结
      1、磁盘读取数据是按block为单位读取的
      2、一个文件可能占用多个block,但是每读取一个block就会消耗一次磁盘I/O
      3、如果要提升磁盘IO性能,那么就要尽可能一次性读取数据尽量的多
      4、一个block只能存放一个文件的内容,无论内容有多小,如果block默认是4K大小,那么存放一个1K的文件,剩余3K就不能存放别的文件,只能浪费了
      5、block并非越大越好,block太大对于存放小文件就会浪费磁盘空间,例如:1000K的文件,block大小为4K,占用250个Block,如果block默认为1K,则需要占1000个block,访问效率谁更高? 当然是4K那个。消耗IO分别为250和1000次
      6、根据业务需求,确定默认的block大小,如果是大文件(大于16K) 一般设置block大一点,小文件(小于1K)一般设置block小一点
       7、block太大,例如4K,文件都是0.1K的,太浪费磁盘空间,但是访问性能高
       8、block太小,例如1K,文件都是1000K的,消耗大量磁盘IO
       9、block大小设置也是格式化分区时候确定的,命令mkfs.ext4 -b 2048 -l 256 /dev/sdb (-b 是block大小,-i是inode大小)
       10、一般企业里文件都会比较大,(一般大于4K).block设置大一些会提升磁盘访问效率
      11、ext3/ext4文件系统,一般设置为4K   
View Code

相关文章: