文件系统2(Linux下)

1 挂载分区

文件系统1中已经知道了能够根据inode号在指定分区找文件了,也已经能根据目录文件内容,找指定的inode了,在指定的分区内,就可以对文件进行操作了。但是还有几个问题,那就是inode是不能跨分区的,Linux下有多个分区,那Linux下是我们是如何知道自己在那一个分区的?

1.分区写入文件系统,无法直接使用,需要和指定的目录关联,进行挂载才能使用。

2.因此,可以根据访问目标文件的"路径前缀"准确判断我在哪⼀个分区。

 例如:

/home/iu/study/test1/home/iu/study/test2

将两个分区分别挂载到这两个目录下时,在该分区下创建文件,对文件进行操作,需要进行路径解析,进行路径解析时,路径前缀就会有一部分是该分区的路径,这样就能确定该文件在哪个分区里面了。

总结(文件系统的大致操作流程):

2 软硬连接

2.1 硬链接

前面我们知道,每个文件名对应一个inode,那多个文件名是否可以对应多个inode呢?其实这是可以的。这就是建立硬链接。

命令:

ln [被链接的文件名] [链接的文件名]

硬链接,其实可以理解为重命名,可以用来文件备份。本质是并没有创建新的文件,而是在指定的目录文件下(内容中),建立了一个新的文件名与inode的映射关系。

利用ls命令查看文件信息时,可以看到这里数字2,1,2这是什么呢?其实是引用计数,一个文件inode对应了多少个文件名,在删除时,引用计数--,当减为0时才会将对应磁盘上的文件删除。

注意:目录文件不能创建硬链接

前面说过,访问文件时需要路径解析,会构建dentry树结构,如果创建了目录的硬链接,就会形成路径环路问题。

还有一点就是我们在创建一个目录文件时,默认引用计数为2,这是因为有 . (当前路径)的存在,在当前目录文件下再创建一个目录文件时,引用计数就会变成3,是因为在新的目录文件下存在 .. (上一级路径),相等于有三个指向同一个inode了。

 这里不是系统都创建目录文件的inode了吗?不会形成环路问题吗?

其实这是经过特殊处理的,可以理解为在构建dentry树结构时,. 和 ..,被作为递归出口,将这两个忽略掉了。

2.2 软连接

硬链接是通过inode引用另外⼀个文件,软链接是通过名字引用另外⼀个文件,但实际上,新的文件和被引用的文件的inode不同(这是两个不同的文件),其实软连接中的文件内容对应的是,对应文件的文件路径字符串。应用主要是创建一些快捷方式。

命令:

ln -s [被链接的文件名] [链接的文件名]

2.3 软硬连接对比

软连接是独立文减件

硬链接只是文件名和目标文件inode的映射关系

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

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

相关文章

Leetcode-​2537. 统计好子数组的数目​

Problem: 2537. 统计好子数组的数目 思路 滑动窗口 解题过程 思路: 使用滑动窗口来维护子数组,并通过组合计数动态调整满足条件的数对数目。具体来说,我们维护一个窗口[l,r],使得窗口内相同元素的对数至少为 k,并计算…

js手写代码篇--手写Object.assign

19、Object.assign 作用: Object.assign的作用是将源对象的所有可枚举属性复制到目标对象中。它返回目标对象。 const obj1 { a: 1, b: 2 };const obj2 { b: 3, c: 4 };const obj3 { d: 5 };const target {};Object.assign(target, obj1, obj2, obj3);console…

使用 C/C++ 和 OpenCV 构建智能停车场视觉管理系统

使用 C 和 OpenCV 构建智能停车场视觉管理系统 本文将详细介绍如何利用 C 和 OpenCV 库,从零开始创建一个智能停车场管理系统。该系统通过摄像头捕捉的画面,能自动完成两项核心任务: 车位识别:通过检测地面上的黄色停车线&#…

服务器静态ip,网关不能占用*.*.*.1

网关不能占用*.*.*.1.1 通常用于运行关键服务(如DHCP、NAT、DNS代理),.1 是网络世界的"VIP包厢",普通用户强闯只会被"请出"。

自然语言处理【NLP】—— CBOW模型

文章目录 引言一、CBOW模型概述1.1 什么是CBOW模型1.2 CBOW vs Skip-gram 二、CBOW模型原理详解2.1 模型架构2.2 数学原理2.3 训练过程 三、CBOW的PyTorch实现四、CBOW模型的应用与优化4.1 典型应用场景4.2 性能优化技巧 五、CBOW的局限性六、结语 引言 在自然语言处理(NLP)领…

为MTK 9300开发板移植Linux系统(以Debian为例)的详细技术指南

