仿牌网站容易被攻击吗,游戏网站规划方案,企业信息服务平台,gov域名网站有哪些linux文件系统-inode学习整理介绍linux文件系统可讲的模块有很多#xff0c;包括文件系统整体架构、文件系统分类、虚拟文件系统以及文件系统存储结构等等#xff0c;本文主要介绍的是文件系统的存储结构#xff0c;也就是本文的重点-inode。文件存储结构首先从开天辟地开始…linux文件系统-inode学习整理介绍linux文件系统可讲的模块有很多包括文件系统整体架构、文件系统分类、虚拟文件系统以及文件系统存储结构等等本文主要介绍的是文件系统的存储结构也就是本文的重点-inode。文件存储结构首先从开天辟地开始介绍我们知道数据是保存在磁盘中的磁盘具体存贮原理细节不在这里进行说明而磁盘中的存储空间是如何进行管理的这里就说到了磁盘块的划分超级快文件系统中第一个块存放的是文件系统本身的结构信息包括每个区域的大小以及未被使用的磁盘块等等信息inode节点表超级块的下部分就是inode节点表了也就是我们上面的inode table。每个inode节点对应一个文件(或目录)的结构包括了文件的创建时间、权限等信息下面有详细的介绍。数据区显然它就是用来保存文件内容的区域这里要介绍下磁盘上的块大小一样一般来说为4kb即连续的八个扇区(512字节)块手是文件存取的最小单位超过块大小的文件会放到下一个块中。就像大家知道的linux一切皆是文件所以目录项也是文件不过这个文件中存储的是目录下的文件及子目录组织结构相应的文件指向了inode的节点这里需要说明每个文件对应一个inode节点之后通过inode节点中有关数据区块的信息找到对应的数据。文件存储结构的整体架构如下图所示inode节点inode节点详解inode节点就是文件元数据的存储区包括了文件如下内容12345678- 文件的字节数- 文件拥有者的User ID- 文件的Group ID- 文件的读、写、执行权限- 文件的时间戳共有三个ctime指inode上一次变动的时间mtime指文件内容上一次变动的时间atime指文件上一次打开的时间。- 链接数即有多少文件名指向这个inode- 文件数据block的位置可以使用stat filename 命令查看基本除了文件内容外的信息都存储在inode节点中。inode节点的大小一般来说为128或者256个字节inode节点的总数在格式化时就给定一般是每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中每个inode节点的大小为128字节每1KB就设置一个inode那么inode table的大小就会达到128MB占整块硬盘的12.8%。如果想要查看inode大小可以使用dump2fs -h /dev/sda1 | grep Inode size查看:如果要查看每个磁盘的inode使用情况可以使用df -i命令查看每个文件都有自己的对应的inode号这里要说明的是unix/linux系统中主要根据inode号来识别文件文件名只是我们用来整理和分辨文件的别称而文件名主要存储在目录项中。目录项目录项的结构目录项是linux文件系统的重要组成部分在linux中目录项也是一种文件不过他内部存储的信息由两部分组成文件名inode编号我们可以通过ls -ai dirname 查看目录结构当我们创建目录时一定会有的两个内容就是.和...表示的是当前目录文件所对应的inode号..对应的是当前目录父目录的inode号其他的就是我们目录下的文件和对应的inode号。介绍完上面这些信息我们再来看一开始的流程就很清楚了首先从目录文件中拿到我们所需文件对应的inode号通过inode号拿到文件的元数据通过其中所指向的数据块号取出文件内容。创建流程通过创建流程串通知识点文件创建流程通过前面的内容我们了解到了文件取出的流程那创建一个文件的流程是什么样的呢下面我们来介绍下创建文件的流程。存储inode节点信息内核首先找到一块空的inode节点将文件的信息存在节点中。存储数据信息数据信息即文件信息内核从未使用的块列表中找到几个数据块(一般是不连续的)如300、230、540等内核将缓存区中的数据存储到对应的数据块中。记录分配情况存储完信息后数据块的分配情况记录在inode节点信息中添加文件名到目录最后内核将文件名和对应的inode节点放到目录文件中。inode应用扩展硬连接一般情况下linux中的文件名和inode号码是一一对应的不过也可以多个文件名指向同一个inode节点也就是我们要介绍的硬链接。创建硬链接的命令为ln 源文件目标文件硬链接与正常的文件相同只是与其他文件共享同一个inode节点前面介绍的inode节点信息中Links数就是文件名指向的数量当对其进行删除的时候只会对inode节点中的links数减少1当为0的时候文件才会真正被删除。这里说明下目录项中的.和..也是一种硬链接。软链接介绍完硬链接再介绍一种我们平常使用比较多的一种方式软链接。ln -s 源文件 目标文件是软链接的创建方式虽然看起来只是多了个选项s当时内部原理完全不同。软链接是单独生成一个链接文件有自己的inode号是一个单独的文件这个文件中的信息是链接的文件的信息。如上图可以把软链接看做是一个指针只不过指针里面的内容为所指向文件的路径这个指针有自己单独的内存空间。参考文章