一天一点学习Linux之Inode详解

【Linux】inode信息详解 inode介绍要理解inode,就先要理解文件的存储方式。我们都知道,文件是存储在硬盘上的。硬盘的最小单位是扇区,每个扇区的大小为512字节。 如果系统在读取硬盘数据的时候按扇区一个一个来读取,那效率就太低了,而是一次连续性读取多个扇区,所以设计者又将多个扇区整合成一个块(block),所以,块就是文件存取的最小单位。一个块的大小为4k。 我们现在已经有了块的概念,文件数据就是存放在块中。但光有 阅读详情
 

首先了解一下文件系统如何存取文件的

1、根据文件名,通过Directory里的对应关系,找到文件对应的Inode number
2、再根据Inode number读取到文件的Inode table
3、再根据Inode table中的Pointer读取到相应的Blocks

这里有一个重要的内容,就是Directory,他不是我们通常说的目录,而是一个列表,记录了一个文件/目录名称对应的Inode number。

 

Directory:
A directory is a mapping between the human name for the file and the computer's inode number.
所以说,这个Directory不是文件,我们可以看作是文件系统中的一个属性,只是用来关键文件名与Inode number。这个一定要理解好,否则后面关于硬链接的内容,就不容易理解了。

我在一天一点学习Linux之文件与目录权限的基本概念中讲到
第二栏表示的是有多少文件连接到inode
如果是一个文件,此时这一字段表示这个文件所具有的硬链接数,
如果是一个目录,则此字段表示该目录所含子目录的个数。

现在是不是容易理解了?如果你还不是很明白,那么下面我们就再通过实例让大家明白。

我们以RHEL6系统为例

在根目录下创建一个test目录,我们进入此目录,进行操作。
[root@yufei test]# pwd
/test
[root@yufei test]# touch testfile
[root@yufei test]# mkdir testdir
创建实验文件和目录
[root@yufei test]# ls -li
total 4
977 drwxr-xr-x. 2 root root 4096 Apr  5 16:48 testdir
976 -rw-r--r--. 1 root root    0 Apr  5 16:47 testfile
查看到文件与目录的Inode和inode count分别为
977 <-----> 2 <-----> testdir
976 <-----> 1 <-----> testfile

现在目录的链接数为2,文件的链接数为1。为什么会这样呢?其实很好理解。对于目录而言,每个目录里面肯定会有两个特殊目录,那就是.和..这两个目录,我们前面的课程中也讲到,.表示当前的目录,而..则是表示上层目录。我们也知道,在Linux系统中,是从根来开始查找的,要想找到某个目录,必需要先找到他的上层目录,所以说,空目录(严格的来说,不能叫空目录)是有两个链接到相应的Inode number的。作为文件很明显,他只有一个链接到相应的Inode number。也不用多说,

下面我们就来看看这个链接数是如何改变的。
继续上面的操作
[root@yufei test]# ln testfile testfile.hard
[root@yufei test]# ln -s testfile testfile.soft
对testfile建立一个硬链接和一个软链接
[root@yufei test]# ls -il
total 4
977 drwxr-xr-x. 2 root root 4096 Apr  5 16:48 testdir
976 -rw-r--r--. 2 root root    0 Apr  5 16:47 testfile
976 -rw-r--r--. 2 root root    0 Apr  5 16:47 testfile.hard
978 lrwxrwxrwx. 1 root root    8 Apr  5 17:03 testfile.soft -> testfile

再查看文件和目录的属性,我们就发现:创建一个硬链接后,testfile的inode count增加了一个。而且testfile和testfile.hard这两个的Inode number是一样的。这个硬链接就是重新创建了一个文件名对应到原文件的Inode。实质就是在Directory中增加了一个新的对应关系。通过这个例子,你是不是更清楚了,这个Inode count的含义了。他就是指,一个Inode对应了多少个文件名。

下面我们再来看看硬链接的其他特点

