一.  概念

1.  inode(index node)表中包含文件系统所有文件列表

一个节点 (索引节点)是在一个表项,包含有关文件的信息( 元数据 ),包括:

  • 文件类型,权限,UID,GID

  • 链接数(指向这个文件名路径名称个数)

  • 该文件的大小和不同的时间戳

  • 指向磁盘上文件的数据块指针

  • 有关文件的其他数据

  • inode  索引节点编号

       2. inode 表结构

           

3. inode号

系统中将目录下的文件名和文件inode号之间的映射作为目录的数据存放;人们通过文件名进行操作时,系统会通过对应路径目录的inode号找到目录的inode表数据,进而通过数据指针指向目录的数据,匹配文件名,得到文件的inode号;再到inode表中找到此文件的表项,再由文件数据指针指向真正的文件数据。

i.  系统中同一分区的索引节点编号是唯一的,即在一个分区中,索引编号相同的文件指向的数据是同一个;(硬链接)

ii.  系统中每个分区的索引节点划分是独立的,不同分区的索引节点编号可能相同,但不是同一个文件;

iii.  分区中的索引节点编号是有限的;当分区中索引节点编号用完后,新建文件夹会提示系统内存不足,导致新建失败;但系统中仍有剩余磁盘空间,原因是索引节点编号不足,无法为文件分配节点编号,因而新建失败。

   ls -i                                 查看文件节点编号
df -i 查看分区节点编号使用情况
echo file{1..500000} |xargs touch 批量新建大量文件;参数过多,touch无法直接创建
echo file{1..500000} |xargs rm 批量删除大量文件;参数过多,rm无法直接删除

4. 文件操作与inode的关系

        i.  cp命令执行原理
               系统分配一个空闲的inode号,在inode表中生成新条目;在目录中创建一个目录项,将名称与inode编号关联;拷贝数据生成新的文件
       ii.  rm 命令执行原理
               链接数递减,减到零后,进而释放inode号,被系统重用;把数据块放在空闲列表中;删除目录项;数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖。
       iii.  mv命令执行原理
              如果mv命令的目标和源在相同的文件系统,作为mv 命令用新的文件名创建对应新的目录项;删除旧目录条目对应的旧的文件名;不影响inode表(除时间戳)或磁盘上的数据位置:没有数据   被移动!
              如果目标和源在一个不同的文件系统, mv相当于cp和rm

二 . 软连接与硬链接

1. 硬链接

    创建方式:   ln filename  filename2 
          a. 硬链接的新建是为同一inode号添加文件名  (本质是在目录条目里为inode号增添一个文件名映射,指向同一个inode表数据,因此数据相同)
          b. 新建硬链接,链接数增加(链接数实质就是 inode号 对应文件名的个数;当 inode 号映射的文件名不存在时,此 inode号就会被系统回收重用)
          c. 硬链接文件和原文件之间数据共享,但又互相独立;(修改其中任意一个文件的数据,其他的文件数据都会改变,因为共用同一数据指针;删除其中任意一个文件,链接数减少,即减少一个inode和文件名之间的映射,但对数据指针没影响,所以其他文件数据没影响)
          d. 不能跨分区创建硬链接 (各分区之间 inode 互相独立)
          e. 不能对目录创建硬链接 (目录最多有三个硬链接,目录本身,目录下的 . ,子目录下的 ..)

2.  软连接

    1. 创建方式: ln -s file_path file_link    file_path :原文件绝对路径或原文件相对与 file_link 的相对路径, 推荐使用相对路径,可移植性强
2. readlink file_link 读取软连接原始文件路径
3. 软连接指向新文件
rm -f file_link 删除原软连接
ln -s newfile_path file_link 创建新软连接
          a.  软链接实质是新建一个文件快捷方式,存放的数据是原文件的文件名,文件数据大小是原文件名字的字节数;访问时通过文件名指向到原文件数据
          b.  软链接支持跨分区  (通过原始文件路径进行映射)
          c.  可以创建目录软连接
          d.  软连接文件依赖于原始文件 ;删除原始文件,软链接文件会失效

