IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 软/硬链接 -> 正文阅读

[系统运维]软/硬链接

磁盘文件

结构

磁盘是计算机中的一个重要的机械设备,文件在没有运行起来的时候,一般都是存放在磁盘上的。一个文件的构成是由文件属性和文件内容构成的。磁盘可以认为是一种线性结构,他的基本单元是扇区,各个扇区可以近似的认为是类似于数组的一种结构。

管理方式

磁盘是一个很大的结构,直接对磁盘管理的话成本会很高,那么对于磁盘该怎么高效的进行管理呢?可以想到使用分而治之的方法,将磁盘分为很多区域,实际上计算机系统也是这么做的。将磁盘进行分区,使得大磁盘变为很多小空间。磁盘格式化的本质实际上就是重新写入文件系统的过程。磁盘在被分为小区域后,每个区域可能还会比较大,于是每个分区中,又进行如下的进一步划分,将分区再次划分为各个Block group
在这里插入图片描述
于是,我们研究文件系统,只需要研究一个Block group中的内容即可,那么每个Block group当中又有什么呢?如下是一个Block group中存放的内容,我们依次看看各个部分所代表的意义。
在这里插入图片描述

Super Block

一般Super Block代表文件中空间的使用情况,例如文件系统相关的类型信息等,与文件系统相关

Group Descriptor Table

这个字段一般存放与组相关的描述信息,例如组的大小以及组内的inode和block的使用情况等信息

Data blocks

存放文件内容,可以想象这个部分是一个分为很多块的存放数据的结构,用来保存文件内容,每个小空间可以被称为一个block

inode Table

存放文件属性信息,这个区域和Data blocks类似,也有很多小空间,但是他不存放文件内容,用来存放文件属性。每个小空间可以被称为一个inode。这里可以注意一点,文件名在操作系统没有意义,操作系统识别文件并不是通过文件名来识别的,文件名是用户使用的,那么操作系统怎么识别文件呢?Linux中标识一个文件正是使用这里的inode编号,每个文件对应一个indoe。每个Inode可以被认识类似于一个结构体的结构,里面存放了文件的所有属性以及inode编号还有与block关联关系等信息。

inode Bitmap

怎么查看inode Table中的各个inode的使用情况呢?难道需要一个个的去进行遍历么?这时候就用到了这里的inode Bitmap。从名字上来看,这个结构是一个位图,每个比特位的位置含义代表了inode编号,每个比特位的内容含义指的是这个inode是否被使用

Block Bitmap

这里的Block Bitmap功能和上面的inode Bitmap类似,代表各个Data block中各个block的使用情况以及编号。

目录

目录也是一种文件,因此目录也有自己的inode,也有数据,任何所创建文件都在一个特定的目录下,因此目录的数据块中存放文件名与inode编号映射关系。

删除文件

删除文件本质上实际上只需要根据文件的inode,在inode Bitmap中将1置为0即可进行删除,这就是为什么删除文件操作一般会比较快而复制文件内容会需要时间,删除文件只需要进行位图清零就可以实现。

软硬链接

软链接

创建软链接方式:ln -s + 文件名 + 链接名
在这里插入图片描述
删除链接可以使用rm进行删除 也可以使用unlink + 链接名
在这里插入图片描述

软链接可以通过创建的链接进行对原文件的访问,功能类似于windows中的快捷方式的功能,可以针对某些执行路径比较深的程序

硬链接

创建方式: ln + 文件名 +硬链接名

在这里插入图片描述
在这里插入图片描述

软硬链接区别

软链接有自己独立的inode代表是一个独立的文件有自己的inode属性和数据块,数据块保存的是指向文件所在的路径以及文件名。
硬连接本质上不是一个独立的文件,而是一个文件名和inode编号的映射关系,因为没有自己独立的inode,创建硬连接本质是在特定目录下,填写一对文件名和inode的映射关系
![在这里插入图片描述](https://img-blog.csdnimg.cn/40c2ca2331a44b17b53e4761eb91f9da.png

硬链接数

我们使用ls -l命令查看当前目录内容时,这一部分代表的是文件对应的硬链接数
在这里插入图片描述
这个硬链接数的值保存在inode属性的结构体中,用int值来保存,有一个文件指向则进行加1,类似于引用计数的方法。当该值为0的时候就代表没有文件指向这个inode,表示文件被删除了

目录链接数

使用mkdir创建一个空目录,这里可以看到此时的链接数是2,这是为什么呢?
在这里插入图片描述
这是因为每个空目录下还有隐藏文件,这里可以看到隐藏文件.的inode和目录的inode正是指向当前目录,因此引用计数会进行加一
在这里插入图片描述
同理,如果在test目录下在创建一个目录,硬链接数会再次加一,这是因为新创建的目录中…隐藏文件也指向同一个inode
在这里插入图片描述
在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章           查看所有文章
加:2022-05-03 09:29:08  更:2022-05-03 09:29:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 17:22:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码