• 2-1-文件系统:存储设计


    一、磁盘组成:

    • 圆形的碟片: 数据记录位置
    • 机械手臂: 磁头,擦写数据
    • 主轴马达: 转动碟片
    • 分区(早期柱面,现在扇区)
      • 扇区,最小物理存储单位,512B或者4KB
      • 柱面,扇区组成的一个圆
    • 磁盘分区表
      • MBR分区表(第一个扇区最重要,包含主要信息)
        • 主引导记录 446b
        • 分区表 64b
      • GPT

    二、文件系统

    索引式文件系统

    超级区块: 整个文件系统整体信息,包括inode和数据区块的总量,使用量,剩余量
    inode:   记录文件属性及数据实际存储的区块编号,一个文件对应一个inode
    数据区块: 记录数据的内容,一个inode对应一个或者多个数据区块

    FAT

    链式存储

    三、linux ext2文件系统

    1、整体结构

    Boot Sector: 一个,启动引导程序
    区块群组: 多个

    2、 区块群组中各部分存储数据

    3、目录树&目录&文件

    目录树
    1、文件系统挂载时,系统会分配一个固定的inode给根目录 / 
    2、所有的目录及文件操作从根目录出发,根据目录层次链接出来一颗目录树 

    1、上图中,蓝色圈中标识目录,红色标识文件,橘黄色标识数块
    2、每一个目录与文件对对应唯一的inode节点
    3、目录inode:
    存储当前目录下所有目录及文件的inode 编号
    存储当前inode,即 ./ 目录
    存储父节点inode,即 ../ 目录

    4、常用操作 

    查看目录&文件 ls /tmp/
    1、从系统挂载点信息中,获取目录 / 的 inode-1 信息
    2、从 inode-1 找到目录 tmp/ 的 inode-2 信息
    3、从 inode-2 中取出所有子节点的文件及目录名
    4、遍历子节点显示名称,并从子节点inode取出相关信息显示
    新建目录 mkdir /tmp/test_dir
    1、从系统挂载点信息中,获取目录 / 的 inode-1 信息
    2、从 inode-1 找到目录 tmp/ 的 inode-2 信息
    3、从inode对照表中找到一个未使用的 inode-3, 填充inode节点信息
    4、将 inode-3 放置到 inode-2 子节点列表(存储到数据区块)中,关联目录名 test_dir/
    新建文件 touch /tmp/+
    1、从系统挂载点信息中,获取目录 / 的 inode-1 信息
    2、从 inode-1 找到目录 tmp/ 的 inode-2 信息
    3、从inode对照表中找到一个未使用的 inode-4, 填充inode节点信息
    4、将 inode-4 放置到 inode-2 子节点列表(存储到数据区块)中,关联文件名 test_file.txt
    写数据  echo 'this is a test.' >> /tmp/test_file.txt
    1、从系统挂载点信息中,获取目录 / 的 inode-1 信息
    2、从 inode-1 找到目录 tmp/ 的 inode-2 信息
    3、从 inode-1 找到文件 test_file.txt 的 inode-4 信息
    3、根据数据大小,从区块对照表中找到未使用的数据区块,并写入数据
    4、将数据区块编号写入 inode-4节点区块信息(存储到数据区块)
    删除文件&目录 rm -r /tmp/test_dir/ 
    1、从系统挂载点信息中,获取目录 / 的 inode-1 信息
    2、从 inode-1 找到目录 tmp/ 的 inode-2 信息
    3、从 inode-2 找到目录 test_dir/ 的 inode-3 信息
    4、从 inode-2 子节点列表中,删除目录名 test_dir/及节点 inode-3
    硬链接

    软链接 

    2021-07-10

  • 相关阅读:
    javascript里面this机制的几个例子
    把List<string>集合,编程string,并以“,”号分割
    比较集合List<T>集合,前后多了哪些数据,少了哪些数据Except
    c# Web.config中 windows连接数据库
    MVC之图片验证码
    匿名函数-简单实例
    c# 如何找到项目中图片的相对路径
    MVC下 把数据库中的byte[]值保存成图片,并显示在view页面
    MVC下form表单一次上传多种类型的图片(每种类型的图片可以上传多张)
    关于Visual Studio未能加载各种Package包的解决
  • 原文地址:https://www.cnblogs.com/lamp-lrh/p/14988745.html
Copyright © 2020-2023  润新知