lvm逻辑卷

  • lvm逻辑卷已关闭评论
  • 187 次浏览
  • A+
所属分类:linux技术
摘要

raid磁盘阵列技术,提高硬盘的读写效率,以及数据的安全,raid的缺点在于:
1.当你配置好了raid磁盘阵列组,容量的大小,已经是限定了,如果你存储的业务非常多,磁盘容量不够用的问题就会出现,你想要扩容磁盘的空间,就会非常麻烦。
2.不同的磁盘分区,相对都是独立的,没有任何联系,可能空间利用率比较低。
3.如果某一分区满了,默认磁盘管理是无法直接扩容的,只能重新的分区,重新分配容量大小,创建文件系统,很麻烦。
4.如果你要合并分区,还是得重新格式化磁盘分区,还得进行数据备份。


lvm逻辑卷

前言

raid磁盘阵列技术,提高硬盘的读写效率,以及数据的安全,raid的缺点在于:
1.当你配置好了raid磁盘阵列组,容量的大小,已经是限定了,如果你存储的业务非常多,磁盘容量不够用的问题就会出现,你想要扩容磁盘的空间,就会非常麻烦。
2.不同的磁盘分区,相对都是独立的,没有任何联系,可能空间利用率比较低。
3.如果某一分区满了,默认磁盘管理是无法直接扩容的,只能重新的分区,重新分配容量大小,创建文件系统,很麻烦。
4.如果你要合并分区,还是得重新格式化磁盘分区,还得进行数据备份。

lvm 逻辑卷管理技术

lvm (logical volume manager)

1.lvm原理
他是讲一个或者多个硬盘在逻辑上进行了合并,相当于一个大的硬盘去使用,当你的硬盘空间不够了,可以直接去其他硬盘中拿容量去使用,这就是一个动态的磁盘容量管理技术。

2.优点
lvm最大的优点就是可以对磁盘进行动态管理,可以提高磁盘管理的灵活性

3.基本概念
PP (Physical parttion) 物理分区,lvm直接创建在物理分区上。
PV (Physical Volume) 物理卷,处于lvm的最底层,一般一个PV对应一个PP。
PE (Physical Extend) 物理拓展,PV中可以用于分配的最小存储单位。
VG (Volume Group) 卷组,卷组创建在PV之上,可以划分为多个PV。
LE (Logical Extends) 逻辑扩展单元,逻辑扩展单元,LE是组成LV的基本单元,一个LE对应一个PE。
LV (Logical Volume) 逻辑卷,创建在VG之上,是一个可以动态扩展的分区概念。

lvm逻辑卷

-LVM动态扩容大小,其实就是通过互相交换PE的过程,达到能够弹性扩容分区大小
-想要减少空间容量,就是剔除PE的大小
-想要扩大容量,就是把其他的PE添加到自己的LV当中
-PE默认大小一般都是4M,LVM最多是可以创建出65534个PE,因此LVM最大的VG卷组单位是256G
-PE其实是LVM最小的存储单位,类似于操作系统的block (4k)
-LV逻辑卷的概念(理解为普通分区的概念,/dev/sdb /dev/sdc)

lvm的创建流程

