1.inode 解析:

存储文件元信息(文件创建者,创建日期,大小等)的区域叫做inode即 索引节点。

2.inode 内容:

文件字节数、拥有者UserID,GroupID,读写执行权限,时间戳,链接数,block位置

3.inode 大小

inode 也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成连个区域, 一个是数据区,存放文件数据;另一个是inode区,存放inode所包含的信息。每个inode节点的大小,一般是128 字节或256字节。inode节点的总数,在格式化时就给定,一般是每1kb 或2kb 就设置一个inode, 假定在一块1GB的硬盘中,每个inode节点的大小为128字节, 每1KB就设置一个inode,那么inode table 的大小就会达到128MB, 占整个硬盘的12.8%

查看每个硬盘分区的inode总数和已经使用的数量,可以使用df 命令;

df -i 

查看每个inode节点的大小,可以用如下命令

sudo dumpe2fs -h /dev/hda |grep "Inode size"

(由于每个文件都必须有一个inode,因此有可能发生inode 已经用光,但是应胖还未存满的情况, 这时,就无法再硬盘上创建为新文件。)

4.inode号码

每个inode 都有一个号码,操作系统用inode号码来识别不同的文件。

Unix、Linux系统内部都不使用文件名,而通过inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的名称或绰号。 表面上,用户通过文件名打开文件。实际上,系统内部这个过程分为三步:首先,系统找到这个文件名对应的inode号码, 其次,通过inode号码,获取inode信息, 最后,根据inode信息,找到文件数据所在的block,读取数据。

5.目录文件

Unlx/Linux 系统中,目录也是一种文件。打开目录,就是打开目录文件。

目录文件的结构非常简单,就是一系列目录项的列表,每个目录项,由两部分组成:所包含文件的文件名,以及该文件名对应的inode号码

6.硬链接

一般情况下,文件名和inode号码是一一对应的关系,每个inode号码对应一个文件名。 但是,Unix、Linux 系统允许对个文件名指向同一个inode号码,这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是删除一个文件名,不影响另一个文件名的访问。这种情况被称为“硬链接”

任何一个目录的‘硬链接’总数总是等于2加上它的子目录总数。

7.软链接

文件A和文件B的inode号码不同,但是文件A的内容是文件B的路径,读取文件A时,系统工会自动将访问者导向文件B,因此,无论打开哪一个文件,最后读取的都是文件B,这时,文件A就称为文件B的软链接 或者符号链接。

这意味着,文件A依赖文件B存在,如果删除文件B,打开文件A报错,没有相关文件或目录。 这时软硬链接的区别, 文件A指向文件B的文件名,而不是文件B的inode号码。 文件B的inode 链接数不会发生改变。

8.inode 的特殊作用

*有时文件名包含特殊字符,无法正常删除,这时,删除inode节点,就能祈祷删除文件的作用。

*移动文件或重命名文件,只是改变文件名,不改变inode号码

*打开文件以后,系统就以inode号码来识别这个文件,不再考虑文件名。 因此,一般系统无法从inode号码得知文件名。

9. 实际问题

在一台配置较低的Linux服务器(内存,硬盘比较小)的/data 分区内创建文件时,系统提示磁盘空间不足,用df -h 命令查看一下磁盘使用情况, 发现/data 分区只使用66% , 还有12G的剩余空间。  之后df -i查看 /data 分区的索引节点,发现已经用满了。导致系统无法创建新目录和文件。

查找原因: /data/cache 目录中存在数量非常多的小字节缓存文件, 占用的blcok不多, 但是占用了大量的inode空间。

解决方案: 1.删除/data/cache 目录中的部分文件,释放/data分区的一部分inode

           2.用软链接将空闲分区/opt 中的newcache 目录链接到/data/cache ,使用/opt分区的inode来缓解 /data 分区inode不足的问题

 ln -s /opt/newcache /data/cache

 

