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 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 【Linux】从文件系统的角度理解inode 理解软硬连接 -> 正文阅读

[系统运维]【Linux】从文件系统的角度理解inode 理解软硬连接

前言

操作系统为了方便管理硬盘的空间,会将硬盘进行分区管理;比如在window中就是我们所说的C盘D盘等盘符;
而 分区被分开后,需要载入文件系统才可以使用,文件系统是操作系统管理硬盘的一种软件的分层方式;

Linux的ext2文件系统

要了解文件系统,我们可以简单了解以下ext2文件系统的结构;Linux中使用的文件系统大多数都是ext2 ext3 ext4;这几种文件系统的管理方案基本相同,只不过细节上有些不一样;


在Linux ext2中,大概有以下的结构:
在这里插入图片描述


inux ext2文件系统,上图为磁盘文件系统图(内核内存映像肯定有所不同),磁盘是典型的块设备,硬盘分区被 划分为一个个的block。一个block的大小是由格式化的时候确定的,并且不可以更改。例如mke2fs的-b选项可以设 定block大小为1024、2048或4096字节。而上图中启动块(Boot Block)的大小是确定的,就是存放一些操作系统启动的资料信息;

  1. Block Group:ext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相同的结构组成。也就是硬盘被分区了,然后又在每个分区中又分block group ,就是为了方便管理;而每个block group又会被分为以下几个信息:

  2. 超级块(Super Block):存放文件系统本身的结构信息。记录的信息主要有:bolck 和 inode的总量, 未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的 时间,最近一次检验磁盘的时间等其他文件系统的相关信息。Super Block的信息被破坏,可以说整个 文件系统结构就被破坏

  3. GDT, Group Descriptor Table:块组描述符,描述块组属性信息;

  4. 块位图(Block Bitmap):Block Bitmap中记录着Data Block中哪个数据块已经被占用,哪个数据块没 有被占用

  5. inode位图(inode Bitmap):每个bit表示一个inode是否空闲可用。

  6. **i节点表(inode table) **: 存放文件属性 如 文件大小,所有者,最近修改时间等;

  7. date blocks数据区:存放文件内容 ;


一个没打开的文件,有文件属性和文件内容:在文件系统中:文件属性存储在inode表中,文件内容存放在数据区里;


系统的角度,是如何查找哪个inode table中的 inode 和date block 没有被使用的?

通过inode Bitmap 和 block Bitmap; 这两个是位图信息:
当系统要查找一个文件的inode 表哪个inode没被使用,那么就会将inode 加载到内存,然后通过位操作,就可以判断哪个bit没被使用;
在这里插入图片描述
block Bitmap 也是这样,查找数据区哪个数据块没被使用,也是操作系统加载blok Bitmap到内存中,通过位操作就可以知道哪个数据块没被使用了;


inode

inode 和 inode 编号不是一个同样的东西,inode编号在inode里面;inode是存放文件的属性,而inode编号是文件属性之一;
系统查找一个文件就是通过inode编号查找的,而不是通过文件名;
并且在Linux中一个文件,对应一个inode,而我们所知道的硬链接有多个inode编号,不是该硬链接文件有多个inode,该硬链接有多个inode编号而已;


目录存储的内容

目录也是文件,文件就有属性和内容,文件的属性依旧是存放在inode表中,而目录的文件内容也是存放在date blocks中;
请问目录存储的内容是什么?

目录存储的内容是:该目录下的文件名和改文件名对应的inode编号;

当我们创建一个文件时候,系统的角度发生了什么事?

当我们创建了一个文件,系统就会找inode表,里面看看哪个inode没被使用,一旦找到了一个inode没被使用,那么就会把文件的属性,存入到inode里;
然后文件存放了属性,当然还有存放内容,操作系统也会去数据区找到一个没有被使用的数据块,把文件内容存放在数据块中;
然后通过inode里面的一个数据属性成员数组(数组存放的是文件数据的数据区),建立inode和文件的联系;

然后就会在该目录下,新增目录文件内容:也就是创建新的文件名和inode编号的对应关系,


系统角度,是如何查找一个文件并读取文件内容的?

在系统的角度,绝对不是按文件名查找文件的,而是先去当前文件名目录下:查找到该文件名对应的inode编号,
然后通过inode编号找到inode表,再通过inode找到文件的数据成员,找文件内容这样就可以读取一个文件了;


理解软硬链接

创建软链接在使用层面就是给文件名创建快捷方式:
最常用的地方就是:当一个文件的路径过于深的时候,我们就可以使用软连接的方式给该文件创建软链接也就是快捷方式嘛!

ln -s file_s.txt file.txt # 给file.txt创建软连接
unlink file_s.txt #删除软链接

创建硬链接的使用,基本都是在目录文件使用得多:因为当我们创建一个新目录时候,我们发现该目录的硬链接数总是为2,原因是,该目录下有个当前目录.,该当前目录就是和你创建的目录是同一个inode,也就是硬链接啦。

ln file.txt_hard file.txt #给file.txt创建硬链接

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

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 18:25:00  更:2022-04-18 18:25:33 
 
开发: 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 22:51:08-

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