linux档案就是目录(文件)。为了方便管理文件和目录,Linux系统将它们组织成一个以根目录“/”开始的倒置的树状结构。Linux中的目录和Windows系统中的文件夹类似,不同之处在于,Linux系统中的目录也被当做文件看待。
程序员必备接口测试调试工具:立即使用
Apipost = Postman + Swagger + Mock + Jmeter
Api设计、调试、文档、自动化测试工具
后端、前端、测试,同时在线协作,内容实时同步
本教程操作环境:linux7.3系统、Dell G3电脑。
linux档案就是目录(文件)。
为了方便管理文件和目录,Linux 系统将它们组织成一个以根目录 / 开始的倒置的树状结构。Linux 中的目录,和 Windows 系统中的文件夹类似,不同之处在于,Linux 系统中的目录也被当做文件看待。
在 Linux 操作系统中,所有的文件和目录都被组织成以一个根节点“/”开始的倒置的树状结构,如图 1 所示。
图 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示意图:
- 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视频教程》
以上就是linux档案是什么样的的详细内容,更多请关注自由互联其它相关文章!