美文网首页
Linux 文件系统 inode

Linux 文件系统 inode

作者: 荷茗 | 来源:发表于2019-03-07 05:38 被阅读0次

在linux系统中,每一个目录或者文件都会被分配一个 inode 与 block。inode的内容在记录档案的权限与相关属性,至于block区块则是在记录档案的实际内容。

inode 存储的数据:

  • 文件的访问模式(r/w/x)
  • 文件所有者和组(owner/group)
  • 文件大小
  • 文件创建或状态改变的时间(ctime)
  • 最近一次的读取时间(atime)
  • 最近修改的时间(mtime)
  • 定义文件特性的标志(flag)
  • 文件真正内容指向的数据块(pointer)
  • 原则上,block 的大小与数量在格式化完就不能够再改变了(除非重新格式化);

  • 每个block 内最多只能够放置一个档案的资料;

  • 如果档案大于block 的大小,则一个档案会占用多个block 数量;

  • 若档案小于block ,则该block 的剩余容量就不能够再被使用了(磁碟空间会浪费)。

那么我们时如何访问到一个文件的呢?

由于目录树是由根目录开始读起,因此系统透过挂载的资讯可以找到挂载点的inode 号码,此时就能够得到根目录的inode 内容,并依据该inode 读取根目录的block 内的档名资料,再一层一层的往下读到正确的档名。

举例来说,如果我想要读取/etc/passwd 这个档案时,系统是如何读取的呢?首先我们通过以下命令着目录与文件所在的 inode 号码。

root@:~ $ ll -di / /etc /etc/passwd
   2 drwxr-xr-x 23 root root 4096 Feb  5 06:44 //
 283 drwxr-xr-x 94 root root 4096 Mar  1 06:14 /etc/
1269 -rw-r--r--  1 root root 1566 May 22  2018 /etc/passwd

想要找到/etc/passwd 先找到 / 的 inode 号为 2, inode 有 r x 权限所以可以去访问该 inode 指向的 block 的数据,然后找到/etc 的inode号。而 etc 的inode号码为 283,所以找到这个 inode,然后通过再找到 passwd 的 inode 最后找到文件的block过程如图所示:

image

关于 symbol link 与 hard link 的区别

symbol link 的命令

ln -s src_file_path des_file_path

Symbolic link就是在建立一个独立的文件,而这个文件的内容是它说链接的那个文件的路径。

例如:

ls -s /etc/aabbcc ./abc

如果我们访问 ./abc 事实上是会去访问 /etc/aabbcc 这个文件,而当这个文件被删除时,系统就会报错。

hard link 的命令

而hard命令则不同,hard link 只是在某个目录下的一条文件连结到某inode号码的关连记录而已。所以不管目标文件在原目录下如何修改名字或者删除,由于存储在file的名字只是与目录的block里面记录的数据相关,通过所以在当前目录下链接,你还是能够找到这个文件。并且 hard link 的文件除非将指向这个 inode 的所有链接都删除了其才会被删除。这个有点像 python 对象里面的引用计数。

两者的异同

soft link Hard link
可以给目录创建硬链接 不允许给目录创建硬链接
允许在不同文件系统之间才能链接 只允许在同一文件系统中的文件之间才能创建链接
原文件改名,删除后无法找到 原文件改名,删除后无影响
是一个文件 目录下的一条文件连结到某inode号码的关连记录

相关文章

  • 基于C++的文件管理系统

    模拟实现linux文件系统。inode、superBlock…… The simulation of the li...

  • [源码和文档分享]基于C++的文件管理系统

    模拟实现linux文件系统。inode、superBlock…… The simulation of the li...

  • Linux下磁盘的挂载与卸载

    Linux下每个文件系统都有独立的inode,block,super block等信息,这个文件系统要挂载到目录树...

  • 理解inode(转)

    inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础。 我觉得,理解inode,不仅有助于...

  • linux inode理解

    inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础。理解inode,不仅有助于提高系统操...

  • Linux 文件系统 inode

    在linux系统中,每一个目录或者文件都会被分配一个 inode 与 block。inode的内容在记录档案的权限...

  • linux学习笔记三

    文件组成 linux文件系统的运行和操作系统的文件组成有关,文件系统会将文件权限,属性放在inode(索引节点)中...

  • 【转】理解inode

    description: "inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础。"dat...

  • note_8.5_文件删除复制与移动

    文件系统:   目录:文件    元数据:inode, inode table    数据:data blocks...

  • linux文件系统之inode

    inode是什么 理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector...

网友评论

      本文标题:Linux 文件系统 inode

      本文链接:https://www.haomeiwen.com/subject/fthqpqtx.html