Linux文件系统相关知识整理

1.      磁盘的物理结构

盘面:磁盘是由一叠盘面组成

磁头(Heads):每个磁头对应一个盘面,负责该盘面上的数据的读写

磁道(Track):每个盘面会围绕圆心划分出多个同心圆圈,每个圆圈叫做一个磁道

柱面(Cylinders):所有盘片上的同一位置的磁道组成的立体叫做一个柱面

扇区(Sector):以磁道为单位管理磁盘仍然太大,所以计算机前辈们又把每个磁道划分出了多个扇区

磁盘容量的大小一般和磁道的密集程度有关,扇区数一般是不变的

 

2.      磁盘I/O的过程

首先是磁头径向移动来寻找数据所在的磁道->寻道时间

找到目标磁道后通过盘面旋转,将目标扇区移动到磁头的正下方->旋转延迟

向目标扇区读取或者写入数据->存取时间

到此为止,一次磁盘IO完成。

所以 单次磁盘IO时间 = 寻道时间 + 旋转延迟 + 存取时间

 

3.      Linux文件系统

a)        superblock

记录文件系统的整体信息,包括inode/block的总量,使用量,以及剩余量和文件系统格式的相关信息

b)        inode

记录文件的权限和属性,一个文件会占用一个inode,同时记录文件的数据所在的block号

c)        block

实际记录文件的内容,如果文件内容很大,会占用多个block

         由于每个inode和block都有编号,而每个文件只会占用一个inode,inode中记录了文件的block号.这样我们只需要找到文件对应的inode,自然就可以找到这个文件的block号,那么就可以拿到该文件的数据了.

       

4.      创建一个目录

当我们在Linux下创建一个目录的时候,系统会分配一个inode和至少一个block给该目录(如果该目录下文件过多,可能会分配多个block块用来记录文件信息).其中inode记录了该目录的相关权限与属性,并记录了分配的block块号.block中则保存了这个目录下的文件名与该文件名对应的inode号,这样访问一个目录中的文件的过程如下描述

读取当前目录的inode数据->判断是否有权限对该目录进行相关操作->如果有权限->读取该目录的block的数据->获得当前目录下的文件名和文件对应的inode->读取对应文件的inode号的信息->判断是否有权限对该文件进行相关操作->如果有权限->读取该inode中保存的block块的数据->读取过程完成

5.      创建一个文件

当我们在Linux下创建一个文件的时候,系统会分配一个inode和相对于该文件大小的block块的数量(size/block上取整).如果超过inode的直接指向,系统还会分配额外的间接block哦.创建文件和目录的时候,我们首先会进行权限判断,然后根据bitmap寻找空闲的inode和block.

6.      文件共享

在Linux的进程中,当我们打开一个文件时,返回的是一个文件描述符。这个文件描述符是一个数组的下标,对应数组元素为一个指针。有趣的是,这个指针并没有直接指向文件的inode,而是指向了一个文件表格,再通过该表格,指向加载到内存中的目标文件的inode。如下图,一个进程打开了两个文件


如果进行dup/dup2的话,例如fd = 4为dup(1)产生, 那么结构如下图所示:


7.      软链接与硬链接

为解决文件的共享使用,Linux 系统引入了两种链接:硬链接 (hard link) 与软链接(又称符号链接,即 soft link 或 symbolic link)。链接为 Linux 系统解决了文件的共享使用,还带来了隐藏文件路径、增加权限安全及节省存储等好处。若一个 inode 号对应多个文件名,则称这些文件为硬链接。换言之,硬链接就是同一个文件使用了多个别名,而软链接相当于Windows下的快捷方式,其实只是保存了原文件的文件名而已。

有了以上的知识后,理解软链接与硬链接就是小菜一碟了.给出一张图即可说明.


主要内容摘自<鸟哥私房菜> 部分内容来自网络.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值