lvm逻辑卷
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」