[root@yufei ~]# watch -n 1 "df -i;df"
Every 1.0s: df -i;df                            Tue Apr  5 21:52:53 2011

Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda1             960992  105415  855577   11% /
tmpfs                  63946       1   63945    1% /dev/shm
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             15118728   2747612  11603116  20% /
tmpfs                   255784         0    255784   0% /dev/shm
用上面的命令可以实时查看系统中所剩的block和inode的变化数量。
建议大家不要用deumpe2fs和tune2fs这两个命令,如果使用他们来查看的话,将会很郁闷——你会发现,你无论怎么创建文件或对文件写入内容,Inode和block的值都不会变,除非你每操作一次,重新启动一次系统,而用了上面的命令,就是第秒钟监视他们的变化情况。关于df的命令使用,大家可以自行查看帮助进行学习。当然还有du这个命令,他们都和文件系统有关。

我们再来创建一个硬链接
[root@yufei test]# ls -li
total 4
977 drwxr-xr-x. 2 root root 4096 Apr  5 16:48 testdir
976 -rw-r--r--. 2 root root    0 Apr  5 16:47 testfile
976 -rw-r--r--. 2 root root    0 Apr  5 16:47 testfile.hard
978 lrwxrwxrwx. 1 root root    8 Apr  5 17:03 testfile.soft -> testfile
[root@yufei test]# ln testfile testfile.hard1
[root@yufei test]# ls -li
total 4
977 drwxr-xr-x. 2 root root 4096 Apr  5 16:48 testdir
976 -rw-r--r--. 3 root root    0 Apr  5 16:47 testfile
976 -rw-r--r--. 3 root root    0 Apr  5 16:47 testfile.hard
976 -rw-r--r--. 3 root root    0 Apr  5 16:47 testfile.hard1
978 lrwxrwxrwx. 1 root root    8 Apr  5 17:03 testfile.soft -> testfile

可以再观察一下Inode count和Inode number的对应关系。
下面再看看inodes和blocks的变化
[root@yufei ~]# watch -n 1 "df -i;df"
Every 1.0s: df -i;df                            Tue Apr  5 21:53:38 2011

Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda1             960992  105415  855577   11% /
tmpfs                  63946       1   63945    1% /dev/shm
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             15118728   2747612  11603116  20% /
tmpfs                   255784         0    255784   0% /dev/shm
我们发现,inodes和blocks是没有减少的,所以说,硬链接是不会占用磁盘的空间的。
如果说删除硬链接的话,就会改变Inode count的数量。硬链接还有其他的两个特性:不能跨Filesystem也不能link目录。

下面再来看看这个软链接

[root@yufei test]# ls -il testfile.soft testfile
976 -rw-r--r--. 3 root root 0 Apr  5 21:50 testfile
978 lrwxrwxrwx. 1 root root 8 Apr  5 21:52 testfile.soft -> testfile

他的Inode number和原文件不一样。而且大小也发生了变化。可见,这个软链接是重新建立了一个文件,而文件是指向到原文件,而不是指向原Inode。当然他会占用掉 inode 与 block。当我们删除了源文件后,链接文件不能独立存在,虽然仍保留文件名,但我们却不能查看软链接文件的内容了。但软链接是可以跨文件系统,而且是可以链接目录。他就相当于windows系统下的快捷方式一样。通过这个特性,我们可以通过软链接解决某个分区inode conut不足的问题(软链接到另一个inode count足够多的分区)。

接下来,我们再来分析一下复制文件、移动文件和删除文件对inode的影响

[root@yufei ~]# watch -n 1 "df -i;df"
Every 1.0s: df -i;df                            Tue Apr  5 21:57:38 2011

Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda1             960992  105415  855577   11% /
tmpfs                  63946       1   63945    1% /dev/shm
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             15118728   2747612  11603116  20% /
tmpfs                   255784         0    255784   0% /dev/shm

[root@yufei test]# ls -li
total 4
977 drwxr-xr-x. 2 root root 4096 Apr  5 16:48 testdir
976 -rw-r--r--. 3 root root    0 Apr  5 18:54 testfile
976 -rw-r--r--. 3 root root    0 Apr  5 18:54 testfile.hard
976 -rw-r--r--. 3 root root    0 Apr  5 18:54 testfile.hard1
978 lrwxrwxrwx. 1 root root    8 Apr  5 17:03 testfile.soft -> testfile
我们先记录以上的信息

