首页 > 数据库 > 数据库开发技术 > Linux系统LVM逻辑卷管理
放个链接,万一有人关注呢
↓ ↓ ↓ ↓ ↓
逻辑卷管理(Logical Volume Management,简称LVM)是一种在Linux系统上管理磁盘存储的技术,它允许用户将多个物理硬盘上的存储空间组合成逻辑卷,并在需要时对其进行动态管理。LVM提供了灵活性、可扩展性和数据保护性,使得存储管理更加方便和高效。

1、创建物理卷
-f:强制执行操作,即使设备已经被标记为LVM物理卷。
-y:自动回答“是”对所有提示,默认为“否”。
-v:显示详细的操作过程和信息。
-d:禁用LVM写入设备的元数据。
-ff:强制执行操作,并删除任何可能存在的旧的LVM元数据。
-M 2:指定元数据备份级别,其中1表示单个备份,2表示多个备份(默认为2)。
-n:不要创建物理卷。
下面通过pvcreate将一个磁盘初始化为物理卷
#查看当前可用磁盘[root@localhost ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 20G 0 disk├─sda1 8:1 0 1G 0 part /boot└─sda2 8:2 0 19G 0 part├─centos-root 253:0 0 17G 0 lvm /└─centos-swap 253:1 0 2G 0 lvm [SWAP]sdb 8:16 0 20G 0 disksr0 11:0 1 4.3G 0 rom /run/media/root/CentOS 7 x86_64#将可用磁盘初始化为物理卷[root@localhost ~]# pvcreate /dev/sdbPhysical volume "/dev/sdb" successfully created.
物理卷创建成功之后,可以通过pvscan命令查看创建结果
[root@localhost ~]# pvscanPV /dev/sda2 VG centos lvm2 [<19.00 GiB / 0 free]PV /dev/sdb lvm2 [20.00 GiB]Total: 2 [<39.00 GiB] / in use: 1 [<19.00 GiB] / in no VG: 1 [20.00 GiB]
vgcreate命令用于创建LVM卷组(Volume Group),将多个物理卷(Physical Volumes)组合在一起形成逻辑卷管理器(LVM)的逻辑卷组。以下是vgcreate命令常用的参数:
-v:显示详细的操作过程和信息。
-s PE_SIZE:指定物理区块(Physical Extent)的大小。默认情况下,PE大小为4MB。
-c:启用磁盘扫描和磁盘上的校验和功能。
-f:强制执行操作,即使卷组名称已经存在。
-A y/n:设置是否自动激活卷组(自动激活将在系统启动时自动激活卷组)。
-M 2:指定元数据备份级别,其中1表示单个备份,2表示多个备份(默认为2)。
-p PE_START:PE是卷组中的储存单位,默认大小为4MB。
下面通过vgcreate将物理卷整合为卷组
[root@localhost ~]# vgcreate datavg /dev/sdbVolume group "datavg" successfully created
3、查看卷组
卷组创建完成之后,可以通过pvscan命令查看创建结果
[root@localhost ~]# pvscanPV /dev/sda2 VG centos lvm2 [<19.00 GiB / 0 free]PV /dev/sdb VG datavg lvm2 [<20.00 GiB / <20.00 GiB free]Total: 2 [38.99 GiB] / in use: 2 [38.99 GiB] / in no VG: 0 [0 ]
通过pvscan命令只能查看到卷组的大致信息,如需查看卷组的详细信息可以通过vgdisplay命令查看
[root@localhost ~]# vgdisplay datavg--- Volume group ---VG Name datavgSystem IDFormat lvm2Metadata Areas 1Metadata Sequence No 3VG Access read/writeVG Status resizableMAX LV 0Cur LV 2Open LV 2Max PV 0Cur PV 1Act PV 1VG Size <20.00 GiBPE Size 4.00 MiBTotal PE 5119Alloc PE / Size 50 / 200.00 MiBFree PE / Size 5069 / 19.80 GiBVG UUID gQrVqu-zh0o-P0u7-x0Nu-TMgE-bbcV-puCAgD
4、创建逻辑卷
lvcreate命令用于创建逻辑卷(Logical Volume)。以下是lvcreate命令常用的参数:
-L size:指定逻辑卷的大小。可以使用单位来表示大小,例如M(兆字节)、G(千兆字节)等。
-n name:指定逻辑卷的名称。
-v:显示详细的操作过程和信息。
-y:在创建逻辑卷时不进行确认提示,直接执行。
-i number:指定逻辑卷的副本数。创建有多个副本的逻辑卷时使用。
-I size:指定逻辑卷的镜像区域大小。
-m Mirrors:指定逻辑卷的镜像数。
-c chunk size:指定逻辑卷的块大小。
下面通过lvcreate在卷组中创建出一个逻辑卷。
[root@localhost ~]# lvcreate -L 100M -n lv1 datavgLogical volume "lv1" created.
上述示例中,在卷组datavg中创建了一个大小为100M,命名为lv1的逻辑卷。其中,-L参数用于指定逻辑卷的大小,若是使用-l参数则需要指定以PE为单位的逻辑卷容量,示例代码如下。
[root@localhost ~]# lvcreate -l 25 -n lv2 datavgLogical volume "lv2" created.
由于一个PE单位的容量默认为4M,所以此处配置逻辑卷lv2的大小为25个PE单位,也就是100M。
逻辑卷创建完成之后,查看当前逻辑卷
[root@localhost ~]# lvscanACTIVE '/dev/centos/swap' [2.00 GiB] inheritACTIVE '/dev/centos/root' [<17.00 GiB] inheritACTIVE '/dev/datavg/lv1' [100.00 MiB] inheritACTIVE '/dev/datavg/lv2' [100.00 MiB] inherit
在挂载逻辑卷之前,将需要挂载的逻辑卷进行格式化
#将lv1进行ext4格式化[root@localhost ~]# mkfs.ext4 /dev/datavg/lv1mke2fs 1.42.9 (28-Dec-2013)文件系统标签=OS type: Linux块大小=1024 (log=0)分块大小=1024 (log=0)Stride=0 blocks, Stripe width=0 blocks25688 inodes, 102400 blocks5120 blocks (5.00%) reserved for the super user第一个数据块=1Maximum filesystem blocks=3368550413 block groups8192 blocks per group, 8192 fragments per group1976 inodes per groupSuperblock backups stored on blocks:8193, 24577, 40961, 57345, 73729Allocating group tables: 完成正在写入inode表: 完成Creating journal (4096 blocks): 完成Writing superblocks and filesystem accounting information: 完成#将lv2进行xfs格式化[root@localhost ~]# mkfs.xfs /dev/datavg/lv2meta-data=/dev/datavg/lv2 isize=512 agcount=4, agsize=6400 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0, sparse=0data = bsize=4096 blocks=25600, imaxpct=25= sunit=0 swidth=0 blksnaming =version 2 bsize=4096 ascii-ci=0 ftype=1log =internal log bsize=4096 blocks=855, version=2= sectsz=512 sunit=0 blks, lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=0
在挂载逻辑卷时并不需要UUID,使用设备名称即可,因为逻辑卷的名称不会发生改变。
创建两个挂载点。
[root@localhost ~]# mkdir -p /mnt/lv01 /mnt/lv02有了挂载点之后,将挂载信息写入到/etc/fstab文件中
[root@localhost ~]# cat /etc/fstab## /etc/fstab# Created by anaconda on Wed Apr 8 14:30:29 2020## Accessible filesystems, by reference, are maintained under '/dev/disk'# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info#/dev/mapper/centos-root / xfs defaults 0 0UUID=214c5b00-13fb-46da-b59f-7fef6b85ada3 /boot xfs defaults 0 0/dev/mapper/centos-swap swap swap defaults 0 0/dev/datavg/lv1 /mnt/lv01 ext4 defaults 0 0/dev/datavg/lv2 /mnt/lv02 nfs defaults 0 0
逻辑卷挂载完成之后,读取配置并查看挂载结果。
[root@localhost ~]# mount -a[root@localhost ~]# df -Th文件系统 类型 容量 已用 可用 已用% 挂载点/dev/mapper/centos-root xfs 17G 5.9G 12G 35% /devtmpfs devtmpfs 470M 0 470M 0% /devtmpfs tmpfs 487M 0 487M 0% /dev/shmtmpfs tmpfs 487M 8.6M 478M 2% /runtmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup/dev/sda1 xfs 1014M 166M 849M 17% /boottmpfs tmpfs 98M 4.0K 98M 1% /run/user/42tmpfs tmpfs 98M 24K 98M 1% /run/user/0/dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64/dev/mapper/datavg-lv1 ext4 93M 1.6M 85M 2% /mnt/lv01/dev/mapper/datavg-lv2 nfs 93M 1.6M 85M 2% /mnt/lv02
此时逻辑卷lv1与lv2已经成功挂载到目录/mnt/lv01与/mnt/lv02中。
6、卷组扩容
将新磁盘初始化为物理卷,并添加到卷组中。
[root@localhost ~]# vgextend datavg /dev/sdcPhysical volume "/dev/sdc" successfully created.Volume group "datavg" successfully extended
[root@localhost ~]# pvsPV VG Fmt Attr PSize PFree/dev/sda2 centos lvm2 a-- <19.00g 0/dev/sdb datavg lvm2 a-- <20.00g 19.80g/dev/sdc datavg lvm2 a-- <20.00g <20.00g
7、逻辑卷扩容
lvextend命令用于扩展逻辑卷(Logical Volume)的大小。以下是lvextend命令常用的参数:
-L size:指定逻辑卷的新大小。可以使用单位来表示大小,例如M(兆字节)、G(千兆字节)等。
-l extents:指定逻辑卷的新大小,以卷组中的扩展数为单位。
-n name:指定逻辑卷的名称。
-v:显示详细的操作过程和信息。
-r:在扩展逻辑卷后自动调整文件系统大小。
将逻辑卷lv1的容量扩容到500M。
[root@localhost ~]# lvextend -L 500M /dev/datavg/lv1Size of logical volume datavg/lv1 changed from 100.00 MiB (25 extents) to 500.00 MiB (125 extents).Logical volume datavg/lv1 successfully resized.
为逻辑卷lv2增加400M的容量。
[root@localhost ~]# lvextend -L +400M /dev/datavg/lv2Size of logical volume datavg/lv2 changed from 100.00 MiB (25 extents) to 500.00 MiB (125 extents).Logical volume datavg/lv2 successfully resized.
逻辑卷扩容完成之后,查看扩容结果。
[root@localhost ~]# df -Th文件系统 类型 容量 已用 可用 已用% 挂载点/dev/mapper/centos-root xfs 17G 5.9G 12G 35% /devtmpfs devtmpfs 470M 0 470M 0% /devtmpfs tmpfs 487M 0 487M 0% /dev/shmtmpfs tmpfs 487M 8.6M 478M 2% /runtmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup/dev/sda1 xfs 1014M 166M 849M 17% /boot/dev/mapper/datavg-lv1 ext4 93M 1.6M 85M 2% /mnt/lv01/dev/mapper/datavg-lv2 xfs 97M 5.3M 92M 6% /mnt/lv02tmpfs tmpfs 98M 4.0K 98M 1% /run/user/42tmpfs tmpfs 98M 24K 98M 1% /run/user/0/dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
此时逻辑卷的容量并没有得到提升,这是由于没有对文件系统进行扩容。
在Linux下,不同的文件系统有不同的扩容方式。下面列出了几种常见的文件系统以及对应的扩容方式:
1、Ext2/Ext3/Ext4文件系统:
使用resize2fs命令来扩展文件系统大小。例如,resize2fs /dev/sdb1将扩展/dev/sdb1上的Ext2/Ext3/Ext4文件系统。
2、XFS文件系统:
使用xfs_growfs命令来扩展文件系统大小。例如,xfs_growfs /mnt将扩展/mnt上的XFS文件系统。
3、Btrfs文件系统:
使用btrfs filesystem resize命令来扩展文件系统大小。例如,btrfs filesystem resize +2G /mnt将/mnt上的Btrfs文件系统扩展2GB。
4、ZFS文件系统:
使用zpool和zfs命令来扩展文件系统大小。首先使用zpool命令扩展存储池的容量,然后使用zfs命令扩展具体的ZFS文件系统。
[root@localhost ~]# resize2fs /dev/datavg/lv1resize2fs 1.42.9 (28-Dec-2013)Filesystem at /dev/datavg/lv1 is mounted on /mnt/lv01; on-line resizing requiredold_desc_blocks = 1, new_desc_blocks = 4The filesystem on /dev/datavg/lv1 is now 512000 blocks long.
逻辑卷lv2的文件系统为xfs,则需要xfs_growfs命令进行扩容。
[root@localhost ~]# xfs_growfs /dev/datavg/lv2meta-data=/dev/mapper/datavg-lv2 isize=512 agcount=4, agsize=6400 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0 spinodes=0data = bsize=4096 blocks=25600, imaxpct=25= sunit=0 swidth=0 blksnaming =version 2 bsize=4096 ascii-ci=0 ftype=1log =internal bsize=4096 blocks=855, version=2= sectsz=512 sunit=0 blks, lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=0data blocks changed from 25600 to 128000
将逻辑卷的文件系统扩容之后,再次查看逻辑卷容量。
[root@localhost ~]# df -Th文件系统 类型 容量 已用 可用 已用% 挂载点/dev/mapper/centos-root xfs 17G 5.9G 12G 35% /devtmpfs devtmpfs 470M 0 470M 0% /devtmpfs tmpfs 487M 0 487M 0% /dev/shmtmpfs tmpfs 487M 8.6M 478M 2% /runtmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup/dev/sda1 xfs 1014M 166M 849M 17% /boot/dev/mapper/datavg-lv1 ext4 481M 2.3M 456M 1% /mnt/lv01/dev/mapper/datavg-lv2 xfs 497M 6.0M 491M 2% /mnt/lv02tmpfs tmpfs 98M 4.0K 98M 1% /run/user/42tmpfs tmpfs 98M 24K 98M 1% /run/user/0/dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
当磁盘空间不足时,可以减少卷组所占空间,即删除卷组中的物理卷。如果需要删除的物理卷中存有数据,需要将数据迁移到其他物理卷中,但也要保证目标物理卷有足够的空间储存迁移的数据。
将物理卷sdb中的数据迁移到物理卷sdc中。
[root@localhost ~]# pvmove /dev/sdb /dev/sdc/dev/sdb: Moved: 4.80%/dev/sdb: Moved: 10.00%/dev/sdb: Moved: 50.00%/dev/sdb: Moved: 60.00%/dev/sdb: Moved: 100.00%
通过vgreduce命令将sdb物理卷从卷组中删除。
[root@localhost ~]# vgreduce datavg /dev/sdbRemoved "/dev/sdb" from volume group "datavg"
10、删除逻辑卷
将多余的逻辑卷删除。
#解除挂载[root@localhost ~]# umount /dev/datavg/lv2#删除逻辑卷[root@localhost ~]# lvremove /dev/datavg/lv2Do you really want to remove active logical volume datavg/lv2? [y/n]: yLogical volume "lv2" successfully removed
在lvremove命令中添加-f参数,强制删除多余的逻辑卷。
[root@localhost ~]# umount /dev/datavg/lv1[root@localhost ~]# lvremove -f /dev/datavg/lv1Logical volume "lv1" successfully removed
由于在创建逻辑卷时的创建顺序是物理卷、卷组与逻辑卷,所以在删除物理卷时的删除顺序应为逻辑卷、卷组与物理卷。
结束!如有不足之处,欢迎指正!
来不及解释了,快上车!(加我微信拉你进群,需要学习资料的V我)

欢迎新的小伙伴加入!在这里,我们鼓励大家积极参与群内讨论和交流,分享自己的见解和经验,一起学习和成长。同时,也欢迎大家提出问题和建议,让我们不断改进和完善这个平台。

原文作者:运维book思议;如有侵权,请联系管理员删除。