理解linux inode

理解linux inode

?



?

1. inode的由来和作用

2. inode表中包含什么内容

3. 文件系统如何通过inode读取文件

4. 一个特殊的存在类型:硬链接

5. 目录文件的结构

?



?
1、inode的由来和作用
?
?硬盘创建文件系统时,会把物理磁盘的扇区(512字节)创建为由多个扇区组成的“块”(目前常用的为4KB,即8个扇区)。当操作系统从磁盘读取数据时,磁头从“块”上读取数据。为了快速查找数据,必须在磁盘上专门划分出一个专门的区域存储数据的“索引”,以方便快速查找数据。这种数据区域的“索引”就称为inode(index node)。

图片来自马哥教育马永亮讲课PPT,画的比较抽象,但是就是这个意思,反正我也画不出来好的。
?



?
2、inode表中包含什么内容?

?
?inode的内容包含文件的大小、权限、属主属组、时间戳、数据块指针。可通过linux系统中的stat命令,可以查看文件的inode信息。
?

[[email protected] ~]# stat abc
  File: ‘abc’
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 802h/2050d  Inode: 50350850    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-01-14 13:52:33.155811474 +0800
Modify: 2018-01-14 13:52:14.461811925 +0800
Change: 2018-01-14 13:52:14.461811925 +0800
 Birth: -
[[email protected] ~]#

?

file:文件名
size:文件大小
blocks:文件内容占用块数量
IO Block:文件系统块大小
inode:inode号码
links:文件被硬链接的次数
Access: (0644/-rw-r--r--) :文件属主、属组、其它组的权限
Uid :文件属主的用户ID号
Gid :文件属组的ID号
Access: 2018-01-14 13:52:33.155811474 +0800 :文件访问时间
Modify: 2018-01-14 13:52:14.461811925 +0800 :文件修改时间
Change: 2018-01-14 13:52:14.461811925 +0800 :文件改变时间

?以上信息中,读取文件时,Access时间会更新。对文件进行修改操作时,Modify信息会更改。而修改文件时,势必要打开文件,所以Access信息也会更新。若用输出重定向的方式修改文件,则Access信息不会更新。
?而Change的时间,只要文件元数据发生改变,该时间就会更新。



?

3、文件系统如何通过inode读取文件
?
?

?
?系统读取文件时,通过文件名查找到对应的inode编号,再通过该编号找到inode信息,最后根据inode信息中的数据指针找到对应的块并完成读取文件的操作。
?
?对于各种文件来说,数据指针位置存放的内容不同。
?

  • ?普通文件,数据指针直接指向数据块。
  • ?符号链接文件:存储数据指针的空间当中存储的是真实文件的访问路径。
  • ?设备文件:存储数据指针的空间当中存储的是设备号(major, minor)。




    4、一个特殊的存在类型:硬链接
    ?
    ?一般情况下,文件名和inode是一一对应关系,但硬链接允许不同文件名指向同一磁盘分区下的同一个inode号码。
    ?
    ?这意味着,可以通过不同的路径访问同一文件且不会多占用inode编号。且只要硬链接数不为0,文件会一直存在。删除任意一个文件名,不会对文件造成影响。




    5、目录文件的结构

     对于目录来说,按照linux的哲学思想,目录也是文件。进入目录就是打开目录(需要有x权限才可以进入)。如用ls查看目录

    [[email protected] tmp]# ll -id /tmp
    33574984 drwxrwxrwt. 10 root root 165 Jan 14 20:21 /tmp
    [[email protected] tmp]#

 目录由一系列目录项组成,每条目录项包含文件的文件名以及文件对应的inode号。

?目录创建之后就会在目录下创建两个目录.和..,分别代表当前目录和当前目录的父目录。前者的inode就是当前目录的inode号码,所以对于目录文件来说,硬链接数至少为2。

原文地址:http://blog.51cto.com/11975865/2060860

时间: 2024-11-10 23:46:22

理解linux inode的相关文章

理解Linux文件系统之inode

很少转发别人的文章,但是这篇写的太好了. 理解inode 作者: 阮一峰 inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础. 我觉得,理解inode,不仅有助于提高系统操作水平,还有助于体会Unix设计哲学,即如何把底层的复杂性抽象成一个简单概念,从而大大简化用户接口. 下面就是我的inode学习笔记,尽量保持简单. =================================== 理解inode 作者:阮一峰 一.inode是什么? 理解inode,要从文件储

如何理解linux的inode

