linux 系统学习

文件系统的学习

关于文件系统
linux 的文件系统

磁盘总的一个扇区是512 磁盘 非为若干个block 。每个blcok 内的默认大小是4096也就是 8个扇区

整个磁盘的第一个block 称之为启动块 也就是boot block boot blcok 记录分了几个区
记录了区的起始位置 和每个区的装载的系统 大小是多少呢 系统厂商统一为1k
第一个block 之后 1 block = 4096bytes = 8磁盘扇区
1个 磁盘扇区 = 512bytes

我们现在为了方便讨论问题 就先把block设置为 1k的大小进行讨论

管理 block 就把 block分成 组进行管理

组内的一个block 称之为superBlock 这个block块内 超级快
在这个超级块内 主要保存了 操作系统的版本 上次 挂载在的时间 ,文件系统的信息
每个块的大小

superblock 之后 有几个block块称之为GDT (块组描述表) 描述 是第几个块是block bit map 。第几个块是inode bit map 。等等
还有当前的空闲块 是多少 当前的空闲块 是多少 。当前的空闲块 。

GDT 之后是块位图 利用了位图的思想 。(block bit map)一个比特位 一个比特位
用每个比特位 来表示表示block有没有使用 1k = 8192bit 就能描述8192个块的使情况

没用的话 用0表示 有在使用 的时候 标示为1 这个就决定了 一个group里面一共有多个Block, 决定了一个group的 大小 。
块位图 之后 就是Inode位图

Inode位图 (inode bit map)

inode位图之后 就是 inode tab

inode tab 。称之为 inode 表 。表里面 由若干个inode 组成 。每个inode 占位的大小为128b

一个块里面有多少个inode呢 。一个块是1kb 。也就是 一个块里面允许存放8个inode (1028/128)

inode 是什么东西呢 。

每一个文件 都包含一个inode 。文件的 属性 都存在inode 里面 文件的属性 都存放在inode 里面
indeo bit map 。就是记录inode 的使用情况 。和 block bit map 是一样的饿
比如说第一个inode 已经被人使用 。就会是1 。

inode tap 。之后 就是通常的数据块 ( block 块)

假设 我在group0 中存入一个hello 文件 首先应该先申请一个inode 申请一个inode 之前 。必须知道 inode 的使用情况
之后 跳过超级快 通过GDT 看看 inode bit map 在第几个块 。然后 看看第几个inode hi空闲的 知道 第几个inode 的 是空闲之后 。然后 申请一个inode

inode 里面存储文件的基本信息 如创建的时间 等等。
这个文件指示一个inode了 。下一次文件中写内容

inode 分析

inode 128 个字节 有两部分组成 。一部分是 文件属性 。另一部分是数据指针 (4)
数据块指针 指向块数据块

如果 数据很大 怎么办 一个inode 里面 只有15个指针 。数据很大的话 。 inode 的倒数第三个指针开始 是一级间接寻址 二级间接寻址 三节间接寻址
block[12] 是一级间接寻址的指针 。这个指针 指向的数据块 不存储 数据 存储指针 指针所指向的数据块 才真正的存储数据

删除数据其实就是把block bit map 反转为0 。还有吧这个文件的 inode bit map 反转为0 其实就是 删除数据了 。删除数据了 , 删除数据了 . 其实就是删除数据了 。完成了rm

目录中的记录想

文件名并没有存放在inodel 中 。存在哪里呢 我们看看

在我们的印象中 一个目录的大小是多少呢 。是4096 。为什么是 4096 因为普通的一个 block就是 4096
我们如果见一个 home 目录 home首先要得到一个inode 通过inode 的数据块指针 申请到一个数据块 。目录的数据块里面存储的都是什么东西呢 。其实就是记录想
目录的数据块里面存储的就是记录想
一条一条的记录想 。记录的了文件的名字 以及 文件的inodel号还有文件类型 本条记录有多长 是目录 还是文件

文件的寻址 过程 是什么过程呢。如果hello 这个文件在home 目录下 。
首先 进入home 目录 通过文件名 匹配 到某一条目录 然后通过目录 得到inode号 然后
读取数据

但是 这个home 目录是怎么被找到的呢

home这个目录在根目录下
同意规定 根目录在inode 号为2的 文件区

你可能感兴趣的:(linux 系统学习)