美文网首页Linux
Linux磁盘与文件系统管理

Linux磁盘与文件系统管理

作者: wangchuang2017 | 来源:发表于2018-11-09 22:30 被阅读4次

    Linux磁盘与文件系统管理

    Linux磁盘与文件管理系统 2017-06-12 09:41:28 64 0 0

    一:磁盘与储存设备

    image

    实际运行时,主轴马达让盘片转动,然后机械手臂可伸展让磁头在盘片上头进行读写的动作。

    由于单一盘片的容量有限,因此有的磁盘内部会有两个以上的盘片

    image

    每个小区块就是磁盘的最小物理储存单位,称为扇区(sector)

    同一个同心圆的扇区组成的圆就是所谓的 磁道(track)

    由于磁盘里可能有多个盘片,因此所有盘片上的同义磁道可以组成 柱面(cylinder)

    因为外圈的扇区较多,数据的读写通常会由外圈开始往内写

    扇区容量 512Byte -- 4kByte

    SATA接口:

    image

    SAS接口:

    早期工作站或者大型电脑,为了读写速度和稳定性,大多使用scsi这种高阶接口

    发展值串行式SCSI(Serial Attached SCSI, SAS)

    速度快于sata 而且连接的sas硬盘的盘片的转速与传输的速度也比sata好

    image

    USB接口:

    image

    固态硬盘(Solid State Disk):

    传统硬盘需要驱动马达转动盘片-->造成严重的磁盘读取延迟(你需要知道数据在哪个扇区上,然后命令马达开始转,然后再让磁头读取正确的数据。如果数据放置的比较离散,读取的速度延迟会更明显)

    于是又厂商用闪存制作大容量的设备,接口也是sata,sas。虽然已经不能成为是磁盘,都是内存。

    二:各硬件设备在linux中的文件名

    在Linux中所有设备都被当做文件来对待

    image

    三:磁盘分区

    正常的实体机器大多使用/dev/sd[a-p]

    虚拟机环境下,为了加速,并不是正规的磁盘界面。可能会使用/dev/vd[a-p]

    但是没有一定的顺序,与实际插槽代号关系不大,使用侦测到的顺序来决定设备文件名。

    整颗磁盘的第一个扇区特别重要,因为记录了整颗磁盘的重要信息。

    早期磁盘第一个扇区里面含有重要信息称为MBR(Master Boot Record)格式

    后来由于磁盘容量不断增大,造成读写困难,后来又多了一种新的磁盘分区格式成为GPT(GUID partition table)

    MBR 与 GPT 磁盘分区表

    所有盘片的同一磁道被成为柱面,通常为文件系统的最小单位,也是分区的最小单位

    但是近年来GPT 可以达到64bit记录功能的分区表,现在甚至可以适用扇区作为分区单位。

    MBR格式分区格式与限制

    早期的Linux为了相容与windows的磁盘,因此使用的是支持windows的MBR(主要开机记录区)的方式来处理

    开机管理程序分区表 通常放在磁盘的第一扇区

    第一扇区包含:

    • 主要开机记录表MBR,可以安装开机管理程序的地方有446Byte
    • 分区表(partition table): 记录整颗硬盘分区的状态,有64Bytes

    由于分区表所在的区块仅有 64 Byte 容量,因此最多仅能有四组记录区,每组记录了该区段的起始于结束柱面号码。

    image

    上图的分区在linux的设备名为:

    P1:/dev/sda1 字母后会再接一个数字,该数字与该分区的位置有关

    P2: /dev/sda2

    p3: /dev/sda3

    ...

    • 所谓的“分区”只是针对64Bytes 的分区表进行设置
    • 磁盘默认的分区表仅能写入四组分组信息
    • 分为主要(Primary)或延伸(Extendted)分区
    • 分区的最小单位通常为柱面
    • 主要分区和延伸分区最多可以有四个
    • 延伸分区最多只能有一个(操作系统的限制)
    • 能够被格式化后作为储存分区的为主要分区和逻辑分区,延伸分区无法被格式化。

    分区的作用:

    • 数据的安全性
    • 系统的性能,加入当数据需要读取自该分区时,磁盘只会搜索该分区范围内的柱面--即将数据集中,有助于读取 的速度和性能
    image

    用额外的扇区记录更多的分区信息

    延伸分区并不是只占一个区块,而是分布在每个分区的最前面的几个扇区来记载分区信息

    由延伸分区继续切出来的分区-- 逻辑分区,可使用的柱面范围为延伸分区所设置的范围

    image

    逻辑分区一般从5开始

    image

    上图蓝色部分可以整合为一个新的分区,因为同属延伸分区的逻辑分区,只要将两个分区删除,再重新建立一个新的分区,就能在不影响其他分区的情况下,将两个分区的容量整合为一个

    下图不可以,因为两部分分别属于主分区与逻辑分区,除非将延伸分区破坏掉再重新分区,会影响到所有的逻辑分区。

    • 第一扇区记录的分区记录的MBR非常重要,几乎只要读取硬盘都会先有这个分区读起。

    • P+P+P+E 将剩下的分给延伸分区,再以逻辑分区规划逻辑分区。同时,考虑到磁盘的连续性,一般建议将延伸分区的柱面号码分配在最后面的柱面内。

    因为MBR分区每组分区表仅有16Bytes ,因此可记录的信息相当有限,所以出现问题:

    • 操作系统无法抓取到2.2T 以上的磁盘容量
    • MBR仅有一个区块,若被破坏后,经常无法或很难救援
    • 开机区块仅446Bytes,无法容纳较多的程序码

    GUID partition 磁盘分区表

    目前已有4K的扇区,逻辑区块位址*(Logical Block Address,LBA)

    GPT将所有磁盘区块以LBA(默认512Bytes) 来规划,而第一个LBA0

    GPT用了34 个LBA 记录分区信息,而且磁盘最后的33个LBA也拿来作为备份。

    image
    • LBA0(MBR相容区块)

      与MBR相似,也分为两个部分,储存了第一阶段的开机管理程序,而在元来的分区表分区内,相容模式,仅放入一个特殊标志的分区(表明GPT),没有gtp分区的磁盘管理分区不能修改此分区的信息

    • LB1(GPT表头记录)

      这个部分记录了分区表本身的位置与大小,同时记录的备份用的GPT分区方位的位置,以及分区表的检验机制码(操作系统可以据此判断gpt是否争取,错误的话就读取备份)

    • LBA2-33(实际分区记录信息处),总共可以有432/4=128,GPT在每笔记录中分别提供了64bit记录开始结束的扇区号码,对于单一分区来说最大的容量限制为264512 = 233TB,没有所谓的主分区,逻辑分区

    二 :

    1 文件系统特性

    磁盘分区后需要格式化,之后操作系统才能使用这个文件系统。

    原因:因为每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要将分区格式化,成为操作系统能够利用的“文件系统格式”

    传统的磁盘与文件系统应用中,一个问去就是只能被格式化成为一个文件系统。所以我们可以说或一个file system就是一个partition 。

    现在有LVM与软件磁盘阵列(sortware raid) 这些技术可以将一个分区格式化为多个文件系统。也能将多个分区合并为一个文件系统(LVM,RAID)!

    通常可以称呼一个可被挂载的数据为一个文件系统而不是一个分区

    文件系统通常会将这两部分的数据分别存放在不同的区块。

    • superblock 记录此filesystem 的整体信息,包括inode与block的总量,使用量,剩余量。
    • inode 记录文件的属性,一个文件记录一个inode,同时记录此文件的数据所在的block 号码
    • 实际记录文件的内容,若文件太大,会占用多个。
    • inode 和 block 都有编号,每个文件占用一个inode,有block号码,可以迅速找到数据读取

    [图片上传失败...(image-2fbac8-1541773585460)]

    所谓的索引式文件系统

    作为对比 一般u盘为FAT没有inode

    image

    如果一个文件写入的block分散的太过厉害是,磁头将需要多转几圈才能读到所有数据

    • - 磁盘重组:因为文件写入的block太过离散,此时文件读取信能会变的很差,可以通过磁盘重组将文件重新汇聚在一起,FAT经常需要磁盘重组

    2 Linux的EXT2文件系统(inode)

    [图片上传失败...(image-5d56dc-1541773585460)]

    ext2文件系统在格式化的时候基本上区分为多个区块群组(BLOCK GROUP),便于管理

    最开始有一个开机扇区*boot sector),可以安装开机管理程序,能够将不同的开机管理程序安装到个别的文件系统最前端,而不用覆盖整颗磁盘唯一的MBR,才能制作出多重开机的环境。

    • data block

      [图片上传失败...(image-49ef96-1541773585460)]

    基本限制:

    • 原则上block的大小与数量在格式化完就不能再改变了,除非重新格式化;

    • 每个block最多只能放置一个文件的数据,同一文件占用多个

    • 若文件小于block,则block的剩余容量就不能再使用了(会浪费磁盘空间),小文件越多,越浪费

    • 而block较小,大型文件会占用更多的block,而inode也要记录更多的拜咯参考号码,此时可能导致文件系统不良的读写性能

    • inode table

    image
    • 每个inode固定大小为128Bytes(新的ext4和xfs可设置到256)
    • 每个文件占用一个inode,因此文件系统能穿件的文件数量与inode数量有关
    • 系统在读取文件时先找到inode,然后确定使用者的权限是否符合,然后才开始读取数据
    image.png

    因为inode固定大小的限制,所以使用间接的方法:使用额外的block作为号码记录,如果文件太大

    image

    superblock

    • block和inode的总量
    • 未使用与已使用的inode和block量
    • block和inode的大小
    • filesystem 的挂载时间,最近一次写入时间,最近一次检验磁盘fsck的时间等文件系统相关信息
    • 一个valid bit数值,若已经被挂载valid为0否则为1
    • 可用dumpe2fs 指令调出来观察
    • 一个文件系统应该仅有1个superblock 其他作为备份

    **Filesystem Description **

    • 每个block group 的开始于结束的block号码,以及说明 每个区段的superblock,bitmap,inode map, data block)

    block bitmap

    • 可以知道哪里有空的block ,可以在新增文件的时候用到
    • 同时删除某些文件的时候,相对的block号码的标志要改为未使用

    inode bitmap(inode 对照表)

    • 与block bitmap 类似
    image

    4 与目录树的关系

    当在Linux的文件系统创建一个目录时,文件系统会分配一个inode与至少一块block给该目录

    inode记录该目录的相关权限和属性,以及分配到的block号码

    而block这是记录在这个目录下的文件名,

    image

    文件名记录在目录的block中

    具体的读取过程看书355

    若文件太过离散,还是会发生读取效率低落的问题。可以将整个filesystem内的数据全部复制出来,将filesystem重新格式化,再将数据复制回去即可解决该问题。

    此外若果filesystem真特别大,当一个文件分别记录在这个文件系统的最前面与最后面时,磁头移动幅度过大,也会造成读取性能的低落。

    5 EXT2/EXT3/EXT4文件的存取与日志式文件系统的功能

    在创建一个新目录时:

    1 先确定使用者对于新增文件的目录是否具有wx的权限

    2 根据inode bitmap 找到没有使用的inode号码,将新的文件权限/属性写入;

    3根据block bitmap找到文件中没有使用的block号码,并将实际的数据写入block中,且更新inode的block指向数据;

    4将刚刚写入的inode与block数据同步更新inode bitmap 与block bitmap 更新super block的内容

    数据存放区:inode table data block

    中介数据: super block block bitmap inode bitmap

    数据的不一致状态( Inconsisten)状态

    当新增动作被中断(突然断电,系统核心发生错误),写入的数据仅有 inode table 以及data block,最后一个同步更新中介数据的步骤没有做完,此时会发生metadata的内容与实际存放区不一致的情况。

    在早期的ext2中,系统会在开机的时候 根据 super block 中巨鹿的 valid bit 以及 file system state( clean or not)

    决定是否进行数据的一致性检查,e2fsck

    这样的检查非常的费时,需要比对 整个 filesystem

    日志文件系统的兴起 (Journaling filesystem)

    为了避免上述情况,在filesystem 中规划处一个区块,该区块专门记录写入或者修订文件时的步骤

    在记录过程中发生了问题,系统只需检查日志记录区块,就能找到发生问题的区块

    ext3/ext4

    6 Linux文件系统的运行

    Linux的非同步处理:

    当系统载入一个文件到内存后,如果该文件没有被修改,状态为(clean),如果被修改(dirty),系统会不定时的将内存中设置为dirty 的文件写入磁盘。

    也可以用 sync 指令来手动强迫写入磁盘

    • 系统会将常用的文件数据放到内存的缓冲区,以加速文件系统的读/写,因此linux的实体内存最后都会被用光
    • 正常关机是,关机指令主动调用 sync 将内存的数据写回磁盘
    • 若非正常关机,由于数据尚未写回磁盘内,因此开机后需要花很多时间检查磁盘,甚至可能导致文件系统(磁盘的损毁)

    7 挂载点的意义 mount point

    每个filesystem 都有独立的inode/block/superblock 等信息,这个文件系统要能连接到目录树才能被使用。

    将文件系统与目录树结合的动作成为挂载

    挂载点一定是目录,该目录为进入该文件系统的入口。

    **8 **

    查看你的linux 支持的文件系统有哪些,可以查看

    ls -l /lib/modules/$(uname -r )/kernel/fs

    cat /proc/filesystems 可以查看目前已载入内存中的文件系统

    image

    9 XFS文件系统简介

    centOS7 开始使用XFS

    ext文件系统的缺陷:

    • 支持度很广,但是格式化非常慢 :在格式化时,需要预先规划处所有的inode;block/meta data,没有动态配置的做法,由于现在硬盘容量激增,格式化时候预先分配inode block就需要花费巨大时间

    二:文件系统的简单操作

    image image
    • /proc 挂载点是linux 系统所需要载入的系统数据
    • /dev/shm 利用内存虚拟出来的磁盘空间
    du image

    2 实体链接与符号链接 :ln

    • Hard Link (实体链接)
    • 每个文件会占用一个inode 文件内容由indoe的记录来指向;想要读取该文件,必须要经过目录记录的文件名来指向到正确的inode号码才能读取
    • 其实文件名只与目录有关,文件内容则与inode有关
    • hard link 只是在某个目录的block新增一个关联文件名链接到某inode号码的关键记录,即不会增加inode也不会耗用block
    • 不能跨 filesystem
    • 不能link 目录
    image
    • Symbolic Link(符号链接)
    • 就是创建一个独立文件,让数据的读取指向其link 的文件名
    • 由symbolic 创建的文件为一个独立的新文件,会占用inode和block
    • 可以链接目录,当进入链接目录时,其实进入的是链接的目录
    image

    要制作链接文件 使用ln

    image

    三 磁盘的分区、格式化、检验与挂载

    当系统里新增一块硬盘时

    1 对磁盘进行分区,创建可用的partition

    2 对该partition格式化,以创建系统可用的filesystem

    3可以对刚创建好的filesystem检查

    4在Linux系统上,需要创建挂载点,即目录,并将其挂载上来

    1 观察磁盘分区状态

    • **lsblk **
    image
    • UUID> 全域单一识别码(universally unique identifer) 可以拿来作为挂载或者使用该设备/文件系统

    • **使用 blkid **

    • parted 观察分区表

    2 磁盘分区 gdisk/fdisk

    MBR -- fdisk

    **GPT -- gdisk **

    参考鸟哥

    **3 make filesystem **

    mkfs

    image

    4 文件系统检验

    image

    参考鸟哥 第七章

    文件系统挂载与卸载

    相关文章

      网友评论

        本文标题:Linux磁盘与文件系统管理

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