Linux : 理解文件系统

磁盘

磁盘是一种永久性存储介质,在计算机中,磁盘几乎是唯一的机械设备。与磁盘相对应的就是内存,内存是掉电易失存储介质,目前所有的普通文件都是在磁盘中存储的

在这里插入图片描述

CHS寻址法

  • 盘面:就是数据存储在哪一个面;由于每个盘面都有一个对应的磁头,所以盘面在定位中等价于磁头。
  • 磁道:磁盘的盘面上会一圈一圈的向外扩展出一个一个的磁道,磁道就是一个圆环(圆柱(Cylinder):因为盘面确定后,只需要确定磁道就可以了,也就是只需要确定是哪一个同心圆柱就可以了,所以称为圆柱)。
  • 扇区:扇区就是一个磁道上的一部分(扇形与圆环的相交部分),在确定扇区后,磁道就是一个扇环。磁盘读写的单位是扇区 (512字节),对于特殊的磁盘,可能会有更大的读写单位。

我们打开一个文件,访问文件的属性和数据,就必须要确认文件位于哪个盘面,磁盘,扇区


物理结构上每一个扇区看似是混乱的,但我们可以在逻辑结构上用数组的方式将他们看出是线性的。

操作系统读取的基本单位是按照扇区的,所以数组的每个基本单位就是一个扇区。

  • 假设一个盘面有10个磁道,1个磁道有10个扇区,因此一个盘面便有100个扇区。
    当我们提供该数组的某个下标时,我们便可以定位到该扇区处于具体哪一个盘面,哪一个扇区,哪一个磁道,这样的逻辑扇区地址称为LBA地址。

通过逻辑地址确定该扇区处于磁盘中的具体位置称为CHS地址。

对于操作系统而言,一次读取512字节太小了,所以一般而言,操作系统未来和磁盘进行交互的时候,读取的基本单位是:4KB(8个连续的扇区),该基本单位称为块

inode

  1. 磁盘一般比较内存比较大(800GB/1TB等)如果直接管理不容易。所以磁盘需要进行分区。(实际上一个电脑中大都只有一个磁盘,而我们电脑中的C、D盘也是分区而来)
    在这里插入图片描述

  2. 对于一个分区的管理,操作系统还是采用分组的方法:在一个分区内部分组,然后就只需要管理好一个组,就可以管理好一个分区,自然就可以管理好一整个磁盘了。
    在这里插入图片描述
    对于一个分区,需要先写入文件系统的管理资源,才能在磁盘中进行文件管理。这个过程称为“格式化”。

  3. 分组之后每一个组也要进行管理
    在这里插入图片描述
    Linux ext2文件系统,上图为磁盘文件系统图(内核内存映像肯定有所不同),磁盘是典型的块设备,硬盘分区被划分为一个个的block。一个block的大小是由格式化的时候确定的,并且不可以更改。例如mke2fs的-b选项可以设定block大小为1024、2048或4096字节。而上图中启动块(Boot Block)的大小是确定的.

inode是一个大小确定的结构体,里面存储文件的属性信息,比如有文件的大小,文件的权限,文件的创建者,文件的ACM时间(修改、保存、访问)等。(需要注意:indoe内部不包含文件名称) inode有一个固定的大小,无论是怎么样的文件都可以用inode存储文件的属性信息。

Block Group:ext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相同的结构组成。
超级块(Super Block):存放文件系统本身的结构信息。
记录的信息主要有:bolck 和 inode的总量,未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统的相关信息。Super Block的信息被破坏,可以说整个文件系统结构就被破坏了
GDT(Group Descriptor Table):块组描述符,描述块组属性信息。
块位图(Block Bitmap):Block Bitmap中记录着Data Block中哪个数据块已经被占用,哪个数据块没有被占用。
inode Bitmap(inode位图):每个bit表示一个inode是否空闲可用。
inode Table:存放文件属性inode的表。
Data blocks(数据块):存放文件内容。(占有大部分空间),每一个数据占有8个扇区(4KB).

在Linux当中,我们可以使用命令stat 文件名来查看对应文件的信息。
在这里插入图片描述

理解文件的增删改查

  • i创造一个文件:
    我们通过touch一个新文件来看看如何工作。
[root@localhost linux]# touch abc
[root@localhost linux]# ls -i abc
263466 abc

