zoukankan      html  css  js  c++  java
  • Linux基础篇之目录与文件

    对于磁盘而言,最小单位是sector,多个sector组成了一个block, block译作中文"块",

    一般情况下:

    1 sector = 512 bytes = 0.5 K

    8 sector = 4K = 1block

    inode = 128  or 256 bytes

    块里面存放了文件数据,但是文件的元数据也需要记录,记录元数据的块叫inode

    inode有以下数据:

    • 文件的字节数。
    • 文件拥有者的User ID。
    • 文件的Group ID。
    • 文件的读、写、执行权限。
    • 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
    • 链接数,即有多少文件名指向这个inode。
    • 文件数据block的位置。

    除了文件名以外的所有文件信息,都存在inode之中,那么文件名放在哪里呢?

    在<unxi高级系统编程>一书中, 对此有详细的解释

    图片1解释:1个磁盘分成了很多分区,每个分区可以做不同的文件系统,文件系统内部又分了i节点和数据块等。

    这张图解释了为什么硬链接不能跨区,因为硬链接依赖于文件系统而存在, 而文件系统依赖于分区而存在。

    图片2解释:数据块由文件块和目录块组成,只有两项重要数据存放在目录块中:文件名和i节点编号,同时i节点编号又指向了i节点,i节点再指向文件块。

    这张图解释了为什么取消硬链接不会释放磁盘空间,因为只是删除了指向i节点的指针。

    也解释了给文件重命名时,文件的存储位置并不会发生变化,只是新构建了指向已有i节点的新目录块,并删除了旧的目录块。

    图片3解释:在目录中新建目录testdir后的变化,对于testdir的父目录来说,有3个链接指向不同的inode,对于testdir来说,有2个链接指向不同的inode,二者指向的inode有重叠部分。

    图片3解释了对于一个目录来说,至少有2个链接,分别是点和点点。如果目录下面还有子目录, 链接数会增加.

     上述三个图可以说明的是:

      无论是目录还是文件,最终都会落到数据块中.

      dentry用来记录文件的名字、索引节点指针以及与其他目录项的关联关系。多个关联的目录项,就构成了文件系统的目录结构, 是由内核维护的一个内存数据结构,不同于数据块中的目录块, 但是有关系

      

  • 相关阅读:
    推荐系统学习--cb+cf 初见
    耳机的阻抗和灵敏度问题
    java中常见的几种Runtimeexception
    java泛型
    ubuntu安装opencv
    ubuntu12.04静态ip设置问题
    Graph Theory
    SQL简单上手教程
    C++ 构造函数、拷贝构造函数和赋值运算符重载
    C语言函数调用栈
  • 原文地址:https://www.cnblogs.com/handsomehuo/p/15190312.html
Copyright © 2011-2022 走看看