登录
首页 >  文章 >  linux

linux档案系统是什么

来源:亿速云

时间:2024-04-11 18:48:30 273浏览 收藏

大家好,我们又见面了啊~本文《linux档案系统是什么》的内容中将会涉及到等等。如果你正在学习文章相关知识,欢迎关注我,以后会给大家带来更多文章相关文章,希望我们能一起进步!下面就开始本文的正式内容~

linux档案就是目录(文件)。为了方便管理文件和目录,Linux系统将它们组织成一个以根目录“/”开始的倒置的树状结构。Linux中的目录和Windows系统中的文件夹类似,不同之处在于,Linux系统中的目录也被当做文件看待。

linux档案就是目录(文件)。

为了方便管理文件和目录,Linux 系统将它们组织成一个以根目录 / 开始的倒置的树状结构。Linux 中的目录,和 Windows 系统中的文件夹类似,不同之处在于,Linux 系统中的目录也被当做文件看待。

在 Linux 操作系统中,所有的文件和目录都被组织成以一个根节点“/”开始的倒置的树状结构,如图 1 所示。

linux档案系统是什么
图 1 Linux 系统文件和目录组织示意图

其中,目录就相当于 Windows 中的文件夹,目录中存放的既可以是文件,也可以是其他的子目录,而文件中存储的是真正的信息。

文件系统的最顶层是由根目录开始的,系统使用“/”来表示根目录,在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含(子)目录或文件。如此反复就可以构成一个庞大的文件系统。

其实,使用这种树状、具有层次的文件结构主要目的是方便文件系统的管理和维护,想象一下,如果所有的文件都放在一个目录下,其文件系统的管理和维护将变成一场噩梦。

现实中也有许多类似的例子,例如在整个行政管理体制中,村民就相当于文件,他们住在一个村庄中,村庄就是存储村民的目录。许多村又组成了个乡,这个乡就相当于存储村的目录,依此类推,最终就构建出了一个庞大的行政区域管理结构图。

注意,目录名或文件名都是区分大小写的,如 dog、DOG 和 Dog 为 3 个不同的目录或文件。完整的目录或文件路径是由一连串的目录名所组成的,其中每一个目录由“/”来分隔。如 cat 的完整路径是 /home/cat。

在文件系统中,有两个特殊的目录,一个是用户所在的工作目录,即当前目录,可用一个点“.”表示;另一个是当前目录的上一层目录,也叫父目录,用两个点“..”表示。

如果一个目录或文件名是以一个点开始,就表示这个目录或文件是一个隐藏目录或文件。即以默认方式査找(后续会讲查找命令)时,不显示该目录或文件。

为了方便管理和维护,Linux 系统采用了文件系统层次标准,也称为 FHS 标准,它规定了根目录下各个目录应该存在哪些类型的文件(或子目录),比如说,在 /bin 和 /sbin 目录中存放的应该是可执行文件

linux档案系统(filesystem)

硬盘的物理组成

首先简单认识一下硬盘的物理结构,总体来说,硬盘结构包括: 盘片、磁头、盘片主轴、控制电机、磁头控制器、数据转换器、接口、缓存等几个部份。 所有的盘片(一般硬盘里有多个盘片,盘片之间平行)都固定在一个主轴上。 在每个盘片的存储面上都有一个磁头,磁头与盘片之间的距离很小(所以剧烈震动容易损坏),磁头连在一个磁头控制器上,统一控制各个磁头的运动。 磁头沿盘片的半径方向动作,而盘片则按照指定方向高速旋转,这样磁头就可以到达盘片上的任意位置了。

一个磁盘由多个圆环组成,这些圆环就叫做磁道,而一个磁道又分为多个扇区(sector)一个一个扇区是512Byte,硬盘所有磁盘相同位置的圆环组成一个磁柱(Cylinder)。硬盘容量为:512Byte * 扇区数 * 磁柱数*磁头数

前面三个数都好理解,可能有人不理解乘以磁头数是干嘛,因为前面三个数相当于计算一个圆的存储量,而一个磁头读取一个圆,所以乘以磁头数量就相当于圆面积乘以圆数量。

磁盘的分割

磁盘分割的最小单位是磁柱(Cylinder)

磁盘的分割其实就是记录一个分割区(partition)的起始磁柱与结束磁柱,而这些被记录的信息都存放在主要开机扇区( Master Boot Recorder, MBR )。事实上, MBR 就是在一块硬盘的第零轨上面,这也是计算机开机之后要去利用该硬盘时, 必须要读取的第一个区域。

思考一个问题:MBR的大小是不是固定的?