在这里插入图片描述
创建一个新文件主要有一下4个操作:

  1. 存储属性
    内核通过inode位图先找到一个空闲的i节点(这里是263466)。内核把文件信息记录到对应的inode中。
  2. 存储数据
    该文件需要存储在三个磁盘块,内核通过快位图的映射找到了三个空闲块:300,500,800。将内核缓冲区的第一块数据复制到300,下一块复制到500,以此类推。
  3. 记录分配情况
    文件内容按顺序300,500,800存放。内核在inode上的磁盘分布区记录了上述块列表。
  4. 添加文件名到目录
    新的文件名abc。linux如何在当前的目录中记录这个文件?内核将入口(263466,abc)添加到目录文件。文件名和inode之间的对应关系将文件名和文件的内容及属性连接起来。

什么是目录??
1.目录也是文件,所以也有对应的inode。
2. 目录的数据块当中存储的是该目录下的文件名以及对应文件的inode的映射关系,因此inode上并不存在文件名。

  • 对文件写入信息
    1、通过文件的inode编号找到对应的inode结构。
    2、通过inode结构找到存储该文件内容的数据块,并将数据写入数据块。
    3、若不存在数据块或申请的数据块已被写满,则通过遍历块位图的方式找到一个空闲的块号,并在数据区当中找到对应的空闲块,再将数据写入数据块,最后还需要建立数据块和inode结构

一个文件使用的数据块和inode结构的对应关系,是通过一个数组进行维护的,该数组一般可以存储15个元素,其中前12个元素分别对应该文件使用的12个数据块,剩余的三个元素分别是一级索引、二级索引和三级索引,当该文件使用数据块的个数超过12个时,可以用这三个索引进行数据块扩充。

  • 删除一个文件
    1、将该文件申请过的数据块在块位图当中置为无效。
    2、将该文件对应的inode在inode位图当中置为无效。

操作并不会真正将文件对应的信息删除,而只是将其inode号和数据块号置为了无效,所以当我们删除文件后短时间内是可以恢复的。为什么说是短时间内呢,因为该文件对应的inode号和数据块号已经被置为了无效,因此后续创建其他文件或是对其他文件进行写入操作申请inode号和数据块号时,可能会将该置为无效了的inode号和数据块号分配出去,此时删除文件的数据就会被覆盖,也就无法恢复文件了。

软硬链接

软链接

软链接又叫做符号链接,软链接文件相对于源文件来说是一个独立的文件,该文件有自己的inode号,但是该文件只包含了源文件(被链接文件)的路径名,所以软链接文件的大小要比源文件小得多。软链接就类似于Windows操作系统当中的快捷方式。

软链接创造命令如下:

ln -s xxx yyy // xxx被链接文件名 yyy链接文件名

在这里插入图片描述
可以看到软链接文件的inode号与源文件的inode号是不同的,并且软链接文件的大小比源文件的大小很多。

运行test 和 test-softlink 是一样的结果:
在这里插入图片描述

当我们删了源文件,链接文件是不能独立存在的,即使该文件名仍存在,但是却不能执行或进行其它操作。
在这里插入图片描述

硬链接

通过下面的指令来进行硬链接:

ln xxx yyy   //xxx被链接文件名  yyy链接文件名

硬链接文件的inode号与源文件的inode号是相同的,并且硬链接文件的大小与源文件的大小也是相同的,特别注意的是,当创建了一个硬链接文件后,该硬链接文件和源文件的硬链接数都变成了2。也就是我们熟知的取别名。
在这里插入图片描述

硬链接就是在其目录上给被硬链接的文件的inode建立另一个文件名与inode的映射关系,而inode有一个引用计数(记录一个inode被几个文件名映射)。

隐藏文件
在这里插入图片描述
这些隐藏文件其实就是硬链接。

软硬链接的应用场景

软链接的应用:

  • 链接各种库。linux的各种指令,本质上就是一个个的可执行程序文件,这些指令的运行需要库文件的支持,才能正常运行。可以在OS默认查找的目录下建立软连接,便于对库的查找。
  • 创建快捷方式,可以帮我们快速找到深路径的文件。

硬链接的应用:

  • 目录创建后的隐藏文件
    linux中不能给目录建立硬连接,防止系统在查找文件的时候形成路径环绕。
    那系统自带的隐藏文件不会形成路径环绕吗?
    不会,系统会对这些隐藏文件做特殊处理防止形成路径环绕。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值