文件属性

学习之前必须要知道:

    文件属性的查看:ll -i

[root@oldboy tmp]# ll -ih
1313578 drwxrwx-w- 2 root root 4.0K 2018-07-20 00:32 oldboy1

    文件里面包含了以下几个方面:

    文件的inode索引节点,文件的类型,文件的硬链接,文件的属主、属组,文件的大小,文件的时间 ,文件名,文件内容

文件属性包含了以下几个方面:

文件属性包括了inode索引节点,文件类型,文件硬链接数,文件属主、属组,文件大小,时间,inode里面的指针注意:文件名和文件里面的额内容不是文件的属性

分别解释一下:

    inode(index node索引节点),它是文件或目录在磁盘里的唯一标识。linux读取文件首先要读取到这个索引节点(相当于书的目录)

    第一个字符,代表文件类型(-普通文件,d目录)
    第2-10个字符如rw-r–r–是文件的权限(r,w,x,-),r是read,w是write,x是execute,-是没有   [第11个字符’.’,SELINUX相关]

    文件的硬链接数。文件的硬链接数是文件的又一个入口

    文件对应的属主或者用户

    文件对应的属组或用户组

    文件的大小

   文件被修改的时间(文件的时间戳:atime/mtime/ctime)

    

下面详细讲解



一、inode (index node)索引节点和block知识点讲解:

1、inode索引节点和block是什么时候生成的?

    硬盘要分区,然后格式化,创建文件系统。【所以inode索引节点和block是在文件系统被格式化的时候生成的,在磁盘格式化时候我们还可以修改】 
    inode,index node索引节点。在每个linux存储设备或存储设备的分区(存储设备可以是硬盘、软盘、U盘…)被格式化为ext4文件系统后,一般有两部分: 
    第一部分是inode(很多个)

        centos5的inode默认大小为128字节    第二部分是block

         centos6、7的inode默认大小为256字节

    第二部分是block(很多个)

        centos6的block的默认大小为1k、2k、4k、2的n次方倍


    block是用来存储实际数据用的,例如:照片、视频等普通文件数据。 
    而inode就是用来存储这些数据属性信息的(也就是ls -l 的结果),inode包含的属性信息包括文件大小、属主、归属的用户组、权限、文件类型 、修改时间,还包含指向文件实体的指针的功能(inode节点–block的对应关系)等,但是,inode唯独不包含文件名。

当用ls查看某个目录或文件时,如果加上-i参数,就可以看到inode节点了。 

[root@oldboy tmp]# ll -ih
1313578 drwxrwx-w- 2 root root 4.0K 2018-07-20 00:32 oldboy1

inode的值是1313578。

2、inode与block

    inode除了记录文件属性的信息外,还会为每个文件进行信息索引,所以就有了inode的数值,操作系统根据指令,即可通过inode的值最快的找到相对应的文件实体。文件,inode、block之间的关系如下:


