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