在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.其他

前面白色的数字就是文件的inode编号
那么找文件其实并不是以文件名来查找文件,而是通过先查找文件名的inode号,再找到指向块位置的指针,然后才在硬盘上找到位置进行读取文件
二、innode大小和数量
其实innode也是有大小的,大小为128或者256直接,硬盘在格式化的时候其实就已经分配了innode的数量,如果innode用光了的话,那么就不能创建文件了,就会产生inode节点故障

由于这里使用的是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)