%{PS8SUO%}FWTN[F__@GO66.png


(以书为例:inode就相当于书的目录,block是相当于书的内容)

3、inode细讲:

    因为inode要存放文件的属性信息,所以inode是有大小的,

        CentOS5 inode的默认大小为128字节,

        CentOS6 inode的默认大小是256字节,[启动分区(/boot)默认大小是128字节]

    inode的大小在文件系统被格式化之后就无法更改了,格式化时可以指定inode大小

        inode大小的修改:mkfs.ext4 -i 2048 -N 8192  /dev/sdb3

知识点总结:        

        磁盘分区格式化ext4文件系统后会生成一定数量的inode与block。

        inode是索引节点,作用是存放文件的属性信息以及作为文件的索引(指向文件的实体)。

        ext3/etx4文件系统的block存放的是文件的实际内容。

        inode是一块存储空间,CentOS6非启动分区inode默认大小256字节(启动分区inode默认大小为128字节),CentOS5是128字节。

        inode是一串数字,不同的文件对应的inode在文件系统中是唯一的。 

        inode相同的文件,互为硬链接文件(文件又一个入口)。

        一个文件被创建后至少要占用一个inode和一个block。

        block的大小一般有1K,2K,4K几种。其中引导分区等为1K,其他普通分区为4K(CentOS6)。

        如果一个文件很大,可能占多个block,如果文件很小,至少占一个,并且剩余空间不能被其他的文件使用

        inode总的数量(个数)和单个大小查看:dumpe2fs /dev/sda3 | grep -iE "inode size|inode count"

[root@oldboy tmp]# dumpe2fs /dev/sda3 | grep -iE "inode size|inode count"
dumpe2fs 1.41.12 (17-May-2010)
Inode count:              3170304     inode count也就代表能建多少个文件
Inode size:	          256         每个inode的大小

inode的总量和使用量查看:df -i

[root@oldboy tmp]# df -i
Filesystem      Inodes IUsed   IFree    IUse% Mounted on
/dev/sda3      3170304 86982     3083322  3%   /
tmpfs        125514  1        125513   1%   /dev/shm
/dev/sda1      51200  39      51161   1%   /boot
/dev/sr0       0    0     0     -    /media/cdrom

4、block细讲:

    知识点总结:

    磁盘读取数据是按block为单位读取的。

    一个文件可能占用多个block。每读取一个block就会消耗一次磁盘I/O。

    如果要提升磁盘IO性能,那么就要尽可能一次性读取数据尽量的多。

    一个block只能存放一个文件的内容,无论内容有多小。如果block 4K,那么存放1K的文件,剩余3K就浪费了。

    block并非越大越好。block太大对于小文件存放就会浪费磁盘空间,例如:1000K的文件,block为4K,占用250个block,block为1K,占1000个block。

    大文件(大于16K)一般设置block大一点,小文件(小于1K)一般设置block小一点。

    block太大例如4K,文件都是0.1K的,大量浪费磁盘空间。

    block太小例如1K,文件都是1000K,消耗磁盘IO。

    block的设置也是格式化分区时候:

    mkfs.ext4 -b 4096  /dev/sdb。

    文件较大时,block设置大一些会提升磁盘仿效效率。

    ext3/ext4文件一般设置为4K。



二、文件类型

    在linux系统中,可以说一切皆文件。文件类型包含有普通文件、目录、字符设备文件、块设备文件、符号链接文件等等。

    ype c 
    File is of type c:

        b:block (buffered)special块设备文件

        c:character(unbuffered)special字符设备文件

        d:directory目录

        f :regular file普通文件

        l :symbolic link符号链接文件

        s:socket 套接口文件

    文件的七大类型分别是:

    - 普通文件 【文件文件、二进制文件、数据(压缩包)文件】
    d 目录文件
    l 符号链接文件[block]
    b 块设备文件
    c 字符设备文件[character]
    p 管道文件
    s 套接字文件

1、b:block

块设备文件第一个属性为“b”

[root@oldboy mnt]# find /dev -type b|xargs ls -l
brw-rw---- 1 root disk   7,  0 Jul  9 22:40 /dev/loop0

2、c:character

字符设备就是串行端口的接口设备,如猫等串口设备。 
字符设备文件第一个属性为“c”

[root@oldboy mnt]# find /dev -type c|xargs ls -l
crw-rw---- 1 root video    10, 175 Jul  9 22:40 /dev/agpgart

3、s:socket 套接字文件

    当我们启动MySQL服务时,会产生一个mysql.sock文件。这个文件的第一个属性是“s”

[root@oldboy mnt]# find / -type s|xargs ls -l
srw-rw-rw- 1 root    root    0 Jul  9 22:40 /dev/log
srwxrwxrwx 1 oldboy  oldboy  0 Jul  9 21:40 /tmp/.esd-500/socket
srw-rw-rw- 1 root    root    0 Jul  9 22:40 /var/run/abrt/abrt.socket
srw-rw-rw- 1 root    root    0 Jul  9 22:40 /var/run/acpid.socket

4、f :regular file

普通文件第一个属性为“-”。普通文件又分为3种

    纯文本文件(ascll):文本内容可以直接读到数据,例如:字母、数字等。可以用cat命令读出文件。

    二进制文件(binary):linux当中可执行文件(命令)就是属于这种格式。例如cat这个执行文件就一个二进制文件。

    数据格式文件(data):有些程序在运行的过程中会读取某些特定格式的文件,那卸特定格式的文件可以被称为数据文件。例如:linux在用户登录时,都会将登录的数据记录在/var/log/wtmp那个文件内,该文件是一个数据文件。

    通过last命令读出来。cat命令会读出乱码。因为他属于一种特殊格式的文件(压缩包也是数据格式文件)。


通过命令判断普通文件的文件类型: file + 文件

[root@oldboy mnt]# file /etc/host
host.conf    hosts        hosts.allow  hosts.bak    hosts.deny   
[root@oldboy mnt]# file /etc/hosts
/etc/hosts: ASCII text
[root@oldboy mnt]# file /bin/cp
/bin/cp: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped   
[root@oldboy mnt]# file /var/log/wtmp 
/var/log/wtmp: data


5、Linux系统中文件的扩展名

windows里通过扩展名来区分文件类型的。linux里文件扩展名和文件类型没有关系。但为了容易区分和兼容用户使用windows的习惯,我们还是会用扩展名来表示文件类型。举例如下:

    源码.tar、.tar.gz、.tgz、.zip、.tar.bz表示压缩文件,创建命令一般为tar,gzip,zip等。

    ·sh表示shell脚本文件,通过shell语言开发的程序。

    .pl表示perl语言文件,通过perl语言开发的程序。

    .py表示python语言文件,通过python语言开发的程序。

    .html、.htm、.php、.jsp、.do表示网页语言的文件。

    .conf表示系统服务的配置文件。

    rpm表示rpm安装包文件。



三、Linux文件权限管理

1、文件权限概述

linux中的文件或目录的权限和用户及用户组关联很大。 
linux中每个文件或目录都有一组共9个基础权限位,每三位字符被分为一组,他们分别是属主位(占三个字符)、用户组权限位(占三个字符)、其它用户权限位(占三个字符)。比如rwxr-xr-x,linux中正是这9个权限(更多权限位后面会提到)位来控制文件属主、用户组以及其它用户的权限


猜你喜欢

转载自blog.51cto.com/11639860/2147817