zoukankan      html  css  js  c++  java
  • linux文件系统

    ext2文件系统示意图

    启动扇区:安装启动引导程序MBR
    data block:用于放置文件内容,格式化时每个block的大小就固定了,并且每个block都有编号,每个block最多只能放一个文件的数据
    inode table:存放inode信息,inode重点介绍
    inode记录的信息主要包括:
        • 文件访问模式:r w x
        • 文件所有者与组
        • 文件大小
        • 文件创建或改变的时间
        • 最近一次读取的时间
        • 最近修改的时间
        • 定义文件特征的标志,如SetUID
        • 文件真正内容指向
              每个inode大小为固定的128bytes,每个文件对应一个inode,系统读取文件时先找到inode,然后分析inode所记录的权限与用户是否符合,符合才能开始读取block的内容,inode结构如下:
    文件系统描述:记录每个block group的开始于结束的block号码,以及每个区段(superblock、bitmap、inodemap、datablock)分别介于哪个block号码之间,可以用dumpe2fs查看
    block bitmap:记录哪些block是使用的和未使用的
    inode bitmap:记录哪些inode是使用的和未使用的
     
    与目录树的关系:
    每一个目录同样对应一个inode,inode中记录该目录的相关权限和属性,该inode对应的block中记录在这个目录下的文件名与该文件名占用的inode号码数据,示意图如下
    因此目录所占的空间均为block大小的整数倍

     

    目录树的读取过程(以读取/etc/passwd文件为例):

    连接文件
     
    硬连接:文件内容是与inode相关的,文件名是与目录相关的,如果某个文件名对应到某个文件的inode号码,这就是一条硬连接
     
    举例来说:假设在我的/home/yg目录下有一个test文件:

     可以看到该文件inode序号为399406,目前只有一个连接指向它,然后我们创建一个硬连接test_link指向它,可以看到test test_link指向的是同一个inode,因而连接数变为2

    硬连接的实际示意图如下:

     

    删除文件时,只有当指向文件实际内容上所有的硬连接都被删除,才会将文件内容删除~硬连接不能跨文件系统,也不支持目录
     
    符号连接(软连接,类似windows的快捷方式)
    符号连接是一个新文件,文件的内容就是指向文件的文件名,举例来讲,对/home/yg/test文件创建符号连接/root/symbol_link

     

     示意图如下:

     

    连接文件的内容就是目标文件的文件名 /home/yg/test 正好13个字节,和命令行中显示的结果一样。若文件被删除,则通过软连接将会访问失败。

  • 相关阅读:
    Browsermob-Proxy 备忘
    Restic 备份工具
    GP刷新实体视图
    SDKMAN安装使用
    The requested module '/node_modules/.vite/vue.js?v=65afd58f' does not provide an export named 'default'
    Python——执行打包提示 ‘pyinstaller‘ 不是内部或外部命令,也不是可运行的程序
    python 打包exe 方法
    Python使用阿里云镜像
    使用Python项目生成所有依赖包的清单方式
    Git GuiUI的乱码问题如何解决
  • 原文地址:https://www.cnblogs.com/yangang92/p/7350360.html
Copyright © 2011-2022 走看看