`1.创建PV` [root@localhost ~]# pvcreate /dev/sdb /dev/sdc   Physical volume "/dev/sdb" successfully created.   Physical volume "/dev/sdc" successfully created.  `2.创建卷组` [root@localhost ~]# vgcreate xuxuvg1 /dev/sdb /dev/sdc   Volume group "xuxuvg1" successfully created  `3.查看pv vg信息`  [root@localhost ~]# pvs   PV         VG      Fmt  Attr PSize   PFree     /dev/sda2  centos  lvm2 a--  <19.00g      0    /dev/sdb   xuxuvg1 lvm2 a--  <10.00g <10.00g   /dev/sdc   xuxuvg1 lvm2 a--  <10.00g <10.00g [root@localhost ~]# pvscan   PV /dev/sdb    VG xuxuvg1         lvm2 [<10.00 GiB / <10.00 GiB free]   PV /dev/sdc    VG xuxuvg1         lvm2 [<10.00 GiB / <10.00 GiB free]   PV /dev/sda2   VG centos          lvm2 [<19.00 GiB / 0    free]   Total: 3 [<38.99 GiB] / in use: 3 [<38.99 GiB] / in no VG: 0 [0   ] [root@localhost ~]# pvdisplay   --- Physical volume ---   PV Name               /dev/sdb   VG Name               xuxuvg1   PV Size               10.00 GiB / not usable 4.00 MiB   Allocatable           yes    PE Size               4.00 MiB   Total PE              2559   Free PE               2559   Allocated PE          0   PV UUID               NuXbh4-5URD-N3gP-CXQM-WUw4-uzAe-20br2v       --- Physical volume ---   PV Name               /dev/sdc   VG Name               xuxuvg1   PV Size               10.00 GiB / not usable 4.00 MiB   Allocatable           yes    PE Size               4.00 MiB   Total PE              2559   Free PE               2559   Allocated PE          0   PV UUID               TsQu1V-2KZ0-gZtV-feuX-nnhO-iD3m-qUlc3m       --- Physical volume ---   PV Name               /dev/sda2   VG Name               centos   PV Size               <19.00 GiB / not usable 3.00 MiB   Allocatable           yes (but full)   PE Size               4.00 MiB   Total PE              4863   Free PE               0   Allocated PE          4863   PV UUID               6ipoOT-021J-hgZV-Ftku-zFGU-wj8u-AQB5FO        [root@localhost ~]# vgs   VG      #PV #LV #SN Attr   VSize   VFree    centos    1   2   0 wz--n- <19.00g     0    xuxuvg1   2   0   0 wz--n-  19.99g 19.99g [root@localhost ~]# vgscan   Reading volume groups from cache.   Found volume group "xuxuvg1" using metadata type lvm2   Found volume group "centos" using metadata type lvm2 [root@localhost ~]# vgdisplay   --- Volume group ---   VG Name               xuxuvg1   System ID                Format                lvm2   Metadata Areas        2   Metadata Sequence No  1   VG Access             read/write   VG Status             resizable   MAX LV                0   Cur LV                0   Open LV               0   Max PV                0   Cur PV                2   Act PV                2   VG Size               19.99 GiB   PE Size               4.00 MiB   Total PE              5118   Alloc PE / Size       0 / 0      Free  PE / Size       5118 / 19.99 GiB   VG UUID               VWU7sx-xiWc-bTvw-1nCf-holz-7uu3-ksV5hN       --- 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               <19.00 GiB   PE Size               4.00 MiB   Total PE              4863   Alloc PE / Size       4863 / <19.00 GiB   Free  PE / Size       0 / 0      VG UUID               1qSTmy-1mDg-ZuGi-GP1o-kK1U-sUvk-qXznQV     `4.尝试扩容,缩小vg卷组` [root@localhost ~]# pvcreate /dev/sdd   Physical volume "/dev/sdd" successfully created.    [root@localhost ~]# pvs   PV         VG      Fmt  Attr PSize   PFree     /dev/sda2  centos  lvm2 a--  <19.00g      0    /dev/sdb   xuxuvg1 lvm2 a--  <10.00g <10.00g   /dev/sdc   xuxuvg1 lvm2 a--  <10.00g <10.00g   /dev/sdd           lvm2 ---   10.00g  10.00g  [root@localhost ~]# vgextend xuxuvg1 /dev/sdd   Volume group "xuxuvg1" successfully extended  `5.显示一下卷组的信息,容量等` [root@localhost ~]# vgdisplay   --- Volume group ---   VG Name               xuxuvg1   System ID                Format                lvm2   Metadata Areas        3   Metadata Sequence No  2   VG Access             read/write   VG Status             resizable   MAX LV                0   Cur LV                0   Open LV               0   Max PV                0   Cur PV                3   Act PV                3   VG Size               <29.99 GiB   PE Size               4.00 MiB   Total PE              7677   Alloc PE / Size       0 / 0      Free  PE / Size       7677 / <29.99 GiB   VG UUID               VWU7sx-xiWc-bTvw-1nCf-holz-7uu3-ksV5hN  `6.还可以缩小卷组大小,剔除/dev/sdd` [root@localhost ~]# vgreduce xuxuvg1 /dev/sdd   Removed "/dev/sdd" from volume group "xuxuvg1"    `7.删除/dev/sdd的物理卷` [root@localhost ~]# pvremove /dev/sdd   Labels on physical volume "/dev/sdd" successfully wiped.    `8.使用此时的卷组,创建逻辑卷,进行使用/dev/sdb /dev/sdc` [root@localhost ~]# lvcreate -n lv1 -L +500M xuxuvg1   Logical volume "lv1" created.    [root@localhost ~]# lvs   LV   VG      Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert   root centos  -wi-ao---- <17.00g                                                       swap centos  -wi-ao----   2.00g                                                       lv1  xuxuvg1 -wi-a----- 500.00m      [root@localhost ~]# lvdisplay   --- Logical volume ---   LV Path                /dev/xuxuvg1/lv1   LV Name                lv1   VG Name                xuxuvg1   LV UUID                VgzEKy-SlDf-oYed-LP0I-531x-wpt1-RcNZbR   LV Write Access        read/write   LV Creation host, time localhost.localdomain, 2023-07-05 00:50:00 +0800   LV Status              available   # open                 0   LV Size                500.00 MiB   Current LE             125   Segments               1   Allocation             inherit   Read ahead sectors     auto   - currently set to     8192   Block device           253:2  `9.对刚创建的lv1逻辑卷进行格式化文件系统` [root@localhost ~]# mkfs.xfs /dev/xuxuvg1/lv1 meta-data=/dev/xuxuvg1/lv1       isize=512    agcount=4, agsize=32000 blks          =                       sectsz=512   attr=2, projid32bit=1          =                       crc=1        finobt=0, sparse=0 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=855, version=2          =                       sectsz=512   sunit=0 blks, lazy-count=1 realtime =none                   extsz=4096   blocks=0, rtextents=0  `10.向lv1逻辑卷中,进行挂载,以及数据写入(就可以当作一个普通分区来使用了)` [root@localhost ~]# mkdir /xuxu_lv1 [root@localhost ~]# mount /dev/xuxuvg1/lv1 /xuxu_lv1/  [root@localhost ~]# df -Th 文件系统                类型      容量  已用  可用 已用% 挂载点 devtmpfs                devtmpfs  475M     0  475M    0% /dev tmpfs                   tmpfs     487M     0  487M    0% /dev/shm tmpfs                   tmpfs     487M  7.7M  479M    2% /run tmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup /dev/mapper/centos-root xfs        17G  2.3G   15G   14% / /dev/sda1               xfs      1014M  138M  877M   14% /boot tmpfs                   tmpfs      98M     0   98M    0% /run/user/0 /dev/mapper/xuxuvg1-lv1 xfs       497M   26M  472M    6% /xuxu_lv1  `11.向磁盘中写入数据,查看空间容量` [root@localhost xuxu_lv1]# echo {1..3000000} > test.txt [root@localhost xuxu_lv1]# df -Th 文件系统                类型      容量  已用  可用 已用% 挂载点 devtmpfs                devtmpfs  475M     0  475M    0% /dev tmpfs                   tmpfs     487M     0  487M    0% /dev/shm tmpfs                   tmpfs     487M  7.7M  479M    2% /run tmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup /dev/mapper/centos-root xfs        17G  2.3G   15G   14% / /dev/sda1               xfs      1014M  138M  877M   14% /boot tmpfs                   tmpfs      98M     0   98M    0% /run/user/0 /dev/mapper/xuxuvg1-lv1 xfs       497M   48M  450M   10% /xuxu_lv1 [root@localhost xuxu_lv1]# echo {1..2000000} > test2.txt [root@localhost xuxu_lv1]# df -Th 文件系统                类型      容量  已用  可用 已用% 挂载点 devtmpfs                devtmpfs  475M     0  475M    0% /dev tmpfs                   tmpfs     487M     0  487M    0% /dev/shm tmpfs                   tmpfs     487M  7.7M  479M    2% /run tmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup /dev/mapper/centos-root xfs        17G  2.3G   15G   14% / /dev/sda1               xfs      1014M  138M  877M   14% /boot tmpfs                   tmpfs      98M     0   98M    0% /run/user/0 /dev/mapper/xuxuvg1-lv1 xfs       497M   62M  436M   13% /xuxu_lv1  `12.修改/etc/fstab 开机自动挂载` [root@localhost xuxu_lv1]# vim /etc/fstab /dev/xuxuvg1/lv1 /xuxu_lv1 xfs defaults 0 0  [root@localhost xuxu_lv1]# ls /xuxu_lv1/ test2.txt  test.txt 

