【Linux】文件系统

磁盘及文件系统

在这里插入图片描述

文件的增删查改

重新认识目录

目录是文件嘛? 是的。
目录有iNode嘛? 有
目录有内容嘛? 有

任何一个文件,一定在一个目录内部,所以一个目录的内容是什么?
需要数据块,目录的数据库里面保存的是该目录下 文件名和文件inode编号对应的映射关系。

文件查找

当我们访问一个文件的时候,在某个特定的目录下 要访问的文件 例:log.txt
① 先在当前目录下,找到log.txt的inode编号
② 一个目录也是一个文件,也属于一个特定的分区。在该分区中找到分组,在分组的inode table中,找到文件的inode
③通过inode和对应datablock的映射关系,找到该文件的数据块,并加载到OS,并完成显示到显示器。

文件删除

删除一个文件 例:log.txt
①先找到该文件的inode。
②通过inode映射关系,将block bitmap对应的比特位,置0。
③通过inode映射关系,将inode bitmap对应的比特位,置0。
在进行文件删除的时候,只需修改位图中对应的比特位,不需要对数据块进行操作。

创建文件

创建一个文件 例:log.txt
①创建一个文件时,一定处于一个特定的目录下,通过目录所属分区,找到对应分组。
②在inode bitmap中找到可以使用的位置,定义新的inode。
③计算出这个文件所要占用的数据块,在block bitmap中找到能够使用的数据块。
④将找到可以使用的数据块填入inode中blocks_arr数组中(映射关系)。

软硬连接

Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln 命令产生硬链接。

硬连接
硬连接指通过索引节点来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在 Linux 中,多个文件名指向同一索引节点是存在的。比如:A 是 B 的硬链接(A 和 B 都是文件名),则 A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号相同,即一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件,A 和 B 对文件系统来说是完全平等的。删除其中任何一个都不会影响另外一个的访问。
硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。 其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
在这里插入图片描述
硬连接出来新文件使用原文件相同的inode number 说明他们公用一个inode结构体。

struct inode
{
  //…
  int ref; //ref表示有几个硬连接
  //…
}

共用一个inode结构体说明他们的属性和内容是共享的,改变其中一个另一个也会改变,验证一下。
在这里插入图片描述

文件的硬连接数
在这里插入图片描述

思考为什么刚创建出来的普通问价硬连接是1,而目录文件是2?为什么目录文件不是1?
在这里插入图片描述
在这里插入图片描述
原因:因为新创建的目录文件中会有隐藏的两个文件,一个 . 文件,表示当前目录。一个 … 文件,表示上一级目录,我们可以看到, .文件和该目录文件inode number相同,说明 .文件也是该目录文件的硬连接。
结论,我们在创建目录文件的时候,会在目录文件中创建两个隐藏文件,一个.文件,一个. .文件。.文件为当前目录文件的硬连接,供用户使用。
用户自己不可以创建目录文件的硬连接,操作系统不允许!!!

软连接
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于 Windows 的快捷方式。 它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。比如:A 是 B 的软链接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号不相同,A 和 B 指向的是两个不同的 inode,继而指向两块不同的数据块。但是 A 的数据块中存放的只是 B 的路径名(可以根据这个找到 B 的目录项)。A 和 B 之间是“主从”关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。
在这里插入图片描述
可以看到软连接出来的文件拥有一个新的inode number,说明他们不是公用一个indode 结构体。也会有自己的inode tables、inode bitmap、block bitmap等。
不过文件的内容中存储的是原来文件的路径名,和windows的快捷方式同理。

如果删除原来的文件,那么创建出来的软连接文件不可被继续使用
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/127102.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【技术支持案例】S32K146的hard fault问题处理

文章目录 1. 案例背景2. 方案准备2.1 HardFault(硬件错误异常)2.2 UsageFault(用法错误异常)2.3 BusFault(总线错误异常)2.4 MemManage Fault(存储器管理错误异常) 3. 现场支持3.1 现…

Java基础之static关键字

目录 静态的特点第一章、静态代码块第二章、静态属性第三章、静态方法调用静态方法时静态方法中调用非静态方法时 第四章、static关键字与其他关键字 友情提醒 先看文章目录,大致了解文章知识点结构,点击文章目录可直接跳转到文章指定位置。 静态的特点…

JVM学习(一)--程序计数器

作用:记住下一个jvm指令的执行地址 每一行java源代码,会被编译为多行jvm指令,上文所说的执行地址就是这里的0,3,4等 ,由于执行访问特别频繁,程序计数器的底层是有寄存器来实现的 特点: 线程私有&#xff…

kafka学习-生产者

目录 1、消息生产流程 2、生产者常见参数配置 3、序列化器 基本概念 自定义序列化器 4、分区器 默认分区规则 自定义分区器 5、生产者拦截器 作用 自定义拦截器 6、生产者原理解析 1、消息生产流程 2、生产者常见参数配置 3、序列化器 基本概念 在Kafka中保存的数…

一文速学-让神经网络不再神秘,一天速学神经网络基础(七)-基于误差的反向传播

前言 思索了很久到底要不要出深度学习内容,毕竟在数学建模专栏里边的机器学习内容还有一大半算法没有更新,很多坑都没有填满,而且现在深度学习的文章和学习课程都十分的多,我考虑了很久决定还是得出神经网络系列文章,…

Linux安装kibana

相关链接 https://www.elastic.co/cn/downloads/kibana https://artifacts.elastic.co/downloads/kibana/kibana-7.5.1-linux-x86_64.tar.gz 官网下载可能比较慢,下面提供下载地址 百度云链接:https://pan.baidu.com/s/1d9Cqr9EwHF94op90F57bww 提取码…

