首页 运维 linux运维 Linux中inode用法教程

Linux中inode用法教程

Aug 09, 2017 pm 03:10 PM
inode linux 教程

这篇文章主要给大家介绍了在Linux中关于inode的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。

背景

最近在复习Linux命令,到df的时候发现了一个之前忽略的东西。也就是 -i 这个选项,列出文件系统分区的inode信息。这个inode,是个什么东西?

inode是用来做什么的

inode是用来存储文件元信息的区域。中文译名叫做“索引节点”。

关于inode的背景知识

我们先复习下文件存储的一些内容。我们知道,文件存储在硬盘上,硬盘的最小存储单元呢,又被称为扇区,扇区的大小是512字节。

操作系统在硬盘上读取信息时,是按照一次性读取多个扇区的方式来的,而这多个扇区也叫块。通常,块的大小是4KB,大概有8个扇区的大小。需要注意的是,读取的块是连续的空间。

这个时候我们能知道,文件是存储在“块”中的,就像我们写C语言程序的时候,我们知道,当我们声明一个数组的时候,不仅仅会存储放在数组里面的值,还会存储对应的数组信息,比如数组的首地址、文件类型和数组长度等等,同样的,需要找一个地方存储文件的元信息,类似于文件的创建相关的信息、文件的长度等等。而这个地方,我们称做inode。

inode中存储的内容

inode包含着所存储文件的元信息,包含着这些内容:

  • 文件的字节数。

  • 文件创建者的ID。

  • 文件的Group ID。

  • 文件的读写等权限。

  • 文件的相关时间戳。具体的有三个:ctime-->inode上一次变动的时间;mtime-->文件内容上一次变动的时间;atime-->文件上一次打开的时间。

  • 链接数

  • 文件数据的块位置

inode号码

第一次看到上面的存储内容后,我想大家多少会有相同的疑问,既然inode是存储文件相关信息的,为什么不存储文件名呢。理由就是,文件名并不是Unix/Linux操作系统识别不同文件的标准。

操作系统是通过inode号码来识别不同文件的。

在Unix/Linux系统中,用户层名是通过文件名来打开文件的,系统层面主要是通过了三个步骤来打开文件:

  • 根据文件名找到对应的inode号码。

  • 通过inode号码获取inode信息。

  • 根据inode信息,找到文件数据所存的块,并独处数据。

inode的特殊作用

Unix/Linux系统中inode号码和文件名分离,这导致了系统中一些特别的现象:

  • 删除inode节点,即是删除文件。有些文件可能无法正确删除,这时我们直接删掉对应的inode节点,就可以起到删除文件的作用。

  • 移动文件或者重命名文件,不改变inode号码,仅仅只是改变文件名。

  • 通常来说,系统是无法通过inode号码得到文件名的,当打开一个文件,系统往后就通过inode来识别该文件,不再考虑文件名。

因为inode号码的存在,系统可以在软件不关闭的情况下进行更新。系统通过inode号码,识别运行中的文件,更新过程中,文件以相同的文件名,新的inode存在,而不会影响到目前运行中的文件。而原先旧版的inode会在软件下一次打开时被回收,文件名会自动指向新的inode号码。

inode空间占用问题

既然同样是存储在硬盘里的数据,inode必然也是会占用硬盘空间的,当格式化硬盘的时候,操作系统会自动将硬盘分成两个区域:

  • 数据区

  • inode table

数据区主要存放文件数据,inode table区域则是存放inode信息。

特别的是,inode所占用的区域大小,在磁盘格式化时操作系统就已经给定。这样做导致的后果就是,数据区的空间明明还没有使用完,但是却无法继续存取数据了,这时因为inode table区域已经用满了,所以无法再往磁盘里存储新的文件。

目录文件

我们知道,在Unix/Linux中,任何资源都是以文件的形式存在的。目录也是。我们打开目录,实际上就是打开目录文件。目录文件的结构就是一个列表。

目录项 = 所包含文件文件名 + 对应inode号码。

硬链接和软链接

关于具体什么是硬链接什么是软链接,我就不在这篇博文里赘述了,仅从inode角度去考虑。

从inode号码的角度考虑,Unix/Linux系统中,是允许多个文件名指向同一个inode号码的。这个时候,如果删除掉其中一个文件名,不影响另一个文件名的访问,同时,如果通过一个文件名打开文件并作出修改,其他文件名打开时可以共享到该修改。那么就称这种为“硬链接”。在Linux中,我们可以通过ln命令来创建硬链接。

上面总结到,在inode中,有一个存储项叫做“链接数”,记录只想该inode的文件名总数。如果通过硬链接方式创建一个文件名指向某文件,那该文件对应的inode数据域中链接数部分就会 + 1,反之 - 1 。当这个值为0时,系统就会默认没有文件名指向该inode,此时,就会回收该inode号码,并且回收对应的块区域。

而对应的软链接,假设有文件A和文件B,B是A的软链接。这个时候,A和B的inode号码是不同的,因为它们是不同的文件,但是!B的内容是A的路径,读取B的时候,系统会自动访问A,所以无论打开哪个文件,访问的都是文件A。这个时候,文件B就被称为文件A的“软链接”或者“符号链接”。