lv逻辑卷的扩容

`扩容  给lv1+10G` `只要卷组中的容量够用,就可以对lv逻辑卷扩容`  `1.先取消挂载lv1设备` [root@localhost /]# umount /xuxu_lv1/  `2.使用lvextend命令扩容逻辑卷的大小` [root@localhost /]# lvextend -L +10G /dev/xuxuvg1/lv1    Size of logical volume xuxuvg1/lv1 changed from 500.00 MiB (125 extents) to <10.49 GiB (2685 extents).   Logical volume xuxuvg1/lv1 successfully resized.    `3.挂载逻辑卷开始使用` [root@localhost /]# mount /dev/xuxuvg1/lv1 /xuxu_lv1/ [root@localhost /]# df -hT 文件系统                类型      容量  已用  可用 已用% 挂载点 devtmpfs                devtmpfs  475M     0  475M    0% /dev tmpfs                   tmpfs     487M     0  487M    0% /dev/shm tmpfs                   tmpfs     487M  7.7M  479M    2% /run tmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup /dev/mapper/centos-root xfs        17G  2.3G   15G   14% / /dev/sda1               xfs      1014M  138M  877M   14% /boot tmpfs                   tmpfs      98M     0   98M    0% /run/user/0 /dev/mapper/xuxuvg1-lv1 xfs       497M   62M  436M   13% /xuxu_lv1 `可以看到还是显示500M`  `4.重新调整xfs文件系统大小` [root@localhost /]# xfs_growfs /dev/xuxuvg1/lv1  meta-data=/dev/mapper/xuxuvg1-lv1 isize=512    agcount=4, agsize=32000 blks          =                       sectsz=512   attr=2, projid32bit=1          =                       crc=1        finobt=0 spinodes=0 data     =                       bsize=4096   blocks=128000, imaxpct=25          =                       sunit=0      swidth=0 blks naming   =version 2              bsize=4096   ascii-ci=0 ftype=1 log      =internal               bsize=4096   blocks=855, version=2          =                       sectsz=512   sunit=0 blks, lazy-count=1 realtime =none                   extsz=4096   blocks=0, rtextents=0 data blocks changed from 128000 to 2749440  [root@localhost /]# df -hT 文件系统                类型      容量  已用  可用 已用% 挂载点 devtmpfs                devtmpfs  475M     0  475M    0% /dev tmpfs                   tmpfs     487M     0  487M    0% /dev/shm tmpfs                   tmpfs     487M  7.7M  479M    2% /run tmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup /dev/mapper/centos-root xfs        17G  2.3G   15G   14% / /dev/sda1               xfs      1014M  138M  877M   14% /boot tmpfs                   tmpfs      98M     0   98M    0% /run/user/0 /dev/mapper/xuxuvg1-lv1 xfs        11G   66M   11G    1% /xuxu_lv1 

