Linux分区&格式化&文件系统&LVM&扩容

硬件

磁盘由 盘片组、主轴马达、机械臂、磁头、驱动芯片和电路、接口等构成 2. 磁盘的分割
    1.每个盘片很多同心圆分割为磁道 Trace
    2.一组盘片的同径磁道叫做一个柱面 Cylinder
    3.每个磁道又被分为很多小扇面 Sector,一个扇区是 512字节
    4.磁头在读写的时候,先找磁道,然后每次读一个Sector,所以扇区是磁盘读写的基本传输单位
    5.很显然对于同一柱面上的数据,不需要重新找道,所以在读写看来具有连续性,所以将柱面当中磁盘分区的基本单位
磁盘接口
    6.IDE 排线宽,主从,一般主板上是两个接口,每个排线有两个接口,可以接两个IDE硬盘,分为主从。IDE的速度理论最大133M/s
    7.SATA 现在最常见的磁盘,接口比较窄,有 1.0、2.0、3.0 三代接口,速度分别是 150/300/600M/s
    8.SCSI 比较贵,用于大公司,磁盘上有独立处理器加速,甚至可能有cache。

操作系统

分区
    为什么分区?你家房子不分为多个小房间吗?当然是用起来更爽啊
    分区做了些啥?
        磁盘的第一扇区至关重要的,有446字节存放MBR用于引导启动,还有64字节用于存放分区表。
        简单的说,分区就是在分区表里记录每个区的开始和结尾柱面号。
        说复杂点,第一扇区只能最多记录4个区的分区表,但是我们可以在其中建立一个拓展分区,然后在拓展分区的首扇区继续去写分区表,这样就可以得到超过4个的分区。
文件系统
    为什么格式化?磁盘那么大,你用了哪些没用那些这些数据肯定要存起来吧,存哪里呢?就要有个格式吧。
    格式化做了啥?
        将一个分区划分为了两个部分,一部分存磁盘状态和文件的索引,另一部分存数据。
        存磁盘状态的叫做超级块 SuperBlock,记录了那些块可用,那些不可用,还有总大小,剩余空间
        每个文件有一个inode,对应映射表,还记录了文件的元数据,如权限等
    文件系统分类
        Linux:Ext 2/3/4, XFS
        Window: Fat32, NFS
        Ext的文件格式用多级索引的方式去找文件,比如一个文件比较小,就把它的全部块号存在inode的映射表里。如果太大就存一级的,然后一级去找二级,二级存放在数据块里某个位置,类似还有三级。。。。。
        Fat32 文件系统是windows比较老的文件系统,采用线索查找,inode只记录第一个数据块的位置,然后再第一个数据块中保存下一个位置,依次类推找到整个文件。所以需要经常整理磁盘碎片,不然查找会越来越慢。
    文件系统 是按块Block来保存数据的。
        显然Block应该是扇区的整数倍大小
        Block定得太大会使得小文件占更多空间,定得太小,使得大文件的记录开销和读写变慢。
新技术 LVM 和Software RAID
    上面说的格式化,是针对一个分区,这就是说我们如果想扩大一个文件系统是不可能的,只能重新分区。
    新技术LVM的出现,使得一个文件系统不再是直接对应一个分区,而是在物理分区和格式化之间加了一个LVM层,物理分区被LVM管理,然后提供逻辑卷给目录挂载,而格式化的定义就变成了针对一个挂载对象建立文件系统。
    RAID技术利用数据分块和并行处理的技术减少I/O排队,更高效的利用I/O总线带宽。利用多块硬盘来提速。软磁盘阵列是将RAID管理软件跑在操作系统之上,相比硬件芯片,速度慢,但是便宜。软RAID将多块磁盘合并成一个磁盘,于是提供了更灵活的使用,也在物理分区和文件系统之技安进行了隔离,加入了RAID层。

实践——动态扩容

场景:我们装系统的时候进行了分区,然后挂了一个区到 / 下,但是使用的过程中发现该目录剩余空间不够,这时候我们想扩容
不好的解决方案:在一块更大磁盘上重新分区,然后将原先磁盘 /的东西拷贝过来
好的解决方案:LVM
    现在的linux都是用LVM在管理磁盘和挂载,所以直接用LVM来将空闲空间分给 /,或者新增磁盘,分区之后加入LVM的管理,并将它的空间分给 /
命令

    准备命令:
        df 查看加载了的各个文件系统的使用情况
        df -T 可以看到文件系统的类型
        du 进入到某个目录对应的文件系统,列出这个目录或其文件在文件系统中占用的空间
        fdisk -l 查看各物理盘,和分区情况,是否分区也可以看出来,磁盘必须分区才可以使用
        fdisk 物理盘,进行分区,或修改分区

    用不到,但是别出有用的命令:
        mkfs* 这些mkfs开头的命令用于格式化,创建可挂载的文件系统,基于LVM,可格式化的是一个逻辑卷,而不基于LVM,可格式化的就是一个分区。基于LVM拓展一个逻辑卷,并不要求新加入卷组的物理卷是一个文件系统,因为只是新增了数据块,而前面的超级块,inode块只需简单修改。
        mount 用于挂载一个文件系统到某个路径
        fsck 用于检查某个文件系统,如坏道等待

    关键命令,LVM的命令
        pvcreate 一个分区 这条命令用来将一个磁盘的分区对应到一个物理卷
        pvdisplay 查看全部物理卷
        vgextend 卷组名 物理卷 这条命令将一个物理卷加入一个卷组
        lvextend -L 大小 逻辑卷名字 这条命令拓展一个逻辑卷的大小,要求是剩余空间足够
        上面完成之后并没有生效,要进行下面操作
        如果逻辑卷是 ext2/3/4 类型的文件系统,执行 resize2fs 逻辑卷名
        如果逻辑卷是 xfs 类型的文件系统,执行 xfs_growfs 逻辑卷名
原文链接:,转发请注明来源!

发表评论