代码编织梦想

文件 = 文件内容 + 文件属性。
它保存在磁盘上。
在这里插入图片描述
磁盘的使用单位为扇区,一个扇区的大小为512字节。通过其所在盘面,所在扇区,所在磁道,就可以定位文件。

磁盘的盘片可以抽象成线性的。好比磁带。
在这里插入图片描述

在这里插入图片描述
这是Linux ext2文件系统的典型磁盘文件系统图。分区划分的block大小在格式化的时候确定,并且不可修改。

文件的属性存放在inodeTable中。
文件的内容存放在Data Blocks中

Boot Block:启动块
Super Block:超级块, 存放文件系统本身的结构信息。记录的主要信息有block、inode的总量,未使用的block和inode的数量,一个block和inode的大小……等。如果超级块的信息被破坏,则意味着整个文件系统结构就被破坏了。
Group Descriptor Table:块组描述符,描述块组属性信息。
Block Bitmap:块位图,用位图的方式记录着Data Blocks中block的使用情况(哪些处于空闲,哪些已被占用)
inode Bitmap :inode位图,用位图的方式记录着inode Table中哪些inode使用情况。
inode Table:i节点表,存放文件的属性。
Data Blocks:数据块,存放文件内容。

在这里插入图片描述
inode Table中一个条目就是一个inode,inode应该是结构体,结构体里面保存着文件的属性、inode编号等。

Linux中文件名在系统层面是没有意义的,它是方便给用户使用的,真正标识文件的是inode编号,一个文件对应一个inode。通过inode,不仅可以得到文件属性,还可以通过它的映射关系找到存放其文件内容的数据块。

目录也是文件,它对应的数据块中存放着映射关系,文件名:inode编号

现在从系统层面上看一下,创建文件、查看文件、删除文件,文件系统的操作。

创建文件的主要操作

1、内核在inode Bitmap中,查询哪一个inode是空闲的。然后去inode Table中找到这个inode,并将文件属性等信息记录进去。
2、内核在Block Bitmap中,查询哪些Data Block是空闲的,选用合适的空闲Block, 将信息存储进Data Block中。
3、在inode的磁盘分布区记录上述的Block。
4、建立文件名和inode之间的映射。将文件名和文件的内容及属性连接起来。

查看文件的主要操作

1、查看文件所在目录的inode,进而查看其数据块,它的数据块里存放着目录下文件的文件名和inode的映射关系。
2、通过目录中数据块存放的映射关系,找到文件对应的inode。
3、通过inode,找到对应的Data Block.

删除文件的主要操作

其实只需要它的数据块和inode是空闲的,则可以认为它被删除了。
使Block Bitmap和Inode Bitmap中的相关记录修改为空闲态。


Linux查看文件inode编号

在Linux中,查看文件inode编号的选项-i

[YDY@VM-0-2-centos day18]$ ls -i
658415 node.c
[YDY@VM-0-2-centos day18]$ ls -ali
total 8
658403 drwxrwxr-x  2 YDY YDY 4096 Jul 23 22:53 .
655386 drwx------ 29 YDY YDY 4096 Jul 23 22:53 ..
658415 -rw-rw-r--  1 YDY YDY    0 Jul 23 22:53 node.c
[YDY@VM-0-2-centos day18]$ ^C

在这里插入图片描述

软链接、硬链接

在Linux上,多个文件名可以对应同一个inode。
就像李逵指的是他,黑旋风指的也是他,铁牛也指的是他。
在这里插入图片描述
这就是硬链接,而有多少个文件名对应这个inode,则文件名数量就称这个inode的硬链接数。
Linux上创建硬链接的命令:ln 已存在文件名 增加的文件名

在这里插入图片描述
创建硬链接的本质,实际上是在特定的目录下,增加一对文件名和Inode的映射关系。
在这里插入图片描述
而软链接,这种方式好比创建了一个快捷键。
创建软链接的命令:ln -s 已存在文件路径和文件名 增加文件名

[YDY@VM-0-2-centos day18]$ ls -ali
total 12
658403 drwxrwxr-x  2 YDY YDY 4096 Jul 23 23:30 .
655386 drwx------ 30 YDY YDY 4096 Jul 23 23:19 ..
[YDY@VM-0-2-centos day18]$ ln -s ~/test_inode/test_inode.c myinode
[YDY@VM-0-2-centos day18]$ ls -ali
total 12
658403 drwxrwxr-x  2 YDY YDY 4096 Jul 23 23:34 .
655386 drwx------ 30 YDY YDY 4096 Jul 23 23:19 ..
658418 lrwxrwxrwx  1 YDY YDY   33 Jul 23 23:34 myinode -> /home/YDY/test_inode/test_inode.c

查看myinode,发现这个内容实际上是/home/YDY/test_inode/test_inode.c中的文件内容。
在这里插入图片描述

在这里插入图片描述
test_inode.c文件的inode编号为658417,而创建的软链接myinode的inode编号为658417。这也是软链接和硬链接的本质区别。

软链接出的文件是另一个独立文件,有自己的inode和Data Block
硬链接出的文件是同一个文件,增加的只是文件名和inode的映射关系,指向的是同一个inode。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_56870066/article/details/125953126

