创新路
我们一直在努力

Inode了解

    在Linux中一切皆文件,文件,目录,块,设备在Linux中都是以文件的形式存在的

    那么都是文件,那就会涉及到读取,写入等操作。在Linux中,硬盘的最小单位为“扇区”每个扇区的大小为512字节,也就是0.5KB,如果系统按照“扇区”来进行读写的话,那么速度就太慢太慢了,于是产生了一个词叫“块”1块=8个扇区,也就是等于4K,于是“块”的大小就是4K,那么系统就会按照每4K来进行数据的读取

    在Linux中是怎么读取文件的呢?

    在Linux中文件都有两个结构,一是目录项,也就是记录文件是哪个目录的,跟哪个目录关联,还有就是索引之类的,另一个就是inode,叫做文件的元数据。读取文件是先找到这个文件的inode节点,通过这个节点去块设备中找到文件对应的位置然后进行的读取

    一、inode中包含了什么内容

        1.inode的编号(主要用来定位文件的位置)

        2.文件的UID

        3.文件的GID

        4.文件的大小

        5.指向文件的链接数

        6.文件的时间戳,上一次修改时间,打开时间,inode变动时间

        7.指向磁盘块的指针

        8.其他

    image.png

    前面白色的数字就是文件的inode编号

    那么找文件其实并不是以文件名来查找文件,而是通过先查找文件名的inode号,再找到指向块位置的指针,然后才在硬盘上找到位置进行读取文件

    

    二、innode大小和数量

        其实innode也是有大小的,大小为128或者256直接,硬盘在格式化的时候其实就已经分配了innode的数量,如果innode用光了的话,那么就不能创建文件了,就会产生inode节点故障

        image.png

        由于这里使用的是windows的Git,所以inodes iused ifree就没有显示出具体的数量,如果是在Linux中,那么就会显示总共i节点数量,已经用了多少i节点数量,还有剩余多少i节点数量

        那么这里我们就可以编写一个脚本,用来创建很多的空文件,直到inode节点耗尽,达到一个对服务器进行攻击的功能

        [root@localhost ~]# cat i.sh

        #!/bin/bash

        i=1

        while [ $i ]

        do

        touch /data/file$i

        let i++

        done

    三、inode的特点

        1.在重命名文件的时候,inode是不会变的,在移动文件的时候,inode也是不会变的,变的只是文件的目录项而已

        2.删除文件,其实只是删除了文件指向了inode的指针而已,如果要彻底删除硬盘上的东西,那么就用其他的东西来覆盖,比如生成一个大小为多少多少的空文件

        3.文件名如果包含特殊的字符不太容易被删除,那么可以直接删除这个节点,也能达到删除的目的

    四、硬链接与软连接

        硬链接和软连接其实和inode是有关系的

        硬链接:生成的文件是指向源文件的inode的,然后源文件中就会新增加一个链接数,如果删除源文件,那么只是相当于删除了源文件指向inode的一个链接,并没有真的删除了这个文件,所以文件依然存在,如果inode的链接数没有了的话,那么系统就会回收这个inode,就相当于删除了这个文件

        软连接:生成的文件是指向是原文件的,如果访问这个这个生成的文件,其实也就是访问的是源文件,然后源文件在去找到inode,达到访问的目的,如果删除了这个源文件,那么生成的文件也相当于删除了

               

    

    

未经允许不得转载:天府数据港官方信息博客 » Inode了解

客官点个赞呗! (0)
分享到:

评论 抢沙发

评论前必须登录!

天府云博 - 做有态度的开发&运维&设计学习分享平台!

联系我们百度云主机