目录

inode编码

磁盘

扇区

目录下的data block

inode 和 文件名的关系

软硬链接

硬链接

软连接


inode编码

一个文件,对应一个inode属性节点,inode编号,linux在磁盘上存储文件的时候,将内容和属性分开存储

ls -i可以查看文件的inode编号

磁盘

要了解inode编码,我们可以从磁盘下手,linux下df -h可以查看磁盘状态

磁盘由磁盘盘片,磁头、、、等一些设备组成,我们向磁盘磁盘写入数据,本质是改变磁盘上的正负性

为了我们能够很好的使用磁盘,我们会对磁盘进行分区,将磁盘一步步的细分,盘片-盘面-磁盘-扇区,我们对磁盘的管理本质上是对一个个小的扇区进行管理

 扇区

 boot block:启动块,用于扇区是否正常的

super block:文件系统的属性信息

group descreptor table:块组描述符,块组多大,已经使用了多少,有多少个inode,占用多少,剩多少,有多少block

block bitmap:假设有10000+个blocks,10000+个bit位,比特位和特定的block是一一对应的,其中bit位为1,代表该block被占用,否则标识可用

inode bitmap:假设有10000+个blocks,10000+个bit位,比特位和特定的inode是一一对应的,其中bitmap中比特位为1,代表该inode被占用,否则表示可用

inode table:inode是一个大小为128字节的空间,保存的是对应文件的属性,该块组内,所有文件的inode空间的集合,需要标识唯一性,每一个inode块,都要有一个inode编号!一般而言一个文件,一个inode,一个inode编号

data blocks:多个4kb(扇区*8)大小的集合,保存的都是特定文件的内容

(linux在存盘上存储文件的时候,内容和属性是分开存储的)

虽然磁盘的基本单位是扇区(512字节),但是操作系统(文件系统)进行IO操作的时候是4kb

,因为多次IO影响效率,操作系统还需要解耦合,来适应不同扇区大小的磁盘

假如文件很大,我们的data block会存储其他data bloc的编号,从而找到另一个文件

目录下的data block

我们发现我们目录默认拥有读写操作,为什么呢?

在linux下,我们的目录也是一个文件,所以目录也拥有data block数据块,那么它的数据块存放的是什么呢?存的就是目录里面存放的文件的inode和文件名,让他们相互产生映射关系(操作系统是不认识文件名的,只认识inode编号)

inode 和 文件名的关系

找到文件:inode编号 -> 分区特定的bg -> inode -> 属性 -> 内容

1、一个目录下,没有重复的文件名

2、目录是文件,有自己的inode,有自己的data block,存放的是文件名和inode编号的映射关系,互为key值

目录创建文件要w权限,应该我们创建文件,要在data block中存放文件名和inode

显示文件名和属性需要r属性,应该我们需要从data block中读取属性

软硬链接

硬链接

我们可以用ln命令来创建软硬链接

ln 想要建立链接的文件 生成的链接文件(ln默认是硬链接)

首先我们创建一个可执行程序test,并启动它,打印出hello world

然后我们建立一个硬链接,生成一个out的硬链接文件

使用ls -li查看文件的信息,第一列的编号为inode编号,红色部分是硬链接数,由于我们创建了一个硬链接,所以硬连接数变成了2,而他们的inode编号一样,说明他们属于同一个文件

假如我们删除test文件,out文件还可以运行,inode编号也没有发生变化,硬链接数降为1,说明硬链接相当于给文件取别名,不会影响文件,只有当硬链接数降为0文件才会真正删除

软连接

ln -s 想要建立链接的文件 生成的链接文件(-s是建立软连接)

我们通过ln -s test out在当前路径创建一个软连接,通过ls -li发现软连接的inode编号不和链接文件相同

当我们使用out文件的时候,可以使用,但是当我们删除test建立链接的文件后再使用out文件,就会失败

软连接在创建快捷方式中经常被使用

