码迷,mamicode.com
首页 > 其他好文 > 详细

Inode 相关

时间:2016-07-31 22:28:23      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:inode 软链接 硬链接 数据块 元数据

inode

磁盘存储的最小单位是扇区(sector),8个sector组成一个block,每个block大小为4k 操作系统读取磁盘时,以block为单位。

系统存储文件的数据,分为两种。元数据和数据块。同样,硬盘存储也在系统格式化的时候被分为两部分。分别存储元数据和数据块。

元数据:

元数据是存储文件元信息的地方。这些元信息包括:文件创建者,文件所属组,文件权限信息,文件时间信息,文件类型(regular file,character special file,block special file,symbolic link 等等),文件大小,文件链接数,文件数据block的位置等等。除了文件名之外的所有信息都存储在这个元数据里面。

这些元数据可以通过命令stat查看。

技术分享

为什么没有文件名呢?

        操作系统并不使用文件名,而是通过inode来是被不同的文件。当读取文件时,系统通过文件名能够查找到该文件的inode,当文件被打开后,系统对文件的操作都是通过inode了,不再需要文件名了。所以元数据中不需要文件名。文件的文件名,就好像是操作系统之间的桥梁。

查看某个文件对应的inode:

   技术分享

        可得,该系统的inode大小为4k

那么这个文件名和inode直接的对应关系,是在哪里查找的呢?

        文件夹的表结构信息。 目录也是一种文件,这个文件保存了很多的目录项(dirent),这些目录项里面存储有文件名和inode的对应关系。

不同的权限对目录的效果?

        如果只有只读权限,只能反问目录的目录项,获得文件的inode,并不能访问inode的所有相关信息。 如果有了执行权限,就可以获取inode的相关信息了。

inode的大小

        查看inode的字节数

技术分享

inode的结构

元数据存储在inode table中,每个文件的元数据条目,成为inode entry 不同的文件系统中,inode结构不同。以前曾经有过13指针的结构,现在常用在ext4文件系统中的是15指针的结构:

  1. 12个直接指针:每个指针指向4096k(1个block大小)的数据块,所指向内容大小:4k*12=48k

  2. 1个间接指针:该指针指向一个4096k大小的数据块,该数据块存储着指向内容数据块的指针,一共4k1024个(每个指针32位,所以每个指针占4个字节),共10244k=4M

  3. 1个2重间接指针:所指向内容大小:1024*4M=4G

  4. 1个三重间接指针:所指向内容大小:1024*4G=4T 

    技术分享

数据块:

数据块是存储具体文件内容的地方。数据块的访问是通过inode中的数据块指针访问的。

软链接和硬链接的inode

软链接的inode和源文件是不同的。但是软链接的文件名指向源文件的文件名,软链接文件通过源文件来获取inode,然后访问文件的具体内容。软链接相当于新建了一个文件,所以他们的inode是不同的。

软链接可以不在同一分区。

硬链接相当于文件的“别名”,硬链接与源文件在目录的目录项中存有相同的inode。指向某个inode的文件名数,就是硬链接数,每增加一个,会在ll时显示出来。 硬链接必须在同一个分区中,不能跨文件系统。

技术分享

文件的删除,只是删除了目录项中,文件名、inode与存储块之间的关系,并不会直接清除掉存储块处的数据,所以数据删除后,是可能恢复的。如果想要删除掉存储块处的数据,只需要做一次大量的拷贝或者格式化该分区。

对于文件夹,可以创建软链接,但是不能够创建硬链接。 

技术分享

图中,/root/Downloads文件夹不能够建立硬链接,却有2个别称,这是因为/root/Downloads目录下面..这个链接的存在。 而/root文件夹有27个别称,这是因为/root下面的每个文件夹中,都有一个指向/root的别称/root/A/..

文件新建时,系统会自动给文件一个inode,来标识这个文件。 当文件读取时,会产生一个文件描述符:fd(file description)。

inode空间和硬盘空间

  • 查看inode空间剩余,使用df -h 命令

  • 查看硬盘空间剩余,使用df 

    技术分享

others: 超级块(superblock),占据1号物理块,作用于文件系统上,是文件系统的控制块。如果访问一个分区,首先要访问的是该分区的超级块。超级块的数据损毁后,整个磁盘都有可能坏,所以需要经常备份超级块。 `


Inode 相关

标签:inode 软链接 硬链接 数据块 元数据

原文地址:http://qing5jl.blog.51cto.com/10155131/1832576

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!