• Linux基础篇-逻辑卷管理


    在这里插入图片描述

    首先我们要知道,逻辑卷也来源于物理磁盘,只是将他们统一定义和重新分配空间。这一点非常重要,只有理解了这一定才能更好的理解逻辑卷和卷组。
    本文介绍的是最常用的线性卷
    什么是线性卷?复杂的定义没必要去看,简单来说就是1+1=2
    你有两块磁盘,一块60G,一块30G,他们两块盘组成线性卷,就是60+30=90G
    在这里插入图片描述

    一、定义

    物理卷:故名思意,就是实际的磁盘。
    卷组:将实际的物理卷按特定的方法组合到一起。
    逻辑卷:对卷组的空间进行划分,形成新的分区。

    二、分析

    可以把物理卷想象成一个一个的相同,或者不同的杯子(暂时想成相同大小的杯子吧,更容易理解);
    在这里插入图片描述

    卷组就是将几个杯子放一起,来实现一个杯子完成不了的功能;
    在这里插入图片描述
    逻辑卷就是对卷组中划分出来空间的一种叫法。我们假设最上层的一个杯子是分出来的第一个逻辑卷。
    对逻辑卷的扩容就是再给他加一层,这样第一层加第二层就变成了一个逻辑卷。
    对卷组的扩容就是给底部再加入逻辑卷,也就是单独的杯子。

    注意:这种想象类比的方法只可作为辅助理解线性卷,其他类型的逻辑卷并不能用这个例子解释!!!

    三、LVM相关命令:

    1.物理卷

    查看物理卷:pvs,pvscan,pvdisplay

    这三个命令显示的内容很显而易见,根据需要查询的信息的不同选择自己需要的命令实现目的就可以

    [root@localhost ~]# pvs
      PV         VG     Fmt  Attr PSize   PFree
      /dev/sda2  centos lvm2 a--  <49.00g 4.00m
    [root@localhost ~]# pvscan
      PV /dev/sda2   VG centos          lvm2 [<49.00 GiB / 4.00 MiB free]
      Total: 1 [<49.00 GiB] / in use: 1 [<49.00 GiB] / in no VG: 0 [0   ]
    [root@localhost ~]# pvdisplay
      --- Physical volume ---
      PV Name               /dev/sda2
      VG Name               centos
      PV Size               <49.00 GiB / not usable 3.00 MiB
      Allocatable           yes
      PE Size               4.00 MiB
      Total PE              12543
      Free PE               1
      Allocated PE          12542
      PV UUID               F8i4v0-kxMy-8AzN-XadE-zXbt-m8WT-K8p8Jp
    
    

    创建物理卷:pvcreate

    用法:pvcreate 磁盘名
    这里将我新添加的磁盘sdb新建为物理卷,使用pvs命令查看物理卷

    [root@localhost ~]# pvs
      PV         VG     Fmt  Attr PSize   PFree
      /dev/sda2  centos lvm2 a--  <49.00g 4.00m
    [root@localhost ~]# lsblk
    NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda               8:0    0   50G  0 disk
    ├─sda1            8:1    0    1G  0 part /boot
    └─sda2            8:2    0   49G  0 part
      ├─centos-root 253:0    0 47.5G  0 lvm  /
      └─centos-swap 253:1    0  1.5G  0 lvm  [SWAP]
    sdb               8:16   0    8G  0 disk
    sdc               8:32   0    5G  0 disk
    sr0              11:0    1  4.4G  0 rom
    [root@localhost ~]# pvcreate /dev/sdb
      Physical volume "/dev/sdb" successfully created.
    [root@localhost ~]# pvs
      PV         VG     Fmt  Attr PSize   PFree
      /dev/sda2  centos lvm2 a--  <49.00g 4.00m
      /dev/sdb          lvm2 ---    8.00g 8.00g
    
    

    删除物理卷:pvremove

    需要注意的是,如果物理卷上层有卷组和逻辑卷,删除了物理卷,剧组和逻辑卷的内容也会丢失!!!

    [root@localhost ~]# pvs
      PV         VG     Fmt  Attr PSize   PFree
      /dev/sda2  centos lvm2 a--  <49.00g 4.00m
      /dev/sdb          lvm2 ---    8.00g 8.00g
    [root@localhost ~]# pvremove /dev/sdb
      Labels on physical volume "/dev/sdb" successfully wiped.
    [root@localhost ~]# pvs
      PV         VG     Fmt  Attr PSize   PFree
      /dev/sda2  centos lvm2 a--  <49.00g 4.00m
    
    

    2.卷组

    查看卷组:vgs,vgscan,vgdisplay

    当逻辑卷组合成卷组之后,这时候单个物理磁盘无法满足的功能(例如:单个盘空间不足,磁盘太多挂载麻烦,不方便统一读写等),这时候就可以把卷组看成物理磁盘,可以对它进行分区和格式化等操作。

    [root@localhost ~]# vgs
      VG     #PV #LV #SN Attr   VSize   VFree
      centos   1   2   0 wz--n- <49.00g 4.00m
    [root@localhost ~]# vgscan
      Reading volume groups from cache.
      Found volume group "centos" using metadata type lvm2
    [root@localhost ~]# vgdisplay
      --- Volume group ---
      VG Name               centos
      System ID
      Format                lvm2
      Metadata Areas        1
      Metadata Sequence No  3
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                2
      Open LV               2
      Max PV                0
      Cur PV                1
      Act PV                1
      VG Size               <49.00 GiB
      PE Size               4.00 MiB
      Total PE              12543
      Alloc PE / Size       12542 / 48.99 GiB
      Free  PE / Size       1 / 4.00 MiB
      VG UUID               sL4abi-hl7c-tFoT-fWtG-OLH0-0PyV-DVyxLR
    
    

    创建卷组:vgcreate

    用法: vgcreate 卷组名 需要添加到卷组的物理卷(支持添加多个物理卷)

    [root@localhost ~]# vgs
      VG     #PV #LV #SN Attr   VSize   VFree
      centos   1   2   0 wz--n- <49.00g 4.00m
    [root@localhost ~]# vgcreate myvg /dev/sdb /dev/sdc
      Volume group "myvg" successfully created
    [root@localhost ~]# vgs
      VG     #PV #LV #SN Attr   VSize   VFree
      centos   1   2   0 wz--n- <49.00g  4.00m
      myvg     2   0   0 wz--n-  12.99g 12.99g
    
    

    删除卷组:vgremove

    同样,需要注意的是,删除了卷组,卷组所在逻辑卷中保存的数据也会丢失,需要谨慎操作!!!

    [root@localhost ~]# vgs
      VG     #PV #LV #SN Attr   VSize   VFree
      centos   1   2   0 wz--n- <49.00g  4.00m
      myvg     2   0   0 wz--n-  12.99g 12.99g
    [root@localhost ~]# vgremove myvg
      Volume group "myvg" successfully removed
    [root@localhost ~]# vgs
      VG     #PV #LV #SN Attr   VSize   VFree
      centos   1   2   0 wz--n- <49.00g 4.00m
    
    

    3.逻辑卷

    查看逻辑卷:lvs,lvscan,lvdisplay

    逻辑卷类比到物理磁盘来看的话,就是一个个的分区,逻辑卷的详细信息会显示出当前逻辑卷位于哪个卷组以及物理卷

    [root@localhost ~]# lvs
      LV   VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      root centos -wi-ao---- 47.49g
      swap centos -wi-ao----  1.50g
    [root@localhost ~]# lvscan
      ACTIVE            '/dev/centos/swap' [1.50 GiB] inherit
      ACTIVE            '/dev/centos/root' [47.49 GiB] inherit
    [root@localhost ~]# lvdisplay
      --- Logical volume ---
      LV Path                /dev/centos/swap
      LV Name                swap
      VG Name                centos
      LV UUID                Ly4QAv-cvlm-2Nji-Z3Dq-cvE4-8TYk-fh2Vmi
      LV Write Access        read/write
      LV Creation host, time localhost, 2023-05-26 05:30:01 +0800
      LV Status              available
      # open                 2
      LV Size                1.50 GiB
      Current LE             384
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     8192
      Block device           253:1
    
      --- Logical volume ---
      LV Path                /dev/centos/root
      LV Name                root
      VG Name                centos
      LV UUID                1cd8Xo-dmHc-scj7-Pczc-NINP-SYYq-GQcOw2
      LV Write Access        read/write
      LV Creation host, time localhost, 2023-05-26 05:30:01 +0800
      LV Status              available
      # open                 1
      LV Size                47.49 GiB
      Current LE             12158
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     8192
      Block device           253:0
    
    

    创建逻辑卷:lvcreate

    用法:lvcreate -n 逻辑卷名 -L 大小 卷组名
    在这里,我们用刚刚建好的卷组myvg来创建一个大小为500M的逻辑卷,逻辑卷名为mylv

    lvcreate -n mylv -L 500M myvg
    

    需要注意的是,创建完成的逻辑卷并不能直接使用,还需要在逻辑卷中创建文件系统,例如,我这里为逻辑卷创建xfs文件系统

    # mkfs.xfs /dev/myvg/mylv
    
    meta-data=/dev/myvg/mylv isize=512 agcount=4, agsize=32000 blks
    = sectsz=512 attr=2, projid32bit=1
    = crc=1 finobt=1, sparse=1, rmapbt=0
    = reflink=1
    data = bsize=4096 blocks=128000, imaxpct=25
    = sunit=0 swidth=0 blks
    naming =version 2 bsize=4096 ascii-ci=0, ftype=1
    log =internal log bsize=4096 blocks=1368, version=2
    = sectsz=512 sunit=0 blks, lazy-count=1
    realtime =none extsz=4096 blocks=0, rtextents=0
    Discarding blocks...Done.
    

    当格式化完成之后,我们就可以挂载逻辑卷并正常使用了

    # mount /dev/myvg/mylv /mnt
    # df -h
    Filesystem 1K-blocks Used Available Use% Mounted on
    /dev/mapper/myvg-mylv 506528 29388 477140 6% /mnt
    

    删除逻辑卷:lvremove

    1.如果逻辑卷当前已挂载,卸载该卷:

    # umount /mnt
    

    2.如果在集群环境中存在逻辑卷,则在所有其激活的节点上取消激活逻辑卷。
    首先需要使用lvdisplay命令查看逻辑卷的激活状态

    lvdisplay
    

    如果在输出中看到”LV Status”一栏显示”available”,表示逻辑卷已成功激活

    对每个这样的节点运行以下命令,我们这里的示例为单节点:
    lvchange -an vg-name/lv-name

    # lvchange -an /dev/myvg/mylv
    

    3.使用 lvremove 删除逻辑卷

    # lvremove /dev/myvg/mylv
    Do you really want to remove active logical volume "mylv"? [y/n]: y
    Logical volume "mylv1" successfully removed
    

    备注
    激活逻辑卷,使用lvchange命令,并指定-ay 参数来激活逻辑卷。例如,如果要激活名为”mylv”的逻辑卷,可以使用以下命令:

      lvchange -ay /dev/vgname/mylv
    

    其中,vgname为卷组名称,mylv为逻辑卷名称。这个命令会激活指定的逻辑卷。

    二、卷组的扩容和缩容

    卷组的扩容并不难理解,继续添加pv来扩大卷组的容量,实现的方法就是添加更多的pv

    通过添加一个或多个空闲的物理卷来增加卷组的容量

    # vgextend myvg /dev/vdb3
    Physical volume "/dev/vdb3" successfully created.
    Volume group "myvg" successfully extended
    

    三、逻辑卷的扩容和缩容

    1. 增大逻辑卷和文件系统

    要增大逻辑卷的大小,需要使用 lvextend 命令。当扩展逻辑卷时,可以指定你想要增大的量,或者指定扩展它需要达到的大小。

    先决条件

    1.有一个现有逻辑卷(LV),其中包含一个文件系统。使用 df -Th 命令确定文件系统类型。

    2.卷组中有足够的空间来扩展 LV 和文件系统。使用 vgs -o name,vgfree 命令确定可用空间。

    1.可选:如果卷组的空间不足以增大 LV,需要使用以下命令向卷组中添加新物理卷

    # vgextend myvg /dev/vdb3
    Physical volume "/dev/vdb3" successfully created.
    Volume group "myvg" successfully extended
    

    2.现在卷组足够大,根据你的需求执行以下步骤:

    按指定的大小扩展 LV,我这里是将mylv扩大到3G
    注意:是扩大到3G,不是增加3G容量!!!

    # lvextend -L 3G /dev/myvg/mylv
    Size of logical volume myvg/mylv changed from 2.00 GiB (512 extents) to 3.00 GiB (768
    extents).
    Logical volume myvg/mylv successfully resized.
    

    要扩展 mylv 逻辑卷使其占据 myvg 卷组中所有未分配的空间,请使用以下命令:

    # lvextend -l +100%FREE /dev/myvg/mylv
    Size of logical volume myvg/mylv changed from 10.00 GiB (2560 extents) to 6.35 TiB
    (1665465 extents).
    Logical volume myvg/mylv successfully resized.
    

    lvcreate 命令一样,可以使用 lvextend 命令的 -l 参数来指定扩展数目,从而增大逻辑卷的大小。还可以使用此参数指定卷组的比例或者卷组中剩余空间的比例
    注意:这里是增加3G容量!!!

     lvextend -l +3G /dev/myvg/mylv
    

    3.当lv完成扩容之后,使用以下命令重新定义逻辑卷上的文件系统大小

    因为此时的逻辑卷已经扩展,而文件系统中的记录信息并没有被同步,那这时候就需要同步文件系统中的记录
    这里的/mnt是将扩容完成之后的lv挂载到了mnt目录,而不是系统本身的mnt目录!!!

    xfs_growfs /mnt
    
    meta-data=/dev/mapper/myvg-mylv isize=512 agcount=4, agsize=65536 blks
    = sectsz=512 attr=2, projid32bit=1
    = crc=1 finobt=1, sparse=1, rmapbt=0
    = reflink=1
    data = bsize=4096 blocks=262144, imaxpct=25
    = sunit=0 swidth=0 blks
    naming =version 2 bsize=4096 ascii-ci=0, ftype=1
    log =internal log bsize=4096 blocks=2560, version=2
    = sectsz=512 sunit=0 blks, lazy-count=1
    realtime =none extsz=4096 blocks=0, rtextents=0
    data blocks changed from 262144 to 524288
    

    如果没有 -D 选项,xfs_growfs 将文件系统增大到底层设备支持的最大大小,也就是扩容之后的所有空间都会被使用,默认就是不添加参数,将扩容之后的所有空间都添加到文件系统中

    4.验证

    使用以下命令验证文件系统是否在增长:

     df -Th
    

    2. 缩小逻辑卷

    使用 lvreduce 命令来减小逻辑卷的大小

    注意:GFS2 或者 XFS 文件系统不支持缩小!!!

    如果您要缩小的逻辑卷包含一个文件系统,为了防止数据丢失,必须确定该文件系统没有使用将被缩小的逻辑卷中的空间。因此,建议在逻辑卷包含文件系统时使用 lvreduce 命令的 –resizefs 选项

    当使用这个选项时,lvreduce 命令会在缩小逻辑卷前尝试缩小文件系统。如果缩小文件系统失败,就像文件系统已满或者文件系统不支持缩小等情况, lvreduce 命令将会执行失败,且不会尝试缩小逻辑卷,更有利于数据安全。

    需要注意的是,你的需求是将文件系统缩小到某个大小还是减小某个大小!!!

    1.要将 myvg 卷组中 mylv 逻辑卷缩小到 64MB,需要使用以下命令:

    lvreduce --resizefs -L 64M myvg/mylv
    

    2.要将逻辑卷缩小64MB,需要使用以下命令

    在调整大小值前指定 - 符号表示该值将从逻辑卷的实际大小中减小。

    # lvreduce --resizefs -L -64M myvg/mylv
    

    四、卷组和逻辑卷的改名操作

    1. 重命名 LVM 逻辑卷

    1. 如果逻辑卷当前已挂载,卸载该卷:

      # umount /mnt
      

      如果你的挂载点不是mnt,使用你的挂载点替换 /mnt

    2. 重命名现有逻辑卷:

      # lvrename myvg mylv mylv1
      Renamed "mylv" to "mylv1" in volume group "myvg"
      

      通过指定设备的完整路径来重命名逻辑卷:

      # lvrename /dev/myvg/mylv /dev/myvg/mylv1
      

    2.重命名现有卷组

    # vgrename myvg myvg1
    Volume group "myvg" successfully renamed to "myvg1"
    

    总结:

    对于线性lvm的理解,还是按普通物理磁盘来类比

    pv  ----- raid0         :相当于组合为raid0来增加单个设备的容量
    vg ------ 物理磁盘       :相当于经过底层组合之后显示的一个大容量设备,比物理设备更灵活,可					                         以按需求来扩容或者缩容
    lv  ------- 磁盘分区     :相当于在设备上的分区,也需要对其进行格式化创建文件系统才可以使用
    

    好久不写博客,看到还有一篇未完成的草稿,拖了很久没有更新过博客了,索性咬咬牙写完了这篇文章,相比之前的思路,今天续写的内容实例变少了很多,但是依旧是干货满满,可能对于大部分人来说,还是没法理解lvm具体的原理,但是肯定也会对你有一点启发,后面的博客也会慢慢的更新出来,如果有特别想让我更新的内容,也可以直接私信或者评论告诉我,我抽空写出来。

  • 相关阅读:
    基于光流的视频插帧算法 TOFlow 解读教程
    CRUSE: Convolutional Recurrent U-net for Speech Enhancement
    WIN32核心编程 - 内存管理 内存页面
    SpringCloud(三)Sentinel、Seata、多级缓存
    Proteus仿真--从左往右流水灯仿真(仿真文件+程序)
    Hadoop编程——第三章:(2)Linux文件系统基础知识
    windows10下安装和配置nodejs环境
    Python爬虫第一章(图片爬取与API接口爬取)
    什么是安全运营中心(SOC),应该了解什么
    1.2.1 创建型设计模式
  • 原文地址:https://blog.csdn.net/qq_52494169/article/details/134654904