linux中的inode文件编号和软硬链接相关推荐

  1. Linux中的 inode以及 软硬链接分析

    一. inode 是什么?(索引节点)理解inode 需要知道文件存储,文件是存储在硬盘上的,操作系统读取硬盘的时候会连续读取多个扇区(硬盘的最小存储单元),即一次性读取一个块(文件存取的最小单位). ...

  2. 【Linux】文件系统的inode是什么?软硬链接是什么?了解意义

    当我们在 LIiux 中输入 ll-i 指令时,会显示文件信息: 权限.拥有者.所属组等这些我都知道,但是最前面的比如 1051810 是什么,还有权限后面的3和6是什么呢?本章我们就来讲解一下 in ...

  3. 如何恢复Linux中的误删文件

    写在前面的话 在开始教程之前我有必要提醒大家,使用窗口管理器(GUI)删除文件和使用命令行工具(CLI)删除文件这两种方法之间是有区别的. 当我们使用窗口管理器来删除文件时,我们仅仅只是将文件从某个目 ...

  4. 误删了php文件怎么恢复,linux中误删了文件怎么恢复

    linux中误删了文件怎么恢复 作为一个多用户.多任务的操作系统,Linux下的文件一旦被删除,是难以恢复的.尽管删除命令只是在文件节点中作删除标记,并不真正清除文件内容,但是其他用户和一些有写盘动作 ...

  5. 怎样找回Linux中丢失的文件,如何恢复Linux中的误删文件

    原标题:如何恢复Linux中的误删文件 写在前面的话 在开始教程之前我有必要提醒大家,使用窗口管理器(GUI)删除文件和使用命令行工具(CLI)删除文件这两种方法之间是有区别的. 当我们使用窗口管理器 ...

  6. linux中文件重命名_如何在Linux中重命名文件?

    linux中文件重命名 This tutorial will walk you through the simple steps to rename a file in Linux. 本教程将引导您完 ...

  7. 如何快速清空 Linux 中的大文件

    本文总结了几种快速清空Linux中的大文件方法,快来看看对你有帮助吗? 1. 通过重定向到null清空文件内容 使用 shell 重定向null(不存在的对象)到文件的最简单方法来清空文件内容 # & ...

  8. Linux中常用头文件的作用--转

    http://blog.sina.com.cn/s/blog_5c93b2ab0100q62k.html 1. Linux中一些头文件的作用: <assert.h>:ANSI C.提供断言 ...

  9. Linux中查看日志文件的正确姿势,求你别tail走天下了!

    作为一个后端开发工程师,在Linux中查看查看文件内容是基本操作了.尤其是通常要分析日志文件排查问题,那么我们应该如何正确打开日志文件呢?对于我这种小菜鸡来说,第一反应就是 cat,tail,vi(或 ...

最新文章

  1. 在IDE中刷LeetCode,编码调试一体化,刷题效率直线up!
  2. 技术18期:数据安全之加密与实现
  3. python 字典中的value 不在字典中,key才在
  4. wifi linux 驱动分析,Linux 下wifi 驱动开发(二)—— WiFi模块浅析
  5. c 调用java包_C#调用java代码(IKVMC)
  6. springboot启动图标_SpringBoot基础教程
  7. CentOS系统启动过程1-10 详细叙述
  8. myfiles_WINDOWSXP-KB936929-SP3-X86-CHS.zip
  9. Linux中jemalloc的安装与使用
  10. 计算机日志查询域用户登录记录,Windows域控制器身份验证登录日志记录和取证...
  11. 联想小新电脑摄像头黑屏、检测不到设备、指示灯不亮解决方案
  12. C# 生成订单编号和取餐码
  13. 软件工程期末试题及答案
  14. 阿里云:从“亚洲巨象”到“全球航母”
  15. __attribute__((__aligned__(n)))对结构体对齐的影响
  16. pikachu~~~验证码绕过(on client on server)
  17. 【TS】1307- TypeScript 你还只会用 any?
  18. Go --- 使用各服务商的短信服务,实现短信验证等需求
  19. 关于UCOS任务卡死的原因分析
  20. android-设置屏幕壁纸

热门文章

  1. el-from中的el-input去除边框和阴影
  2. 卅年史诗!地球上出现过的CPU完全收藏 - (30) 回顾过去为的是成就未来 国货CPU也很有希望 【完】
  3. Unix Sed Tutorial 5: How To Execute Multiple Sed Commands
  4. 2020四川机械工业50强企业榜单公布
  5. 血液透析滤过原理的系统性论述
  6. 通用的网页底部导航div布局代码
  7. 电商开发的各种坑,步步惊心!
  8. 支付宝沙箱环境——问题使用教程
  9. Conmi的正确答案——docker-compose的“Ports are not available”解决方案(20220315093448)
  10. 异地服务器文件及数据库定时备份