文件系统与inode

简介: 文件系统与inode

文章目录

文件=文件内容+文件属性

一个文件没有被打开。那么这个文件就在磁盘里面存放着

磁盘是:我们计算机中的一个机械设备(SSD,FLASH卡,USB)

扇区:同心园中一道一道的以小块区域,

磁道:每一快同心园

柱面:半径相同的扇形围起来构成的一圈

磁盘写入的基本单位:扇区! 512字节

定位方式:

可以把磁盘想象成线性结构,LBA可以理解为数组的下标,访问地址,如果我们要写到物理地址,我们就要转换成为物理地址

类比(虚拟地址和物理地址)

大磁盘管理成本就非常高

先要把磁盘划分成一个有一个的小区域

  1. 分区:磁盘中就是分区(C盘D 盘),新加卷,把大盘分解成好几个盘(大磁盘变成小空间)
  2. 格式化::分区写入文件系统: 类比我们给每个省,写入省政府领导班子,(格式化)—》更换领导班子,(更换文件系统)

Linux特有的ext系列的文件系统

super block:里面存放的是每个空间的使用情况,是描述整个分区的相关文件系统信息(可以理解为做了一个备份),避免其他的super block坏掉

group describe table: 描述组的情况,inode bitmap和data bitmap中使用的情况,没有用多少,

一个文件包含文件数据和文件属性,

data block里面存放的就是文件数据(4kb)

inode block里面存放的就是文件的属性(512b)

inode都被存放在了inode table里面

inode

我们可以通过inode的编号找到文件

 struct inode
 {
//文件的所有属性(文件大小,文件权限,文件的拥有者,所属组,文件的编号inode)
//数据信息  int inode number
//int block[32]//用数组的方式把和inode关联的写到inode里面
}

找到一个文件的inode就可以找到他的所有属性,

block是通过映射关系找到器对应的数据块

bitmap

位图

block bitmap

inode bitmap

00001010

从右向左:

比特位的位置含义:inode 编号

比特位内容含义: 特定的inode是否有被占用,


将inode bitmap加载到内存中,找到一个没有被使用的inode(使用位操作)找到里面为0的位置,将其使用

同理对于,block bitmap(对数据块的使用情况,未进行数据的申请释放,遍历5个为0 的位置,在填如到inode里面)

inode操作

目录是文件吗

目录是文件,他也是有inode,里面的文件大小,权限,所有人,所属组也都是有的,同样,目录也是有数据的

目录中的数据存放这将目录中的文件名映射到对应inode编号,我们创建的文件一定是在特定的目录当中

touch a
echo hello > a
cat a

这一系列的操作


我们通过inode bitmap找到未被使用的位,inode

我们再把文件的相关信息全都存放进去

写入: 再block bitmap里面看未被使用的block,建立映射关系,把数据写入到相应的块中

查看: 再当前目录下,把hello.c和新的inode的映射关系查找到,查找到相应的文件

假如我们mkdir demo

在里面查找inode=1234的hello.c

我们通过inode把数据映射到当前路径之下,


维护1234的inode的hello.c的映射关系—> 找到inode=1234----> 在inode table里面找到对应的inode --> 就可以找到了对应的block 数据块—>再打印文件内容


然而

rm hello.c并不是按照上述流程来操作的

他不需要inode table 将上述的操作把inode bitmap给清掉 即可

把所有的数据块清掉

(属性数据和内容数据都还在),—>(恢复文件,把inode bitmap把曾经的位由0置1就可以了,同理block)

:rm并不是删除文件的属性和数据,只是把其是否有有效位给置去了


如果我们误操作了,删除了文件,最好的做法是什么??

什么东西都没有,找人

实际上: 我们创建了一个文件,实在inode table里面创建了一个节点,然后再数据区里面,找多个数据块,进行维护,,然后再inode里面数据和属性建立关系

软硬链接

软连接相当于一个快捷方式,方便我们查找一个路径

  1. 创建软链接
ln -s [file] [lname]


2. 删除链接

unlink [链接名]

软连接是有独立的inode 的说明他就是一个独立文件,,有自己的属性集合,和数据块,数据块里面保存的是指向文件的所在路径+文件名

  1. 创建硬链接
    硬链接本质上就不是一个独立的文件,而是一个文件名和inode编号的映射关系,因为自己没有独立的inode,所以就没有所谓的属性数据



创建硬链接,本质是在特定的路径下,填写一对文件名和inode的映射关系,相当于完成了重命名,




ref就是有多少个硬链接数

建立硬链接数就是ref++,就是叫做引用计数

ref=0的时候就才把这个文件给删除掉

相关文章
|
缓存 供应链 物联网
如何将 Salesforce IoT Cloud 与其他系统集成
Salesforce IoT Cloud 可通过其开放的 API 和集成云平台轻松与外部系统集成,实现数据交换和流程自动化,支持多种协议和标准,帮助企业构建智能物联网应用。
|
存储 Unix Linux
在Linux中,inode是什么?
在Linux中,inode是什么?
|
存储 监控 Linux
在Linux中,什么是 inode ?
在Linux中,什么是 inode ?
|
存储 Linux Docker
Docker在各种操作系统环境的下载、安装配置方法(中)
Docker在各种操作系统环境的下载、安装配置方法
227 0
Docker在各种操作系统环境的下载、安装配置方法(中)
|
13天前
|
人工智能 JSON 供应链
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
LucianaiB分享零成本畅用JVS Claw教程(学生认证享7个月使用权),并开源GeoMind项目——将JVS改造为科研与产业地理情报可视化AI助手,支持飞书文档解析、地理编码与腾讯地图可视化,助力产业关系图谱构建。
23495 11
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
|
2天前
|
人工智能 BI 持续交付
Claude Code 深度适配 DeepSeek V4-Pro 实测:全场景通关与真实体验报告
在 AI 编程工具日趋主流的今天,Claude Code 凭借强大的任务执行、工具调用与工程化能力,成为开发者与自动化运维的核心效率工具。但随着原生模型账号稳定性问题频发,寻找一套兼容、稳定、能力在线的替代方案变得尤为重要。DeepSeek V4-Pro 作为新一代高性能大模型,提供了完整兼容 Claude 协议的 API 接口,只需简单配置即可无缝驱动 Claude Code,且在任务执行、工具调用、复杂流程处理上表现极为稳定。
843 0
|
7天前
|
人工智能 缓存 Shell
Claude Code 全攻略:命令大全 + 实战工作流(完整版)
Claude Code 是一款运行在终端环境下的 AI 编码助手,能够直接在项目目录中理解代码结构、编辑文件、执行命令、执行开发计划,并支持持久化记忆、上下文压缩、后台任务、多模型切换等专业能力。对于日常开发、项目维护、快速重构、代码审查等场景,它可以大幅减少手动操作、提升编码效率。本文从常用命令、界面模式、核心指令、记忆机制、图片处理、进阶工作流等维度完整说明,帮助开发者快速上手并稳定使用。
1678 3
|
17天前
|
人工智能 缓存 BI
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro,跑完 Skills —— OA 审批、大屏、报表、部署 5 大实战场景后的真实体验 ![](https://oscimg.oschina.net/oscnet/up608d34aeb6bafc47f
5479 20
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病