理解inode,以及软硬链接_zwe7616175的博客-爱代码爱编程

一、inode查看命令 1.stat 功能:列出文件大小,文件占有的块数,块的大小,主设备号,次设备号,inode number,链接数,访问权限,uid,gid,atime(最近访问),mtime(最近更改),ctim

理解文件系统----inode与软硬链接_honeycr的博客-爱代码爱编程

在之前一篇文章里,我们讲了文件的部分属性,现在我们来了解一下文件系统。 点击打开链接 一、inode 1、什么是inode 理解inode,要从文件存储说起。 文件储存在硬盘上,硬盘的最小存储单位叫做“

修改docker -v 挂载的文件遇到的问题。inode 软链接 硬链接 docker volume_haojiliang的博客-爱代码爱编程

新博客地址:https://blog.iaiot.com/docker-v-inode.html 原文地址:https://lrita.github.io/2017/08/18/mount-volume-to-docker-and-modify-from-host/ 在启动docker容器时,为了保证一些基础配置与宿主机保持同步,通常需要将这些配置文件

硬链接与软链接-爱代码爱编程

硬链接 (hard link) 与软链接(又称符号链接,即 soft link 或 symbolic link)。 链接为 Linux 系统解决了文件的共享使用,还带来了隐藏文件路径、增加权限安全及节省存储等好处。 通过文件名打开文件 若一个 inode 号对应多个文件名,则称这些文件为硬链接。换言之,硬链接就是同一个文件使用了多个别名(见 图 2.h

Linux - 通过软硬链接学习inode-爱代码爱编程

​ 说到软硬链接,首先要了解inode是什么,了解了inode的结构,会有助于区分软硬链接 inode inode 内容 在Linux系统中,每个文件都有对应的inode,而inode作为数据索引的标识符,其中包含了一个文件的基本信息,如inode编号,修改时间,文件的位置等。所以linux中不使用文件名,而是使用inode号来识别文件。 通常打开

文件系统~inode~软硬链接详解-爱代码爱编程

inode是什么 inode内容 inode大小 软硬链接1.inode是什么?   文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。   操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块

linux硬链接指向inode,linux中的软链接、硬链接和inode(索引节点)-爱代码爱编程

linux系统有两种链接: 一种被称为硬链接(Hard Link),相当于一个人有多个名字。 另一种被称为符号链接(Symbolic Link)符合链接也称为软链接,相当于windows系统中的快捷方式(LNK)。 创建硬链接的方法 ln file1 file2 image.png *硬链接次数由原来1变成变成2 符合链接的创建方法

Linux设置软连接与硬连接,Linux 硬链接、软链接和iNode-爱代码爱编程

8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 硬链接与软链接 文档都有文档名与数据,这在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。用户数据,即文档数据块 (data block),数据块是记录文档真实内容的地方;而元数据则是文档的附加属性,如文档大小、创

Linux inode 软硬链接 stat系统调用-爱代码爱编程

对《Unix/Linux系统编程》中关于inode文件索引节点,软硬链接,stat系统调用进行了总结 其中关于inode部分内容转载自网络链接参考资料 1. 系统调用 在Linux操作系统中,进程以两种模式运行:内核模式和用户模式。在用户模式中进程的权限非常有限,不能执行任何需要特殊权限的操作,而这些需要特殊权限的操作只能在内核模式中执行。系统调用使得

了解inode,软链接和硬链接-爱代码爱编程

目录 一.inode 1.1 什么是inode 1.2 简单了解文件系统 1.2.1 硬盘硬件结构 1.2.2 简单了解文件系统  1.2.3 目录文件 2. 总结 二.硬链接 三.软链接 一.inode 1.1 什么是inode         文件包含属性和数据。inode是文件一个文件的属性集合,它和文件的关系是1对1的关

Linux学习之inode和软链接、硬链接-爱代码爱编程

文章目录 1.inode学习2.硬链接和软链接3.硬链接和软链接的创建语法3.1.创建硬链接3.2.创建软链接3.2.1.目标使用绝对路径3.2.2.目标使用相对路径 1.inode学习 参考: 理解inode 这个博客里面也包含了对下面的软链接和硬链接的讲解,但是下面软链接和硬链接的博客里的图很好,更加形象。 2.硬链接和软链接 参考:

软链接和硬链接区别(附inode)-爱代码爱编程

一.建立 软链接:ln -s oldfile(源文件) newfile(新文件) 硬链接:ln oldfile(源文件) newfile(新文件)       或     link oldfile(源文件) newfile(目标文件) 你要对源文件建立链接 二.理解 1.软链接理解成Windows的快捷方式,可通过快捷方式进入文件  

文件系统2:软链接、硬链接与inode-爱代码爱编程

在之前的文章中已经介绍了磁盘、文件系统与inode的关系,没看过的同学可以先看一下这篇文章。 什么是文件系统?什么是文件系统?我们都知道,数据是存储在硬盘、u盘等存储设备中的,数据在这些物理设备中的最终形态,都是0和1。而我们平时在windows或linux操作系统中,都是以文件夹、目录的形式存放各种文件的。https://mp.weixin.q