Elasticsearch实战(五):Springboot实现Elasticsearch电商平台日志埋点与搜索热词

文章目录 系列文章索引一、提取热度搜索1、热搜词分析流程图2、日志埋点(1)排除logback的默认集成。(2)引入log4j2起步依赖(3)设置配置文件(4)配置文件模板(5&#xff09…

计算机竞赛 基于深度学习的人脸性别年龄识别 - 图像识别 opencv

文章目录 0 前言1 课题描述2 实现效果3 算法实现原理3.1 数据集3.2 深度学习识别算法3.3 特征提取主干网络3.4 总体实现流程 4 具体实现4.1 预训练数据格式4.2 部分实现代码 5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 毕业设计…

使用 【jacoco】对基于 SpringBoot 和 Dubbo RPC 的项目生成测试覆盖率报告:实践+原理

基于 Dubbo RPC 的项目中有一个提供者项目backend、一个消费者项目gateway、以及注册中心nacos。本篇文章记录在windows本地对该框架的测试过程,以及介绍jacoco的基本原理 测试过程 官网下载安装包解压到本地,https://www.jacoco.org/jacoco/ 只需要用…

vue.js+nodejs家庭个人理财收支管理系统5x6nf

本收支管理系统以vue.js作为框架,nodejs语言,B/S模式以及MySql作为后台运行的数据库。本系统主要包括以下功能模块:用户管理、收入分类、支出分类、每日收入、每日支出等模块。 本文的组织结构如下: 1、绪论。综述了本文的研究背景…

Redis快速入门

文章目录 0. Redis介绍1. Centos下Redis安装2. redis.conf配置文件介绍3. redis相关命令4. 启动3.2 **命令行操作**3.3 Redis压测命令 4.redis中发布订阅和事务4.1 发布订阅(Pub/Sub)4.2 事务 5. redis封装系统服务6. 问题与解决6.1 启动Redis报错&#…

荣耀崛起阵容推荐,荣耀崛起最强阵容

今天给大家带来的荣耀崛起阵容推荐是新手阵容推荐,以核心输出为点,由点及面,来展开叙述阵容! 关注【娱乐天梯】,获取荣耀崛起0.1折内部福利号 荣耀崛起最强阵容兽族战神流: 此阵容是以战士为核心&#xff0…

机器学习_特征工程_特征数据的评价标准

本文主要从 单特征分析,多特征筛选,特征监控,外部特征评估的几个方面对特征数据进行阐述。 来源 : 特征筛选_特征覆盖度怎么算_adamyoungjack的博客-CSDN博客 1. 单特征分析 1.1 简介 好特征可以从几个角度衡量:覆…

geopandas 笔记: datasets 数据集

geopandas 自带的几个数据集 1 世界各个国家 import geopandas as gpd import pandas as pdpd.set_option(display.max_rows,None) gpd.read_file(gpd.datasets.get_path(naturalearth_lowres)) pop_est人口数量continent国家所在的大陆name国家的名称iso_a3国家的三个字母的…

初识集合框架 -Java

目录 一、集合框架的概念 二、集合框架的重要性 三、涉及的数据结构和算法 3.1 什么是数据结构 3.2 集合框架(容器)背后对应的数据结构 3.3 相关的Java知识 3.4 什么是算法 3.5 如何学好数据结构和算法 一、集合框架的概念 Java 集合框架,…

山寨能走多远?盗版还是盗火?KCC@深圳活动圆满举办

2023.8.19 ,我们组织了一场大家期待已久的线下活动: KCC深圳:Kickoff & 读书会Meetup 来了深圳都是深圳人,没有哪座城市能够像深圳代表中国改革开放的发展历程,年轻、上进、有活力、拥抱新事物,同样&am…

脚本:python实现动态爱心

文章目录 效果代码Reference python实现dynamic heart 效果 代码 import turtle as tu import random as ratu.setup(0.5, 0.5) # 设置画板大小(小数表示比例,整数表示大小) tu.screensize(1.0, 1.0) # 设置屏幕大小 tu.bgcolor(black) #…

系统架构设计师(第二版)学习笔记----多媒体技术

【原文链接】系统架构设计师(第二版)学习笔记----多媒体技术 文章目录 一、多媒体概述1.1 媒体的分类1.2 多媒体的特征1.3 多媒体系统的基本组成 二、多媒体系统的关键技术2.1 多媒体系统的关键技术2.2 视频技术的内容2.3 音频技术的内容2.4 数据压缩算法…

2023挖漏洞给报酬的网站汇总,兼职副业3天收益2000

一、众测平台(国内)二、前沿漏洞研究奖励计划三、行业SRC四、企业应急响应中心-SRC-汇总 1、互联网企业2、生活服务、住宿、购物相关企业3、物流、出行、旅游4、金融相关企业5、视频游戏直播社交娱乐6、教育、问答、知识付费7、泛科技通讯物联网云服务8、安全企业9、其他 一、…

java中log使用总结

目录 一、概述1.1. 核心日志框架1.2 门面日志框架 二、最佳实践2.1 核心日志框架API包2.2 门面日志框架依赖2.3 集成使用2.3.1 集成jcl2.3.2 集成slf4j2.3.2.1 slf4j集成单一框架2.3.2.2 slf4j整合混合框架 三、总结3.1 所有相关包3.1.1 核心日志框架包3.1.2 门面日志框架3.1.3…