看了很多关于inode的资料,理解inode对于理解linux文件系统非常重要,并对于理解软硬链接及文件存储方式很有帮助,我结合了网上的资料及我自己学到的知识,总结了inode的一些基本知识,作为学习的笔记. 文件系统 ??磁盘存储文件一盘是以扇区为单位,每个扇区为512字节,操作系统读取硬盘时不是一个一扇区读取,而是一次读取多个扇区,多个扇区划分成一个"块"(block),linux以块为单位存储数据,一般块的大小为4KB, 也就是8个扇区组成一个块.??文件数据都存在块中,那么关于

理解 Linux 的硬链接与软链接

理解 Linux 的硬链接与软链接 从 inode 了解 Linux 文件系统 硬链接与软链接是 Linux 文件系统中的一个重要概念,其涉及文件系统中的索引节点 (index node 又称  inode),而索引节点对象是 Linux 虚拟文件系统 (VFS) 的四个基本概念之一.通过剖析硬链接与软链接的联系与区别,我们可更好的了解  Linux 中 VFS 这一通用文件模型.并让 Linux 普通用户和系统管理员正确使用硬链接与软链接,帮助文件系统开发者获取 inode  的相关知识. 1

20150514我读《深入理解linux内核》之虚拟文件系统笔记

20150514我读<深入理解linux内核>之虚拟文件系统笔记 2015-05-14 Lover雪儿 虚拟文件系统所隐含的思想就是把很多不同种类的文件系统的共同信息放入内核,其中有一个字段或者函数来支持Linux所支持的所有实际文件系统所提供的任何操作.对所调用的每个读.写或者其他函数,内核都能把他们替换成支持本地Linux文件系统.NTFS文件系统,或者文件所在的任何其他文件系统的实际函数. 虚拟文件系统可以称为虚拟文件系统转换,是一个内核软件层,用来处理与Unix标准文件系统相关的所有系

从需求的角度去理解Linux系列:总线、设备和驱动

笔者成为博客专家后整理以前原创的嵌入式Linux系列博文,现推出以让更多的读者受益. <从需求的角度去理解linux系列:总线.设备和驱动>是一篇有关如何学习嵌入式Linux系统的方法论文章,也是从需求的角度去理解Linux系统软件的开篇,期待此系列文章日后会是学习嵌入式Linux的标杆! 这是作者精心撰写的经验总结,希望嵌入式Linux的学习者仔细领会,多读几遍也无妨. 一.软件.面向对象.软件框架 软件是为了解决现实问题而产生的,面向对象的软件思维是解决普遍现实问题的一种有效的抽象方法,而

从需求的角度去理解Linux之一:总线、设备和驱动

这是一篇有关如何学习嵌入式Linux系统的方法论文章,也是从需求的角度去理解Linux系统软件的开篇,相信此系列文章日后会是学习嵌入式Linux的标杆! 这是作者精心撰写的经验总结,希望嵌入式Linux的学习者仔细领会,多读几遍也无妨. 转载请务必保留我们的公众号:嵌入式企鹅圈 一.软件.面向对象.软件框架 软件是为了解决现实问题而产生的,面向对象的软件思维是解决普遍现实问题的一种有效的抽象方法,而软件框架指的是用面向对象的思维去解决某种特定领域的问题而专门设计的一套行之有效的解决方案. 一般地

CentOS 7 Linux基本命令(11)深入理解Linux文件系统与日志

深入理解Linux文件系统与日志 一.inode和block概述 文件数据包括元信息与实际数据 元信息:文件的属性信息实际数据:文件内容 文件存储在硬盘上,硬盘最小存储单位是"扇区",每个扇区存储512字节 block(块) 连续的8个扇区组成一个block(4k)是文件存取的最小单位 inode(索引节点) 也叫i节点用于存储文件元信息 1.indoe的内容 inode包含文件的元信息 (1)文件的字节数(2)文件拥有者的User ID(3)文件的Group ID(4)文件的读.写.

理解Linux中的load Averges

一.什么是load average? linux系统中的Load对当前CPU工作量的度量 (WikiPedia: the system load is a measure of the amount of work that a computer system is doing).也有简单的说是进程队列的长度. Load Average 就是一段时间 (1 分钟.5分钟.15分钟) 内平均 Load . 我们可以通过系统命令"w"查看当前load average情况 [[email p

理解linux sed命令

理解linux sed命令(2010-02-27 18:21:20) 标签:linuxshellsed替换 分类:革命本钱 1. Sed简介sed是一种在线编辑器,它一次处理一行内容.处理时,把当 前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有改变,除非你使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对文件的反