码迷,mamicode.com
首页 > 系统相关 > 详细

Linux文件系统相关知识整理

时间:2015-08-18 11:54:52      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:linux文件系统   dup   软链接硬链接   

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下的快捷方式,其实只是保存了原文件的文件名而已。

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

技术分享


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

版权声明:本文为博主原创文章,未经博主允许不得转载。

Linux文件系统相关知识整理

标签:linux文件系统   dup   软链接硬链接   

原文地址:http://blog.csdn.net/huai1693838234/article/details/47749211

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!