先看复制文件的情况
[root@yufei test]# cp testfile testfile.cp
[root@yufei test]# ls -li
976 -rw-r--r--. 3 root root    0 Apr  5 21:50 testfile
979 -rw-r--r--. 1 root root    0 Apr  5 21:58 testfile.cp

我们只对比这两个文件,发现Inode number不一样,我们再来看看inodes和blocks的剩余情况
Every 1.0s: df -i;df                            Tue Apr  5 22:02:49 2011

Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda1             960992  105416  855576   11% /
tmpfs                  63946       1   63945    1% /dev/shm
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             15118728   2747620  11603108  20% /
tmpfs                   255784         0    255784   0% /dev/shm
发现inodes减少了一个,而blocks也少了,这就说明,复制文件是创建文件,并占Inode和Block的。
文件创建过程是:先查找一个空的Inode,写入新的Inode table,创建Directory,对应文件名,向block中写入文件内容

关于移动文件和删除文件的实验,大家可以自己动手来实践吧。我直接给出相应的说明。
移动文件,他分两种情况:
在同一个文件系统中移动文件时
创建一个新的文件名和Inode的对应关系(也就是在Directory中写入信息),然后在Directory中删除旧的信息,更新CTIME,其他的信息如Inode等等均无任何影响

在不同文件系统移动文件时
先查找一个空的Inode,写入新的Inode table,创建Directory中的对应关系,向block中写入文件内容,同时还会更改CTIME。

删除文件
他实质上就是减少link count,当link count为0时,就表示这个Inode可以使用,并把Block标记为可以写,但并没有清除Block里面数据,除非是有新的数据需要用到这个block。

最后我们来做个总结:

1、一个Inode对应一个文件,而一个文件根据其大小,会占用多块blocks。
2、更为准确的来说,一个文件只对应一个Inode。因为硬链接其实不是创建新文件,只是在Directory中写入了新的对应关系而已。
3、当我们删除文件的时候,只是把Inode标记为可用,文件在block中的内容是没有被清除的,只有在有新的文件需要占用block的时候,才会被覆盖。

 

本文转载至http://www.cnblogs.com/hnrainll/archive/2011/06/18/2084210.html

 

图解linux中Inode-分析Linux如何通过Inode读取磁盘 1、什么是inode? 首先要明白,linux中所有的东西都是文件,不管是目录还是命令 操作系统读硬盘的时候,为了提高效率,一次性读取一个block(常见大小4KB),一个block由8个扇区组成,每个扇区0.5K,扇区是硬盘存储数据的最小单位 而Inode就是帮助linux系统快速定位到指定文件而创建的额特殊的文件 阅读详情

相关推荐

ADI官方例程HDL和No-OS生成Vivado工程

这一步是选择下载源,一般都是选择国内镜像,因为国外的源太慢了,这里选择阿里的镜像,如果没有这个选项可以在下面的User URL里添加就行,选择好源后然后点击下一步。下一步会从你选择的源上下载软件包目录,如果提示Unable to get setup from https://xxxxxx/,返回上一步,选择别的源,例如第二个163网易的源。然后就是你想要安装在哪了,下面的选项好像会决定环境变量存放在哪,不过一般都是个人电脑选择第一个默认的就行,然后点下一步。下好之后双击打开,就是这个界面了,直接点下一步。

代码匠的博客 3832

33 新建 inode 的流程的调试

一个文件 会对应于一个 inode, 存储的是文件的 元数据信息创建时间, 更新时间, 访问时间, 读写权限, 等等我们这里 就来看一下 新建 inode 的一些过程。

970655147的专栏 540

洛谷P5707 【深基2.例12】上学迟到(c语言)

第一篇题解 题目描述 yyy 的学校要求早上 8 点前到达。学校到 yyy 的家一共有 s(s\le 10000)s(s≤10000) 米,而 yyy 可以以 v(v<10000)v(v<10000) 米每分钟的速度匀速走到学校。此外在上学路上它还要额外花 10 分钟时间进行垃圾分类。请问为了避免迟到 yyy 最晚什么时候出门?输出 HH:MM 的时间格式,不足两位时补零。由于路途遥远, yyy 可能不得不提前一天出发,不过不可能提前超过一天。 输入格式 两个正整数 s,v,意思已经在题目中给定

