文件系统与软硬链接

文件系统与软硬链接

一、硬盘

硬盘分为固态硬盘机械硬盘,其中机械硬盘相对容量大且价格便宜,所以在服务器中应用广泛。

1、固态硬盘(Solid State Disk, SSD)

固态硬盘是一种基于闪存的存储技术。它的读写速度取决于闪存芯片的性能,一般比机械硬盘快4~20倍

2、机械硬盘(Hard Disk Drive, HDD)

img

磁盘是机械硬盘的存储介质。一个磁盘的上下表面称为盘面,盘面上覆盖着磁性记录材料

每个盘面都对应一个磁头用来读写:

img

磁盘的盘面是由一组称为磁道的同心圆组成的,每个磁道被划分为一组扇区,每个扇区存储相同数量的数据位,通常为512字节(内外磁道的磁性记录材料密度不同)。

扇区与扇区之间的空隙用来存储标识扇区的格式化信息

img

每个盘面拥有相同数量的磁道,将它们从内向外编号,那么所有盘面中相同编号的磁道将构成一个柱面

img

I.磁盘容量公式

盘面数 × 每个盘面的磁道数 × 每个磁道的扇区数 × 扇区大小

二、文件系统

1、机械硬盘的分块管理

为了方便操作系统管理,现代磁盘的复杂构造被简化为由B个扇区大小的逻辑块构成的序列,编号为0~B-1。

每个逻辑块的编号可以被磁盘控制器翻译成(盘面,磁道,扇区)的三元组,经过盘面和磁头的旋转(寻道),完成对实际磁盘物理位置的读写。

img

2、ext系列文件系统

事实上,内核在读写硬盘数据时,一次性最少读写一个块(Block)。默认一个块的大小为4KB,即8个扇区大小的逻辑块。

文件被存储在块(Block)中,由内核的文件管理系统对这些块进行统一的管理,以ext系列文件系统为例:

img

I.块信息
  • 引导块用来存储磁盘分区信息和启动信息,任何文件系统不得修改该块的内容。

  • 组块0~n拥有相同的结构:

    1. 超级块:描述当前组块的信息,如inode数量及大小、数据块数量及大小;

    2. 组块描述表:描述当前组块的各部分起始位置,如块位图起始位置;

    3. 块位图:记录数据块的区块的使用情况;

    4. inode位图:记录inode的使用情况;

    5. inode表:表中的每一个inode记录了对应文件除了文件名以外的所有属性信息,如大小、读写权限、atime、mtime、ctime等。此外,inode还会记录文件所在的区块

      注:每个inode都对应一个inode号码,可以理解为inode表中的索引。

    6. 数据块:文件数据存储的地方,每个数据块被分成许多小的区块,一个区块只能存储一个文件的数据,其使用情况存储在块位图中。如果文件大于区块大小,则该文件占用多个区块;如果文件小于区块大小,则区块剩余容量不再使用。

II.目录与映射表

当创建一个目录文件时,ext文件系统会分配一个inode至少一个数据区块给该目录。其中,inode存储该目录的属性和对应数据区块;数据区块则存储了该目录下的文件名和inode号码的一一映射关系(正因如此,一个目录下不允许出现同名文件)。

III.属性、数据的分离

ext文件系统利用inode存储文件属性数据区块存储文件数据,做到了属性与数据的分离存储。

IV.文件的三个时间

文件的三个时间是文件的属性信息,其具体内涵为:

1、atime(access time):访问时间,即最近一次读取该文件的时间

2、mtime(modify time):修改时间,即最近一次修改文件内容的时间

3、ctime(change time):状态改动时间,即最近一次修改文件属性的时间,包括文件名、文件大小、文件权限、文件所有者等属性信息。

使用touch 文件名命令可以将目标文件的三个时间修改为当前系统的时间。

使用stat命令查看文件的属性,其中包括三个时间、inode号码和链接数等信息:

img

V.进程与文件

删除文件

删除文件实际上只是在当前目录中删除该文件的名字与inode的映射关系,但是文件的数据以及inode并不会立即被删除。

因此,若进程已经打开文件,则文件被删除并不会影响进程的操作,因为进程已经具备文件的描述信息。

读写文件

内核为进程打开的文件都维护了独立的信息,如:文件打开状态、当前文件偏移量、文件的fd等。

因此,不同进程读文件,并不会相互冲突;但是操作系统不会保证多个进程一起写文件的原子性。

三、软硬链接与ln命令

1、硬链接

硬链接相当于一个文件的别名。在创建时,文件系统不会为它分配独立的inode,而是让该文件的inode与链接文件相同。

因此,硬链接文件与原文件只有名字上的不同,实际上指向的是同一份文件。

硬链接命令: ln 原文件名 链接文件名

I.普通文件

img

一个普通文件的初始链接数为1(即文件本身),当创建硬链接时,链接数变为2,且链接文件与原文件的inode相同。

II.目录

img

一个目录的初始链接数为2,进入到该目录可以发现两个默认目录:.和..

.当前目录的硬链接,再加上目录本身,所以初始链接为2。

如果在当前目录下再创建新目录,就会导致链接数加1,因为每一个新目录都有..,它是上一级目录的硬链接

2、软链接

软链接相当于一个文件的快捷方式。在创建时,文件系统会为它分配独立的inode,但是仅存储链接文件的路径信息不存储有效数据

软链接命令:ln -s 原文件名 链接文件名

img

原文件和软链接文件的inode不同,且创建软链接文件不会导致链接数增加。

3、补充:跨文件系统问题

一个磁盘上的不同分区可能会使用不同的文件系统。

硬链接不可以跨文件系统,因为硬链接与链接文件拥有相同的inode,但是不同文件系统下对应的inode可能是不同的。

软链接可以跨文件系统,因为软链接拥有独立的inode,且存储的是链接文件的路径。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白龙码~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值