inode 详解的更多相关文章

  1. 【转】Inode详解

    Inode详解 转自: Inode详解   一.inode是什么 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存 ...

  2. (转)Inode详解

    Inode详解  原文:http://www.cnblogs.com/adforce//p/3522433.html 一.inode是什么 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的 ...

  3. linux超级块和inode 详解 和 df 、du 命令详解与环境变量

    一.inode块,Unix文件的核心. 首先需要明白的是,在Unix操作系统中的任何资源都被当作文件来管理.如目录.光驱.终端设备等等,都被当作是一种文件.从这方面来说,Unix操作系统中的所有的目录 ...

  4. Inode详解

    一.inode是什么 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统读 ...

  5. Inode详解-重要

    一.inode是什么 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统读 ...

  6. 索引节点inode详解

    Inode(index node),索引节点.Linux系统中,分区要进行格式化,创建文件系统.在每个Linux存储设备或存储设备的分区(可以是硬盘,软盘,U盘等)被格式化为ext3文件系统后,一般分 ...

  7. linux inode 详解 / 线上inode爆满解决方案

    本文大量参考阮一峰大神博客,整理笔记 之所以写inode文章是由于一次线上问题,引发对inode深入的思考. 磁盘的inode监控与磁盘空间的监控同等重要,线上服务器一定要做好磁盘inode与磁盘空间 ...

  8. [svc][op]磁盘Inode详解-重要

    另一篇白话总结 一.inode是什么 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB ...

  9. (转)Linux硬链接、软链接及inode详解

    inode 文件储存在硬盘上,硬盘的最小存储单位叫做“扇区”(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读 ...

随机推荐

  1. Redis 高可用集群

    Redis 高可用集群 Redis 的集群主从模型是一种高可用的集群架构.本章主要内容有:高可用集群的搭建,Jedis连接集群,新增集群节点,删除集群节点,其他配置补充说明. 高可用集群搭建 集群(c ...

  2. Mybatis(二)参数(Parameters)传递

    Mybatis参数(Parameters)传递  1..单个参数 可以接受基本类型,对象类型,集合类型的值.这种情况MyBatis可直接使用这个参数,不需要经过任何处理. <!-- 根据id查询 ...

  3. pyhton 关于 configparser 配置 模块 实践使用中碰到的坑

    今天做一个ATM的练习,想要用configparser模块,写一个配置文件,存放用户信息. 结果状况连连,叫苦不迭. 我用configparser模块,想要对配置文件,进行读.写.改.查 功能. 其中 ...

  4. C#Winform设计的通用标签设计器

    技术看点 PropertyGrid的使用 自定义控件的使用 对象序列化成XML GDI+Windows驱动打印 前言 是的,一不小心把公司名称透露了.索性帮公司打一下广告.公司(上海易溯信息科技)是中 ...

  5. codeforces 895A Pizza Separation 枚举

    codeforces 895A Pizza Separation 题目大意: 分成两大部分,使得这两部分的差值最小(注意是圆形,首尾相连) 思路: 分割出来的部分是连续的,开二倍枚举. 注意不要看成0 ...

  6. php+jQuery+Mysql找回密码----ThinkPHP

    最近用ThinkPHP做了一个邮箱找回密码功能,在遭遇了N个bug之后终于做成了,下面分享一下邮箱找回密码功能的实现: 邮箱找回密码实际上就是在用户通过验证之后重置密码的过程,一般开发者会在验证用户信 ...

  7. Mysql 表分区和性能

    以下内容节选自<Mysql技术内幕InnoDB存储引擎> mysql表分区: 分区功能并不是所有存储引擎都支持的,如CSV.MERGE等就不支持.mysql数据库支持的分区类型为水平分区( ...

  8. .NET Core快速入门教程 1、开篇:说说.NET Core的那些事儿

    一..NET Core的诞生 聊 .NET Core,就不得不说他的爸爸 .NET.当年Java刚刚兴起,如火如荼,微软也非常推崇Java,当时Windows平台的Java虚拟机就是微软按照JVM标准 ...

  9. Cocos2d3.0 制作PList文件

    auto root = Dictionary::create(); auto string = String::create("string element value"); ro ...

  10. java泛型学习(一)

    泛型也叫做参数化类型,顾名思义的去理解,就是把类型作为一个参数.类比方法的传参,我们举个例子. class A{ public void getX(int x){ System.out.println ...