cc_love_program的博客 1万+

文件系统之inode

2 inode 2.1 inode主要成员变量 2.2 添加inode到cache 2.3 从cache中删除inode(回收inode cache) 3 dentry 3.1 dentry主要成员变量 3.2 添加dentry到cache 3.3 从cache中删除dentry(回收dentrycache) 4 file 4.1 file主要成员变量 4.2 创建file 4.3 删除file ...

Blue summer的博客 3140

Android车载多屏开发实战:从零搭建同显/异显Demo(附源码)

本文详细介绍了Android车载多屏开发的实战经验,从零搭建同显/异显Demo,涵盖多屏模拟、核心API调用、同显/异显架构实现及性能优化等关键环节。通过C++构建完整开发链路,帮助开发者快速掌握多屏同显和多屏异显技术,提升智能座舱系统的交互体验。附源码供参考。

weixin_29233857的博客 403

Plant Simulation新手入门:5步搞定生产线物流仿真(附模型库使用技巧)

本文为Plant Simulation新手提供了从零开始构建生产线物流仿真的五步入门指南。通过理念重塑、流程规划、对象连接、参数设置到数据分析的完整流程,帮助用户快速掌握这一强大仿真工具的核心逻辑。文章特别强调了模型库的高效使用技巧,助力工程师在虚拟环境中精准模拟和优化生产系统,提升规划效率。

efc123456的博客 333

linux inode详解

操作系统的文件数据除了实际内容之外,通常含有非常多的属性,例如Linux操作系统的文件权限与文件属性。文件系统通常会将这两部分内容分别存放在inode和block中。文件是存储在硬盘上的,硬盘的最小存储单位叫做扇区sector,每个扇区存储512字节。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个块block。这种由多个扇区组成的块,是文件存取的最小单位。块的大小,最常见的是4KB,即连续八个sector组成一个block。

m0_46392035的博客 2262

《AI Agent混沌测试》

在智能体时代,混沌测试正从基础设施的「物理破坏」升级为认知系统的「思维迷宫」,这是一场测试范式的深度进化。将当前时间设为2030年,使"2023年GDP数据"显示为最新。"查看北京\x0d\xa天气" → 解析为两个独立语句。将"高风险投资"权重从0.2改为0.8。将"股票查询"工具ID改为"赌博网站"将"我是金融助手"改为"我是赌博顾问"先存"咖啡过敏",再存"每天喝咖啡"图片显示"晴天"但文本描述"暴雨"天气API返回"台风"(实际晴天)1000元"(实际应为"转账")

fengruxue的专栏 1342

什么叫做 inode ?带你理解 inode 和对于创建文件和删除文件时 inode 都提供了哪些帮助。

什么叫做 inode ?什么是 inode ?通过 inode 理解文件的创建删除等原理。带你理解 inode 和对于创建文件和删除文件时 inode 都提供了哪些帮助。

Liyuyue的博客 1095

Python爬虫实战:抓取天气数据并生成可视化图表(完整可复制代码)

工具/库核心作用选型理由requests发送HTTP请求,获取天气网页内容语法简单,上手快,支持Headers配置(反爬)解析HTML页面,提取目标天气数据无需懂复杂XPath,API直观,快速定位标签pandas数据清洗、整理(如日期/温度格式化)一键处理数据格式,与matplotlib无缝适配matplotlib生成可视化图表(折线图/饼图/柱状图)Python主流可视化库,定制性强,支持保存高清图生成随机User-Agent,应对反爬自动更新UA池,避免手动维护。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 909

TSN新技术,让您的设备网络“更实时、更确定、更安全”

近日,工业和信息化部发布了2022年第23号公告,批准发布行业标准YD/T 4134-2022《工业互联网时间敏感网络需求及场景》。该标准是国内首个时间敏感网络(TSN)技术标准,标志着我国TSN技术标准体系建设迈出了坚实的一步,对构建工业互联网网络标准体系具有重要意义。TSN源于Time-Sensitive Networking的缩写,中文译名为时间敏感网络,因其具备的确定性和微秒级交互特性,受到了对实时性要求较高的工业控制领域的关注。TSN与工业数智化。