删除逻辑卷

`1.生产环境下需要先把文件都备份,这里实验就不做演示了` `2.取消挂载逻辑卷` [root@localhost /]# umount /xuxu_lv1/  `3.删除逻辑卷` [root@localhost /]# lvremove /dev/xuxuvg1/lv1  Do you really want to remove active logical volume xuxuvg1/lv1? [y/n]: y   Logical volume "lv1" successfully removed  `4.删除卷组` [root@localhost /]# vgremove xuxuvg1   Volume group "xuxuvg1" successfully removed  `5.删除物理卷设备` [root@localhost /]# pvs   PV         VG     Fmt  Attr PSize   PFree    /dev/sda2  centos lvm2 a--  <19.00g     0    /dev/sdb          lvm2 ---   10.00g 10.00g   /dev/sdc          lvm2 ---   10.00g 10.00g  [root@localhost /]# pvremove /dev/sdb /dev/sdc   Labels on physical volume "/dev/sdb" successfully wiped.   Labels on physical volume "/dev/sdc" successfully wiped.  `6.最后检查一下所有lvm相关信息` [root@localhost /]# pvs   PV         VG     Fmt  Attr PSize   PFree   /dev/sda2  centos lvm2 a--  <19.00g    0   [root@localhost /]# vgs   VG     #PV #LV #SN Attr   VSize   VFree   centos   1   2   0 wz--n- <19.00g    0   [root@localhost /]# lvs   LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert   root centos -wi-ao---- <17.00g                        swap centos -wi-ao----   2.00g    `可以看到lvm相关信息都被删除`  文章内容主要参考:https://www.bilibili.com/video/BV1LF411G7xh?p=40&vd_source=0318a6d26fb028b832726d62a0e9e2cb