在Unix/Linux系统中,我们可以通过ln -s 命令来创建软链接。

总结和小补充

通过上面的叙述,我们知道inode就像C语言中的指针域,指针域记录着多种信息,并把我们导向正确的文件位置,读取需要的信息。(当然也不是完全像。)

Unix/Linux系统中创建目录时,会自动生成两个目录项:

  • .目录

  • ..目录

可以通过 ls -al 命令观察到这两个目录。“.目录“的inode号码是当前目录的inode号码,等同于当前目录的硬链接,而“..“目录的inode号码是当前目录父目录的inode号码,等同于父目录的硬链接。目录硬链接总数 = 2 + 子目录总数(包括隐藏文件)。

以上是Linux中inode用法教程的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

deepseek网页版入口 deepseek官网入口 deepseek网页版入口 deepseek官网入口 Feb 19, 2025 pm 04:54 PM

DeepSeek 是一款强大的智能搜索与分析工具,提供网页版和官网两种访问方式。网页版便捷高效,免安装即可使用;官网则提供全面产品信息、下载资源和支持服务。无论个人还是企业用户,都可以通过 DeepSeek 轻松获取和分析海量数据,提升工作效率、辅助决策和促进创新。

deepseek怎么安装 deepseek怎么安装 Feb 19, 2025 pm 05:48 PM

DeepSeek的安装方法有多种,包括:从源码编译(适用于经验丰富的开发者)使用预编译包(适用于Windows用户)使用Docker容器(最便捷,无需担心兼容性)无论选择哪种方法,请仔细阅读官方文档并充分准备,避免不必要的麻烦。

BITGet官方网站安装(2025新手指南) BITGet官方网站安装(2025新手指南) Feb 21, 2025 pm 08:42 PM

BITGet 是一款加密货币交易所,提供各种交易服务,包括现货交易、合约交易和衍生品。该交易所成立于 2018 年,总部位于新加坡,致力于为用户提供安全可靠的交易平台。BITGet 提供多种交易对,包括 BTC/USDT、ETH/USDT 和 XRP/USDT。此外,该交易所还在安全性和流动性方面享有盛誉,并提供多种功能,如高级订单类型、杠杆交易和 24/7 全天候客户支持。

欧易okx安装包直接进 欧易okx安装包直接进 Feb 21, 2025 pm 08:00 PM

欧易 OKX,全球领先的数字资产交易所,现推出官方安装包,提供安全便捷的交易体验。欧易 OKX 安装包无需通过浏览器访问,可直接在设备上安装独立应用程序,为用户打造稳定高效的交易平台。安装过程简便易懂,用户只需下载最新版本安装包,按照提示一步步操作即可完成安装。

gate.io安装包免费拿 gate.io安装包免费拿 Feb 21, 2025 pm 08:21 PM

Gate.io是一款受欢迎的加密货币交易所,用户可通过下载其安装包并安装在设备上使用。获取安装包步骤如下:访问Gate.io官方网站,点击“下载”,选择对应操作系统(Windows、Mac或Linux),将安装包下载至计算机。安装过程中建议暂时禁用杀毒软件或防火墙,确保安装顺利。完成后,用户需创建Gate.io账户以开始使用。

欧易交易所下载官方入口 欧易交易所下载官方入口 Feb 21, 2025 pm 07:51 PM

欧易,又称OKX,是一个全球领先的加密货币交易平台。文章提供了欧易官方安装包的下载入口,方便用户在不同设备上安装欧易客户端。该安装包支持 Windows、Mac、Android 和 iOS 系统,用户可根据自己的设备类型选择相应版本下载。安装完成后,用户即可注册或登录欧易账户,开始交易加密货币和享受平台提供的其他服务。

gate.io官网注册安装包链接 gate.io官网注册安装包链接 Feb 21, 2025 pm 08:15 PM

Gate.io 是一款备受赞誉的加密货币交易平台,以其广泛的代币选择、低廉的交易费用和用户友好的界面而闻名。凭借其先进的安全功能和优秀的客户服务,Gate.io 为交易者提供一个可靠且便利的加密货币交易环境。想要加入 Gate.io 的行列,欢迎点击提供的链接下载官方注册安装包,开启您的加密货币交易之旅。

火币怎么转币到币安?如何把HTX里面的加密资产提到币安平台? 火币怎么转币到币安?如何把HTX里面的加密资产提到币安平台? Mar 03, 2025 pm 08:51 PM

火币到币安转账指南:安全便捷地转移您的加密资产许多投资者同时使用火币和币安这两个知名的加密货币交易平台。本文将指导您如何安全地将火币(HTX)上的加密资产,例如TRUMP和USDT,转移到币安(Binance)平台。币安以其高安全性、丰富的币种和交易对以及全球领先的交易量而备受青睐。币安交易所的优势:全球第一的交易量,占据全球市场50%;储备资产透明,主要为比特币、以太坊和USDT等主流稳定币;已有效规避美国SEC的潜在风险,是目前最稳定可靠的交易所之一。本教程将以TRUMP和USDT为例,演

See all articles