Linux文件系统结构

使用ZBR区位记录法:读外圈数据快,读内圈数据慢。
windows : C盘安装最外,速度也是最快
Linux : boot分区和 swap分区,装最外面
磁盘写数据时,先从外面往里。

文件系统结构:
Linux文件系统由三部分组成:文件名,inode,block
Linux文件系统:ext3,ext4,xfs
Windows文件系统:FAT32,NTFS

[root@localhost ~]# stat /etc/passwd #查看Linux block 大小
文件:"/etc/passwd"
大小:2481 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:18483618 硬链接:1
权限:(0644/-rw-r–r--) Uid:( 0/ root) Gid:( 0/ root)
环境:system_u:object_r:passwd_file_t:s0
最近访问:2019-11-25 13:00:15.836999198 +0800
最近更改:2019-11-05 21:57:01.526401224 +0800
最近改动:2019-11-05 21:57:01.529401211 +0800
创建时间:-

inode是什么?
理解inode,要从文件储存说起。
文件存储在硬盘上,硬盘的最小存储单位叫做“扇区”(Sector)。每个扇区储存512字节(相当于0.5KB)。
操作系统读取硬盘的时候,不会一个个扇区的读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个“块”(block)。这种由多个扇区组成的“块”,是文件存取的最小单位。“块”的大小,最常见的是4KB,即连续八个sector组成一个block。
文件数据都储存在“块”中,那么很显然,我们还必须找到一个地方储存文件的“元信息”,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为”索引节点“。
每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。

inode的内容:
inode包含文件的元信息,具体来说有以下内容:
  * 文件的字节数
  * 文件拥有者的User ID
  * 文件的Group ID
  * 文件的读、写、执行权限

  • 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
      * 链接数,即有多少文件名指向这个inode
      * 文件数据block的位置
    可以用stat命令,查看某个文件的inode信息:
    例子:stat 1.txt
    显示结果如图:
    在这里插入图片描述
    ll /etc/passwd #其实是查看passwd的inode信息,查到的时间是ctime时间。

mtime : modify time 修改文件内容的时间
atime : access time 访问文件内容的时间
ctime指inode上一次文件属性变动的时间,change time
mtime指文件内容上一次变动的时间,modify time
atime指文件上一次查看文件的时间,access time

文件属性:(使用ll命令查出来的就是文件属性)
文件类型与权限
有多少文件名连接到此节点
所有者账号
所属组账号
文件的容量大小
创建文件日期或最近修改日期
文件名

ls -i 可以查看文件名对应的inode号码。
df -i 查看硬盘分区的inode总数和已经使用的数量。
inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。
每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,假定在一块1GB的硬盘中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%。

inode号码
每个inode都有一个号码,操作系统用inode号码来识别不同的文件。
Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。

注意:由于每个文件都必须有一个inode号,如果inode用完就不能创建新文件,即使硬盘还有空间。

目录文件:
Unix/Linux系统中,目录(directory)也是一种文件。打开目录,实际上就是打开目录文件。
目录文件的结构非常简单,就是一系列目录项的列表。每个目录项,由两部分组成:所包含文件的文件名,以及该文件名对应的inode号码。
[root@localhost ~]# ls -id /etc
16777281 /etc

ls -i /etc 列出整个目录文件,即文件名和inode号码。在这里插入图片描述
block 是真正存储数据的地方。
block是 文件系统 中最小的存储单位
扇区 是 磁盘 中最小的存储单位
Linux中叫block Windows中加簇
互动:为什么要有block,直接使用扇区可以吗?

操作系统读取硬盘的时候,不会一个个扇区(512字节)地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是1KB,即连2个 sector扇区组成一个 block。或4K。

查看文件系统块的大小
stat /etc/passwd | grep IO
在这里插入图片描述
如图block是4k.

总结:
硬盘的结构:ZBR 区位记录
inode(inode表中主要看inode号)
inode号唯一标识一个文件(一个文件系统里面)
inode用完了,文件就不能创建了。
inode数据量设置大一些:可以创建多个文件。占用空间比较大
inode数据量设置小一些:可以创建很少文件。占用空间比较小

block
block设置大:效率高,利用率低。
block设置小:效率低,利用率高。

Linux链接概念
Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为软链接,即符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。
【硬连接】:硬连接指通过索引节点号来进行连接。inode是可以对应多个文件名的
在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。
在Linux中,多个文件名可以指向同一索引节点。一般这种连接就是硬连接。
硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。
注意:
源文件删除,不影响链接文件的正常使用。
硬链接的特点:无法针对目录,跨分区无法实现。因为每个分区都有独立的inode编号。

为什么刚创建的一个目录,链接数就是2。
默认新一个空目录,此目录的第二字段就是2(包含两个隐藏目录,因为每一个目录都有一个指向它本身的子目录"." 和指向它上级目录的子目录"…"),所以test是一个链接, 隐藏目录. 是第二个链接

ln -s 源文件 软链接的名字 (软链接相当于Windows系统的快捷方式)
注意:
源文件删除,链接失效
能针对目录和跨分区创建软链接(源文件必须写绝对路径)

inode的特殊作用
由于inode号码与文件名分离,这种机制导致了一些Unix/Linux系统特有的现象。
  1. 有时,文件名包含特殊字符,无法正常删除。这时,直接删除inode节点,就能起到删除文件的作用。
这时候就可以通过inode来删除异常文件名的文件。
例如:
利用find命令来删除
首先使用命令:ll -i 查出文件inode
find ./* -inum 69048766 -delete
利用find命令的-exec参数来调用rm命令
find ./* -inum 69048766 -exec rm -i {} ;
使用xargs配合find的结果进行删除
find ./* -inum 69048766 |xargs rm -f

2. 移动文件或重命名文件,只是改变文件名,不影响inode号码。
  3. 打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名。因此,通常来说,系统无法从inode号码得知文件名。
为什么每次修改完服务器配置文件后,都需要重新加载一下配置文件?
因为vim每次修改完后,Inode号都会变,所以每次修改完服务器的配置文件,都要重启服务,重新读一下配置文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值