zoukankan      html  css  js  c++  java
  • 20191310李烨龙第十一章读书笔记

    第十一章读书笔记


    知识点归纳

    EXT2文件系统

    ​ 一个磁盘可以划分成多个分区,每个分区必须先用格式化工具(例如某种mkfs命令)格式化成某种格式的文件系统,然后才能存储文件,格式化的过程会在磁盘上写一些管理存储布局的信息。下图是一个磁盘分区格式化成ext2文件系统后的存储布局。

    ext2文件系统的总体存储布局

    ​ 一个很宏观的结构图:

    这里写图片描述

    块位图和节点位图

    在EXT2文件系统中,采用位图描述数据块和索引节点的使用情况,每个块组中占用两个块,即一个用来描述该数据块的使用情况,另一个描述该组索引节点的使用情况。这两个块分别称为数据位图块和索引节点位图块。数据位图块中的每一位表示该块组中的每一个块的使用情况,如果为0,则表示相应数据块空闲,如果是1,则表示已分配。

    索引节点表

    每个块组中的索引节点都存储在各自的索引节点表中,并且按索引节点号依次存储。索引节点表通常占好几个数据块,索引节点表所占的块使用时也想普通的数据块一样被调入块高速缓存。

    EXT2整个磁盘的逻辑结构如图所示:

    img

    EXT2超级块

    ​ (Super Block)超级块中包含了描述文件系统基本尺寸和形态的信息。文件系统管理器利用他们来使用和维护文件系统。EXT2超级块是用来描述EXT2文件系统整体信息的数据结构,是EXT2的核心所在。超级块经函数ext2_fill_supter读入后,又在内存中建立一个映像super_block.u.ext2_sb_info结构。

    块组描述符表

    ​ (GDT,Group Descriptor Table)由很多块组描述符组成,整个分区分成多个块组就对应有多少个块组描述符。
    ​ 每个块组描述符存储一个块组的描述信息,如在这个块组中从哪里开始是inode Table,从哪里开始是Data Blocks,空闲的inode和数据块还有多少个等等。块组描述符在每个块组的开头都有一份拷贝。

    块位图

    ​ (Block Bitmap)用来描述整个块组中哪些块已用哪些块空闲。块位图本身占一个块,其中的每个bit代表本块组的一个block,这个bit为1代表该块已用,为0表示空闲可用。假设格式化时block大小为1KB,这样大小的一个块位图就可以表示1024*8个块的占用情况,因此一个块组最多可以有10248个块。

    inode位图

    ​ (inode Bitmap)和块位图类似,本身占一个块,其中每个bit表示一个inode是否空闲可用。 Inode bitmap的作用是记录block group中Inode区域的使用情况,Ext文件系统中一个block group中可以有16384个Inode,代表着这个Ext文件系统中一个block group最多可以描述16384个文件。

    inode表

    ​ (inode Table)由一个块组中的所有inode组成。一个文件除了数据需要存储之外,一些描述信息也需要存储,如文件类型,权限,文件大小,创建、修改、访问时间等,这些信息存在inode中而不是数据块中。inode表占多少个块在格式化时就要写入块组描述符中。 在Ext2/Ext3文件系统中,每个文件在磁盘上的位置都由文件系统block group中的一个Inode指针进行索引,Inode将会把具体的位置指向一些真正记录文件数据的block块,需要注意的是这些block可能和Inode同属于一个block group也可能分属于不同的block group。我们把文件系统上这些真实记录文件数据的block称为Data blocks。

    数据块

    ​ (Data Block)是用来放置文件内容数据的地方。根据不同的文件类型有以下几种情况:
    ​ 对于普通文件,文件的数据存储在数据块中。
    ​ 对于目录,该目录下的所有文件名和目录名存储在所在目录的数据块中,除了文件名外,ls -l命令看到的其它信息保存在该文件的inode中。
    ​ 对于符合链接,如果目标路径名较短则直接保存在inode中,如果较长则分配一个数据块来保存。
    设备文件、FIFO和socket等特殊文件没有数据块。


    问题与解决思路


    实践内容

    1.fdisk实践

    ​ 创建分区

    image-20211009211936591

    ​ 打印分区表

    image-20211009212023594

    ​ 显示所有文件系统类型的十六进制唯一值

    image-20211009212144825

    ​ 写入修改磁盘分区

    image-20211009212234069

    2.mkfs实践

    ​ 使用1440(1KB)个块将mydisk格式化为EXT2文件系统,Linux的mkfs会在根目录下创建一个默认的lost+found目录。接着挂载到根文件系统中的现有目录中,/mnt目录通常用于挂载其他文件系统,由于虚拟文件系统不是真正的设备,它们必须作为循环设备挂载。挂载后的设备使用完成后,将cd从/mnt中取出。

    image-20211009213548854

    ​ 不带任何参数的mount会显示Linux系统所有挂载设备。

    image-20211009213945227

    ​ 虚拟磁盘如果包含多个分区,需要将这些分区与虚拟设备关联起来。

    此处还不是很明确

    image-20211009214650245

    3.链接文件实践

    ​ 硬链接,可以直接在新路径下创建文件并链接到旧路径。

    ​ 硬链接特征:

    • 源文件和硬链接文件使用相同的 Inode 和 Block
    • 修改任意一个文件,另一个都改变
    • 删除任意一个文件,另一个都能使用
    • 硬链接标记不清,很难确认硬链接文件位置,不建议使用
    • 硬链接不能链接目录
    • 硬链接不能跨分区

    image-20211010144352722

    ​ 软链接特征:

    • 软链接和源文件使用不同的 Inode 和 Block
    • 两个文件修改任意一个,另一个都改变
    • 删除软链接,源文件不受影响;删除源文件,软链接不能使用
    • 软链接没有实际数据,只保存源文件的 Inode,不论源文件多大,软链接大小不变
    • 软链接的权限是最大权限 lrwxrwxrwx.,但是由于没有实际数据,最终访问时需要参考源文件权限
    • 软链接可以链接目录
    • 软链接可以跨分区
    • 软链接特征明显,建议使用软连接

    image-20211010145809852

  • 相关阅读:
    VMware安装Centos7过程记载
    php服务器设置指示
    php变化变量
    php参数
    php变量类型
    php外界PHP变量
    php语句的脱离方法
    PHP算术操作符
    PHP通过调用传递(Passingbyreference)
    php初始化数组
  • 原文地址:https://www.cnblogs.com/sisterben/p/15417755.html
Copyright © 2011-2022 走看看