当前位置: 首页 > news >正文

Linux-inode和block概述

操作系统的文件数据除了实际内容之外,通常含有非常多的属性,例如Linux操作系统的文件权限与文件属性。文件系统通常会将这两部分内容分别存放在inodeblock中。

inode 和 block 概述

文件是存储在硬盘上的,硬盘的最小存储单位叫做扇区sector,每个扇区存储512字节。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个块block。这种由多个扇区组成的块,是文件存取的最小单位。块的大小,最常见的是4KB,即连续八个sector组成一个block

文件数据存储在块中,那么还必须找到一个地方存储文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种存储文件元信息的区域就叫做inode,中文译名为索引节点,也叫i节点。因此,一个文件必须占用一个inode,但至少占用一个block

  • 元信息 → inode
  • 数据 → block

inode 内容

inode包含很多的文件元信息,但不包含文件名,例如:字节数、属主UserID、属组GroupID、读写执行权限、时间戳等。

而文件名存放在目录当中,但Linux系统内部不使用文件名,而是使用inode号码识别文件。对于系统来说文件名只是inode号码便于识别的别称。

  • 查看inode信息

stat 文件名

ls -i        //直接查看文件的inode信息

  • 查看文件类型

file 文件名

inode号码

表面上,用户通过文件名打开文件,实际上,系统内部将这个过程分为三步:

1.系统找到这个文件名对应的inode号码;
2.通过inode号码,获取inode信息;
3.根据inode信息,找到文件数据所在的block,并读出数据。

其实系统还要根据inode信息,看用户是否具有访问的权限,有就指向对应的数据block,没有就返回权限拒绝。

硬链接与软链接

硬链接

通过文件系统的inode链接来产生的新的文件名,而不是产生新的文件,称为硬链接。

一般情况下,每个inode号码对应一个文件名,但是Linux允许多个文件名指向同一个inode号码。意味着可以使用不同的文件名访问相同的内容。

ln 源文件 目标

运行该命令以后,源文件与目标文件的inode号码相同,都指向同一个inodeinode信息中的链接数这时就会增加1

当一个文件拥有多个硬链接时,对文件内容修改,会影响到所有文件名;但是删除一个文件名,不影响另一个文件名的访问。删除一个文件名,只会使得inode中的链接数减1

需要注意的是不能对目录做硬链接。        

通过mkdir命令创建一个新目录,其硬链接数应该有2个,因为常见的目录本身为1个硬链接,而目录下面的隐藏目录.(点号)是该目录的又一个硬链接,也算是1个连接数。

软链接

类似于Windows的快捷方式功能的文件,可以快速连接到目标文件或目录,称为软链接。

ln -s 源文件或目录 目标文件或目录

软链接就是再创建一个独立的文件,而这个文件会让数据的读取指向它连接的那个文件的文件名。例如,文件A和文件Binode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。这时,文件A就称为文件B的软链接soft link或者符号链接symbolic link

这意味着,文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报错。这是软链接与硬链接最大的不同:文件A指向文件B的文件名,而不是文件Binode号码,文件Binode链接数不会因此发生变化。

http://www.lryc.cn/news/70314.html

相关文章:

  • 安卓开发投屏反控实现方式
  • 外网SSH远程连接linux服务器「cpolar内网穿透」
  • Deferred Components-实现Flutter运行时动态下发Dart代码 | 京东云技术团队
  • 08 集合框架1
  • 内卷把同事逼成了“扫地僧”,把Git上所有面试题整理成足足24W字测试八股文
  • 10-jQuery-遍历children、parent、for、each、for...of等
  • 联想集团财报:收入持续下滑,联想集团财务前景已恶化
  • GPT4限制被破解!ChatGPT实现超长文本处理的新方法
  • 奋斗,然后成功:我的架构狮之梦
  • 自定义属性,v-bind computed的使用
  • 解决城市内涝的措施有哪些?需要用到哪些监测设备?
  • Spark大数据处理讲课笔记----Spark任务调度
  • 【22-23春】AI作业10-经典卷积网络
  • 第13章_约束
  • GPC规范--安全域基础概念
  • C++初阶--C++入门之基础学习
  • 服务器虚拟化部署
  • 实验篇(7.2) 01. 实验环境介绍 远程访问 ❀ Fortinet网络安全专家 NSE4
  • ThinkPHP6 模型层的模型属性,表映射关系,以及如何在控制层中使用模型层和模型层中的简单CRUD
  • CodeForces.1806A .平面移动.[简单][判断可达范围][找步数规律]
  • Linux系统编程学习 NO.4 ——基础指令学习、操作系统时间的概念、文件压缩包的概念
  • leecode 数据库:601. 体育馆的人流量
  • gym不渲染画面的解决方案(gym版本号0.26.2)
  • 如何在 Fedora 37 上安装 FileZilla?
  • 网终安全技术(刘化君)课后被略的答案
  • 架构思想之DDD
  • FinClip | 2023 年 4 月产品大事记
  • 试论什么是圣人境界
  • 在外远程登录局域网下的象过河ERP管理系统,无需公网IP
  • golang 服务中 context 超时处理的思考