我们这么想,数据的存储顺序为 : MBR + 其他数据 。如果MBR的大小不固定,比如原来MBR中存放了3个partition的信息,现在我们要新增一个partition,会出现什么后果?后果就是所有的“其他数据”都要顺序的向后移动一个partition信息的距离。是不是想到了数组的增删了。所以我们希望将MBR固定,事实也是如此MBR被固定为只能存放4个partition的信息。这样似乎好多了,但是只有四个partition,够用吗?设计者当然也想到了这个问题,所以将partition分为Primary和Extended两类(E最多只能有一个)。其中P是可以直接使用的,而E不能直接使用,E相当于一个指针,指向扩展的partition的位置信息存储处。

filesystem

filesystem也即文件系统,每个oartition都可以由自己的filesystem,例如fat32,ntfs之类的

不同的partuition虽然filesystem不一样,但是都是用来存储数据的。前面我们介绍了硬盘的最小存储单元为sector(扇区,一般为512Byte),但是filesystem的最小存储单元却不是sector而是block。block是sector的2的次方倍数,磁头一次读取一个block的数据。所以如果block过小,则读取一个文件时磁头需要读取较多数量的block,这样效率很低,但是block也不能过大,应为一个block中只能存在一个档案,例如block大小为100M,那么如果有一个100.1M的文件,则需要占用两个block,浪费了大量空间。

superblock

每个filesystem中的第一个block称为superblock。superblock的作用是存储filesystem的大小,空的和填满的区块以及其他的总书和诸如此类的信息。也就是说如果你要使用一个filesystem的时候,第一个要经过的就是superblock这个块了,如果superblock坏了,这个partition大概也回天乏术了。

linux的EXT2文件系统

我们既然是学习linux,自然要学习linux的filessystem,我们以linux最标准的EXT2做说明。

EXT2中的filesystem分为inode区和block区,其中 inode存储文件的相关属性等信息,而block区存储文件的内容,每个inode都充当指针pointer的作用,它能描述文件的相关属性并指向该文件所在block的位置。blocks与inodes的数量在一开始格式化的时候就已经固定了。

整个filesystem示意图:

linux档案系统是什么

  • SuperBlock:如前所述, Superblock 是记录整个 filesystem 相关信息的地方, 没有 Superblock ,就没有这个 filesystem 了。他记录的信息主要有:

    • block 与 inode 的总量;

    • 未使用与已使用的 inode / block 数量;

    • 一个 block 与一个 inode 的大小;

    • filesystem 的挂载时间、最近一次写入数据的时间、最近一次检验磁盘 (fsck) 的时间等档案系统的相关信息;

    • 一个 valid bit 数值,若此档案系统已被挂载,则 valid bit 为 0 ,若未被挂载,则 valid bit 为 1 。

  • Group Description:纪录此 block 由由何处开始记录;

  • Block bitmap:此处记录那个 block 有没有被使用;

  • Inode bitmap:此处记录那个 inode 有没有被使用;

  • Inode table:为每个 inode 数据存放区;

  • Data Blocks:为每个 block 数据存放区。

linux档案系统的运作

我们知道硬盘的存取速度相对于内存来说是很慢的,linux为了提高整体的速度,采用异步处理的方式。

什么是异步呢?举例来说:『当系统读取了某一个档案, 则该档案所在的区块数据会被加载到内存当中,所以该磁盘区块就会被放置在主存储器的缓冲快取区中, 若这些区块的数据被改变时,刚开始数据仅有主存储器的区块数据会被改变, 而且在缓冲区当中的区块数据会被标记为『 Dirty 』,这个时候磁盘实体区块尚未被修正! 所以亦即表示,这些『 Dirty 』区块的数据必需回写到磁盘当中, 以维持磁盘实体区块上的数据与主存储器中的区块数据的一致性。』

所以linux的关机真的要注意,否则可能会造成文件的丢失甚至是磁盘的损毁!!!

mount point

所以linux的关机真的要注意,否则可能会造成文件的丢失甚至是磁盘的损毁!!!

mount point

我们上面提到的都是关于档案系统 (filesystem),但是要能够让我们的 Linux 使用的话, 非得『挂载 (mount)』上我们的 Linux 系统才行啊! 刚刚我们上面提到了目录可以记录文件名与 inode 的相关信息,此外, 目录也是让我们得以跟 filesystem 产生对应的入口点。因此,我们称那个入口点目录为『 挂载点 (mount point) 』

终于介绍完啦!小伙伴们,这篇关于《linux档案系统是什么》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布文章相关知识,快来关注吧!

声明:本文转载于:亿速云 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>