网站建设陆金手指下拉壹玖,百度推广网站域名费,北京建设部网站官网,知名跨境电商平台有哪些✅1主页#xff1a;#xff1a;我的代码爱吃辣 #x1f4c3;2知识讲解#xff1a;Linux——文件系统 ☂️3开发环境#xff1a;Centos7 #x1f4ac;4前言#xff1a;上期我们了解了文件在内存中得组织方式#xff0c;那么文件在磁盘中… ✅1主页我的代码爱吃辣 2知识讲解Linux——文件系统 ☂️3开发环境Centos7 4前言上期我们了解了文件在内存中得组织方式那么文件在磁盘中又是如何管理得呢 目录
一.磁盘物理的结构
二.磁盘的逻辑结构
三.文件系统
四Linux文件属性
五.软硬链接
1.软链接
2.硬链接 一.磁盘物理的结构
磁盘是我们计算机上唯一的一个机械设备。 说明
这里的盘片有好几层双面每一面都会有一个磁头。盘面上很多的微型磁体使用磁体的N/S极存储0/1数据。
抽象图 说明
可以将每一个盘面看成上述的一个抽象图一圈圈的排布的。每一圈叫做一个磁道。每一圈的磁道有多个小扇形组成叫做扇区。多个磁道在竖直方向上形成一个面叫做柱面。一般的磁盘每一个扇区存储大小512字节。
磁盘如何定位
每一个磁头head都有一个编号依次可以定位到一个面。根据上下多个磁道形成的柱面结合磁道cylinder的半径可以准确的定位到一个柱面。一个磁道sector上的扇区都是有编号的。
总结
我们成中定位方式定位一个扇区叫做CHS定位法。
一个普通文件属性数据无非就是占用一个或者多个扇区来进行自己的数据存储的
二.磁盘的逻辑结构
上面我们得知磁盘定位一个扇区可通过CHS方式定位。
那么操作系统内部是不是使用的CHS方式定位一个扇区的呢不是
因为操作系统要想做到解工作如果我们换了一套硬件磁盘存储方案操作系统又要跟着改。
即便是一个扇区已经有了512字节单位IO的基本数量也是很小的而在OS内部依次IO的基本单位是块——4KB可以调整所以OS一定要有一套自己的方案来进行块级别的访问。
在OS看来
OS以4KB块进行IO的一个OS级别的文件块要包含8个扇区。
操作系统是使用数组对块的组织那么OS对磁道的也会抽象数组。数组的每一个成员就是一个扇区。
此时定位一个扇区就可以直接使用数组下标了。
定位任意一个块也是同样使用数组下标的特性来定位。
我们成这种定位一个方式叫做LBA。
操作系统也会提供LBA转CHS的算法支持逻辑地址转换成物理地址。 三.文件系统 Linux ext2文件系统上图为磁盘文件系统图内核内存映像肯定有所不同磁盘是典型的块设备硬盘分区被划分为一个个的block。
Boot Block
一个block的大小是由格式化的时候确定的并且不可以更改。可以设定block大小为1024、2048或4096字节。上图中启动块的大小就是用Boot Block来确定的。
Block Group
ext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相同的结构组成。
超级块Super Block
存放文件系统本身的结构信息。记录的信息主要有bolck 和 inode的总量未使用的block和inode的数量一个block和inode的大小最近一次挂载的时间最近一次写入数据的时间最近一次检验磁盘的时间等其他文件系统的相关信息。Super Block的信息被破坏可以说整个文件系统结构就被破坏了。从Super Block存储的结构信息结合分租来看其实Super Block存储的信息应该都是一样的但是Super Block是每一个分组都会有的一份。目的是返防止Super Block被破坏。去过某一个分组的Super Block出现故障可以使用其他分组的Super Block来进行修复。
Group Descriptor Table
块组描述符描述块组属性信息。
Date Blocks
linux下是将文件的属性和数据分开存储的Date Blocks就是文件数据存储地。一个文件属性大小都是固定的数据是不固定的往往也是占据空间最大的。一个分组中占据空间嘴大的也是Date BlocksDate Blocks有很多个块4KB组成。
Block Bitmap
Date Blocks中有很多的块而且块是使用数组的方式进行组织的。Block bitmap是一个位图结构Date Blocks中每一个块的下标都对应着BIock bitmap的一个位置用于记录块是否被使用。
inode Table
一般而言一个文件内部的所有数据会被放进Date Blocks而内部的属性的集合一般会有一种特性的结构来存储我们叫做inode结点。且每一个文件都会有一个inode结点inode结点内部存储了在该分区内标识该文件的唯一编号我们称之为inode编号也就是对应文件的属性ID。所以即使是一个分区内部都会有很多的文件也就会有会多的inode结点一个group需要有一个地方专门存放这些结点这个存储结点的地方我们称之为inode Tableinode表。
inode Bitmap
一个分组的inode结点数往往是固定的所以我们需要能标识每一个inode结点是否被使用了inode Bitmap每一个bit位就是标识一个inode是否被使用。
四Linux文件属性
我们使用ls -l的时候看到的除了看到文件名还看到了文件元数据: 从左往右依次是权限模式硬连接数文件按的拥有者文件的所属组文件大小最后修改时间文件名。
其实这个信息除了通过这种方式来读取还有一个stat命令能够看到更多信息
stat [文件名] 我们能够清楚的看到
File:文件名。Size:文件大小。Blocks:文件所占块数。IO Block块大小。Inodeinode编号。Links硬连接数。Access:最近访问时间不会立即更新。Modify:最近修改内容时间立即更新。Change最近修改属性时间立即更新。 创建一个新文件主要有一下4个操作
1. 存储属性
内核inode Bitmap先找到一个空闲的inode节点这里是inode标号263466。内核把文件信息记录到inode结点存储待inode Table中。
2. 存储数据
该文件需要存储在三个磁盘块内核Block Bitmap找到了三个空闲块300,500800。将内核缓冲区的第一块数据复制到300下一块复制到500以此类推将inode Bitmap对用的位图位置信息修改。
3. 记录分配情况
文件内容按顺序300,500,800存放。内核在inode上的磁盘分布区记录了上述块列表
4. 添加文件名到目录
新的文件名abc。linux如何在当前的目录中记录这个文件内核将入口inode编号263466文件名abc添加到目录文件。文件名和inode编号之间的对应关系将文件名和文件的内容及属性连接起来。
五.软硬链接
我们可以使用命令展示文件的inode
ls -li 1.软链接
硬链接是通过inode引用另外一个文件软链接是通过名字引用另外一个文件。
制作一个软连接
测试代码和文件 测试代码
#include iostreamusing namespace std;int main()
{cout hello c and linux endl;cout hello c and linux endl;cout hello c and linux endl;return 0;
}使用命令建立软链接
ln -s [原文件] [链接文件] 软连接的作用 2.硬链接