lvm逻辑卷

寻技术 Linux / React 2023年07月08日 105

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动态扩容大小,其实就是通过互相交换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
关闭

用微信“扫一扫”