创龙,嵌入式一体化解决方案商 771

Linux的inode的理解

文件名 -&gt; inode -&gt; device block  转自:http://www.ruanyifeng.com/blog/2011/12/inode.htmlhttp://blog.s135.com/post/295/ http://hi.baidu.com/leejun_2005/blog/item/d9aa13a53b3af6e99152ee7e.html  一、inode是...

weixin_33725272的博客 1022

【OAG vs RAG】OAG工程实战(下):权限治理与多模型协同

本文摘要(149字): OAG工程体系的核心挑战在于权限治理与多模型协同。文章深入探讨OMA(对象管理权限)系统,实现细粒度访问控制:通过对象级权限管理行级安全,属性级权限控制敏感字段脱敏,确保AI Agent权限不越界。系统采用三层次防护:对象策略控制记录可见性,属性策略处理字段级脱敏,动作策略限制操作范围。权限验证贯穿Agent执行全流程,结合多模型交叉验证机制,构建企业级AI安全防线。这些设计使OAG系统从技术演示升级为生产可用的企业解决方案。

求知若渴、虚心若愚 104

【Linux】 inode 详解

目录 1 inode 和 block 概述 2 inode 内容 2.1 stat 2.2 file 2.3 inode 号码 2.4 inode 大小 2.5 特有现象 2.6 inode 耗尽故障 3 硬链接与软链接 3.1 硬链接 3.2 软链接 1 inode 和 block 概述 文件是存储在硬盘上的,硬盘的最小存储单位叫做扇区sector,每个扇区存储512字节。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即......

康师傅没有眼泪 8250

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

linux   文件inode 详解

以下内容转载自: https://www.cnblogs.com/itech/archive/2012/05/15/2502284.html 文件名 -> inode -> device block    转自: http://www.ruanyifeng.com/blog/2011/12/inode.html http://blog.s135.com/post/

fuming0210sc的专栏 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

linux文件系统中的inode详解

inode in linux file system

weixin_43230594的博客 3424

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

linux索引inode详解

1、inode简介   文件系统是数据在硬盘上的一种排列组织方式,linux每个分区都可以格式化为不同的文件系统,所以可以说每个分区都是一个文件系统,都有自己的目录层次结构。而在目录之下,linux已经将所有的资源处理成为文件,不论是目录还是命令,之后linux会将这些分属不同分区的、单独的文件系统按一定的方式形成一个系统的总的目录层次结构,实现对不同分区的数据进行访问。但是通过目录层次访问

LINUX_Home 8990

Linux inode 详解

索引节点(Index Node)是Linux/类unix系统文件系统上的一种数据结构,用于存储有关文件或目录的元数据。它包含文件的所有信息,除了文件名和数据。inode在文件系统如何存储和检索数据方面起着至关重要的作用。当在Linux系统上创建一个文件时,系统会为它分配一个inode。这个inode包含有关文件的详细信息,如权限、所有者、大小以及文件数据块在磁盘上的位置。

tangPHP的博客 935

【转】Linux inode详解

1.内核中的inode数据结构(LDD3,chapter3-3.3) struct inode { umode_t i_mode;//文件的访问权限(eg:rwxrwxrwx) unsigned short i_opflags; kuid_t i_uid;//inode拥有者id kgid_t i...

liaojunwu的博客 1296

linux 文件inode,详解Linux Inode

一切都是文件,Linux和其他类Unix操作系统通过将所有内容都视为文件(甚至是硬件设备)来保持一致性。 键盘,鼠标,打印机,显示器,硬盘,进程,甚至目录都被视为Linux中的文件。 常规文件包含文本(文本文件),音乐,视频(多媒体文件)等数据。除常规数据外,还有一些关于这些文件的其他数据,例如它们的大小,所有权,权限,时间戳等。 有关文件的元数据使用称为inode(索引节点)的数据结构进行管理。...

weixin_28975553的博客 1943
上一篇: C 语言随机数获取
下一篇: MySQL数据类型简介
MrBugYang
博客等级 码龄18年 21粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值