以下是为MTK 9300开发板移植Linux系统(以Debian为例)的详细技术指南,涵盖环境搭建、内核移植、驱动适配(摄像头/显示器/WiFi)、系统集成与优化。 MTK 9300开发板Linux系统移植全流程指南 1 项目概述 1.1 硬件平台 SoC:MediaTek MTK9300 (ARMv8-A架构,4Cortex-A78 + 4C…

Java Lambda 表达式与 Stream API 全解析:从基础到进阶

以下是对您博客内容的优化版本,在保留原有核心内容的基础上,补充了Lambda表达式及Stream API的完整方法体系,并通过结构化排版和扩展说明提升可读性。 Java Lambda表达式与Stream API全解析:从基础到进阶 一、Lambda表达式与Str…

Let’s Encrypt(乐此加密) 免费SSL证书申请

一、前言 腾讯云、阿里云等平台都支持免费的SSL证书申请,但只支持单域名SSL证书申请,不支持泛域名证书申请,而且每年只有20张免费证书额度,自2024年4月25日之起免费申请的证书只有3个月有效期。域名比较多的情况下,更新…

SQLite3 性能优化

在嵌入式开发和轻量级应用场景中,SQLite3 作为轻量级数据库引擎,凭借其无需独立服务器、部署便捷等特点被广泛应用。然而,当面对大量数据的高速读写需求时,默认配置下的 SQLite3 性能往往难以满足要求。本文将从数据库配置调整、W…

零基础设计模式——行为型模式 - 状态模式

第四部分:行为型模式 - 状态模式 (State Pattern) 我们继续学习行为型模式,接下来是状态模式。这个模式允许一个对象在其内部状态改变时改变它的行为,对象看起来就像是改变了它的类。 核心思想:允许一个对象在其内部状态改变时改…

面向对象面试题集合

前言 记录面向对象面试题相关内容,方便复习及查漏补缺 题1.简述面向对象?主要特征是什么? 面向对象编程(Object-Oriented Programming,简称OOP)是一种以“对象”为核心的编程范式,通过将现实…

二十一、【用户管理与权限 - 篇三】角色管理:前端角色列表与 CRUD 实现

【用户管理与权限 - 篇三】角色管理:前端角色列表与 CRUD 实现 前言准备工作第一部分:更新 API 服务以包含角色管理第二部分:添加角色管理页面的路由和侧边栏入口第三部分:实现角色列表页面第四部分:实现角色表单对话框组件第五部分:全面测试总结前言 一个完善的权限系统…

Objective-c protocol 练习

题目描述: 请使用 Objective-C 中的 protocol 协议机制,实现一个简易的门禁控制系统。 系统包含两个类: AccessControlSystem —— 门禁系统,用于执行开门操作;Admin —— 实现权限判断逻辑的管理员。 要求如下&am…

科技创新赋能产业创新,双轮驱动助力新疆高质量发展!

在新疆维吾尔自治区成立70周年之际,中国产学研合作促进会于6月14日在乌鲁木齐举办“天山对话:推动新疆科技创新与产业创新”盛会。多位院士、专家、学者及企业代表齐聚一堂,探寻推动新疆科技创新和产业创新的新路径、新动能。活动现场&#x…

C#最佳实践:推荐使用 nameof 而非硬编码名称

C#最佳实践:推荐使用 nameof 而非硬编码名称 在 C# 编程领域,代码的可维护性、健壮性和可读性是衡量程序质量的重要指标。在日常开发中,我们常常会遇到需要引用类型、成员或变量名称的场景,比如在抛出异常时指定错误相关的变量名、在日志记录中标记关键元素名称等。传统的…

vue3 iframe 跨域-通讯

一、基础嵌套方法 直接在 HTML 中使用 <iframe> 标签指定 src 属性&#xff1a; <iframe src"https://目标网址.com" width"800" height"600"></iframe>‌限制‌&#xff1a;若目标网站设置了 X-Frame-Options 响应头&#x…

Iceberg与Hive集成深度

一、Iceberg在Hive中的ACID事务实现与实战 1.1 传统Hive的事务局限性 Hive原生仅支持非事务表&#xff08;Non-ACID&#xff09;&#xff0c;存在以下痛点&#xff1a; 不支持行级更新/删除并发写入时数据一致性无法保证无事务回滚机制历史版本查询需手动实现 1.2 Iceberg为…

深入剖析 Celery:分布式异步任务处理的利器

本文在创作过程中借助 AI 工具辅助资料整理与内容优化。图片来源网络。 文章目录 引言一、Celery 概述1.1 Celery 的定义和作用1.2 Celery 的应用场景 二、Celery 架构分析2.1 Celery 的整体架构2.2 消息中间件&#xff08;Broker&#xff09;2.3 任务队列&#xff08;Task Que…

Flask应用中处理异步事件(后台线程+事件循环)的方法(2)

在上一节&#xff0c;我们讲述了最简单最基础的后线程的建立&#xff0c;现在我们将进行拓展 Flask应用中处理异步事件&#xff08;后台线程事件循环&#xff09;的方法&#xff08;1&#xff09; 在我们的实际应用当中&#xff0c;我们需要定义三个东西 一个多线程的信号旗&am…

C++(面向对象编程)

思维导图 面向对象 1.面向对象思想 概念&#xff1a;面向对象编程&#xff08;OOP&#xff09;是一种以对象为基础的编程范式&#xff0c;强调将数据和操作数据的方法封装在一起。这就是上篇文章讲过的。面向过程是以“怎么解决问题”为核心&#xff0c;而面向对象思想在于“谁…