Linux文件索引节点相关概念的更多相关文章

  1. 查找大文件 & 索引节点(inode)爆满 解决办法

    经常遇到磁盘满或者文件节点满的情况,整理如下 查找大文件 查找超过某个大小的文件, 如1G find . -type f -size +1G 查找文件大小的时候,现实文件属性 find . -type ...

  2. Centos 06 文件类型和扩展名&索引节点inode和存储块block

    本节内容 1.文件类型 2.文件扩展名 3.索引节点inode和block块 首先需要申明一点, 1.在linux里面文件扩展名和文件类型是没有关系的 2.为了容易区分和兼容用户使用windows的习 ...

  3. linux服务器文件索引inodes满了

    inode节点中,记录了文件的类型.大小.权限.所有者.文件连接的数目.创建时间与更新时间等重要的信息,还有一个比较重要的内容就是指向数据块的指针.一般情况不需要特殊配置,如果存放文件很多,需要配置. ...

  4. Linux文件系统介绍(转)

    文章转自:http://www.iteye.com/topic/816268 文件系统是linux的一个十分基础的知识,同时也是学习linux的必备知识. 本文将站在一个较高的视图来了解linux的文 ...

  5. Linux实战教学笔记08:Linux 文件的属性(下半部分)

    第八节 Linux 文件的属性(下半部分) 标签(空格分隔): Linux教学笔记 ---更多相关资料请点我查看 第1章 链接的概念 在linux系统中,链接可分为两种:一种为硬链接(Hard Lin ...

  6. 转: linux文件链接(软链接和硬链接)

    链接:一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法. Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic l ...

  7. Linux文件时间详解ctime、mtime、atime【转】

    本文转载自:http://blog.csdn.net/doiido/article/details/43792561 Linux系统文件有三个主要的时间属性,分别是 ctime(change time ...

  8. linux文件 面试知识

    1.        文件存储结构 Linux正统的文件系统(如ext2.ext3)中,一个文件由目录项.inode和数据块组成. 目录项:包括文件名和inode节点号. inode:又称文件索引节点, ...

  9. linux文件链接

    我的github,欢迎关注,分享知识与技术 链接:一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法. Linux中包括两种链接:硬链接(HardLink)和软链接(Soft Link), ...

随机推荐

  1. 映射文件中增删改查标签中的parameterType和resultType

    parameterType:指定输入参数类型,mybatis通过ognl从输入对象中获取参数值拼接在sql中. resultType:指定输出结果类型,mybatis将sql查询结果的一行记录数据映射 ...

  2. PHP开启页面报错的代码

    PHP开启页面报错的方法很简单,在<?php内加入下面的代码就可以了: <?php ini_set("display_errors", "On"); ...

  3. zip多个分割文件合并

    copy /b 1.z01+1.z02+1.zip 注意:1.zip在最后

  4. [Training Video - 2] [Groovy Introduction]

    Building test suites, Test cases and Test steps in SOAP UI Levels : test step level test case level ...

  5. Codeforces766A Mahmoud and Longest Uncommon Subsequence 2017-02-21 13:42 46人阅读 评论(0) 收藏

    A. Mahmoud and Longest Uncommon Subsequence time limit per test 2 seconds memory limit per test 256 ...

  6. (3)-JSONObject的过滤设置

    我们通常对一个json串和java对象进行互转时,经常会有选择性的过滤掉一些属性值.例如下面的类:   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...

  7. Tips and Examples Using FNDLOAD (DOC ID 735338.1)

    In this Document Goal Solution Some Tips About FNDLOAD Some sample examples Diagnostics & Utilit ...

  8. [翻译]Writing Component Editors 编写组件的编辑器

    Writing Component Editors  编写组件的编辑器   All common control editors (opened from a control's context me ...

  9. Android-广播总结

    1.发送广播: 其实发送广播属于隐式意图 1.1.系统发出的广播(有序广播/无序广播) 1.2自己发出的广播(有序广播/无序广播) 2.订阅广播: 2.1.AndroidManifest.xml形式订 ...

  10. C/C++内存泄露及检测工具

    内存泄漏的定义   一般我们常说的内存泄漏是指堆内存的泄漏.堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显示释放的内 存.应用程序一般使用malloc,re ...