分享

LVM管理详解手册(LVM创建、LVM扩容、LV减容)

 塞北de雪 2023-04-08 发布于江苏

LVM逻辑卷管理是所有运维工程师绕不开的门槛,本文将以为实例方式向大家展示讲解LVM逻辑卷创建、扩容、减容以及常见错误的处理方法。

LVM是 Logical Volume Manager(逻辑卷管理)的简写。LVM可以将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。

一、创建LVM

首先使用fdisk命令创建磁盘分区,并将磁盘分区类型转换成8e(Linux LVM类型)

[root@node1 ~]# fdisk /dev/sda 			//创建8e LVM的分区欢迎使用 fdisk (util-linux 2.23.2)。命令(输入 m 获取帮助):nPartition type:p   primary (0 primary, 0 extended, 4 free)e   extendedSelect (default p): p分区号 (1-4,默认 1):起始 扇区 (2048-419430399,默认为 2048):将使用默认值 2048Last 扇区, +扇区 or +size{K,M,G} (2048-419430399,默认为 419430399):将使用默认值 419430399分区 1 已设置为 Linux 类型,大小设为 200 GiB命令(输入 m 获取帮助):p磁盘 /dev/sda:214.7 GB, 214748364800 字节,419430400 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:dos磁盘标识符:0xf26e2be7设备 Boot      Start         End      Blocks   Id  System/dev/sda1            2048   419430399   209714176   83  Linux命令(输入 m 获取帮助):t				//修改分区类型已选择分区 1Hex 代码(输入 L 列出所有代码):8e		//类型修改为LVM已将分区“Linux”的类型更改为“Linux LVM”命令(输入 m 获取帮助):p磁盘 /dev/sda:214.7 GB, 214748364800 字节,419430400 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:dos磁盘标识符:0xf26e2be7设备 Boot      Start         End      Blocks   Id  System/dev/sda1            2048   419430399   209714176   8e  Linux LVM命令(输入 m 获取帮助):wThe partition table has been altered!Calling ioctl() to re-read partition table.正在同步磁盘。

创建PV盘,VG卷组和LV卷

[root@node1 ~]# pvcreate /dev/sda1        //将lvm分区转换为PV卷Physical volume "/dev/sda1" successfully created.[root@node1 ~]# vgcreate data_vg /dev/sda1        //创建VG卷组Volume group "data_vg" successfully created[root@node1 ~]# lvcreate -l 100%FREE -n data_lv data_vg        //创建LV逻辑卷,使用所有data_vg卷组空间Logical volume "data_lv" created.

常用实例:

(1)创建一个指定大小的lv,并指定名字为lv_2

lvcreate -L 2G -n lv_2 vg_1

(2)创建一个占全部卷组大小的lv,并指定名字为lv_3(注意前提是vg并没有创建有lv)

lvcreate -l 100%VG -n lv_3 vg_1

(3)创建一个空闲空间80%大小的lv,并指定名字为lv_4(常用)

lvcreate -l 80%Free -n lv_4 vg_1

二、检查LVM卷

[root@node1 ~]# fdisk -l			//查询分区是否转换LVM格式磁盘 /dev/sda:214.7 GB, 214748364800 字节,419430400 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:dos磁盘标识符:0xf26e2be7设备 Boot      Start         End      Blocks   Id  System/dev/sda1            2048   419430399   209714176   8e  Linux LVM磁盘 /dev/mapper/data_vg-data_lv:214.7 GB, 214744170496 字节,419422208 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节[root@node1 ~]# pvs		//查询系统当前所有PV卷(pvdisplay可查详情)PV         VG      Fmt  Attr PSize    PFree/dev/sda1  data_vg lvm2 a--  <200.00g    0/dev/vda2  centos  lvm2 a--   <49.00g    0[root@node1 ~]# vgs		//查询系统当前所有VG卷组(vgdisplay可查详情)VG      #PV #LV #SN Attr   VSize    VFreecentos    1   2   0 wz--n-  <49.00g    0data_vg   1   1   0 wz--n- <200.00g    0[root@node1 ~]# lvs		//查询系统当前所有LV逻辑卷(lvdisplay可查详情)LV      VG      Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertroot    centos  -wi-ao----  <44.00gswap    centos  -wi-ao----    5.00gdata_lv data_vg -wi-a----- <200.00g

三、格式化挂载逻辑卷

格式化LVM卷

[root@node1 ~]# mkfs.ext4 /dev/mapper/data_vg-data_lv 		//格式化分区mke2fs 1.42.9 (28-Dec-2013)Discarding device blocks: 完成文件系统标签=OS type: Linux块大小=4096 (log=2)分块大小=4096 (log=2)Stride=0 blocks, Stripe width=0 blocks13107200 inodes, 52427776 blocks2621388 blocks (5.00%) reserved for the super user第一个数据块=0Maximum filesystem blocks=21999124481600 block groups32768 blocks per group, 32768 fragments per group8192 inodes per groupSuperblock backups stored on blocks:32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,4096000, 7962624, 11239424, 20480000, 23887872Allocating group tables: 完成正在写入inode表: 完成Creating journal (32768 blocks): 完成Writing superblocks and filesystem accounting information: 完成

设置新创建LVM卷开机默认挂载到/mnt目录(挂载目录自行指定)

[root@node1 ~]# vi /etc/fstab         //设置开机自动挂载/dev/data_vg/data_lv     /mnt    ext4    defaults        0       0[root@node1 ~]# mount -a        //挂载fstab文件内所有记录[root@node1 ~]# df -h                //查询是否挂载成功文件系统                     容量  已用  可用 已用% 挂载点/dev/mapper/centos-root       44G  1.1G   43G    3% /devtmpfs                     7.8G     0  7.8G    0% /devtmpfs                        7.8G     0  7.8G    0% /dev/shmtmpfs                        7.8G  8.5M  7.8G    1% /runtmpfs                        7.8G     0  7.8G    0% /sys/fs/cgroup/dev/vda1                   1014M  143M  872M   15% /boottmpfs                        1.6G     0  1.6G    0% /run/user/0/dev/mapper/data_vg-data_lv  197G   61M  187G    1% /mnt

四、LVM逻辑卷扩容

[root@test ~]# df -h		//扩容前文件系统                     容量  已用  可用 已用% 挂载点/dev/mapper/data_vg-data_lv  9.8G  122M  9.1G    2% /mnt[root@test ~]# fdisk -l			//新添加/dev/vdc1磁盘,并转换为LVM格式磁盘 /dev/vdc:10.7 GB, 10737418240 字节,20971520 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:dos磁盘标识符:0xe23a284f设备 Boot      Start         End      Blocks   Id  System/dev/vdc1            2048    20971519    10484736   8e  Linux LVM[root@test ~]# pvcreate /dev/vdc1			//创建物理卷[root@test ~]# vgextend data_vg /dev/vdc1			//新物理卷添加到data_vg卷组[root@test ~]# lvextend -l +100%FREE /dev/data_vg/data_lv  //逻辑卷扩容Size of logical volume data_vg/data_lv changed from <10.00 GiB (2559 extents) to 19.99 GiB (5118 extents).Logical volume data_vg/data_lv successfully resized[root@test ~]# resize2fs /dev/data_vg/data_lv    //resize2fs更新逻辑卷resize2fs 1.42.9 (28-Dec-2013)Filesystem at /dev/data_vg/data_lv is mounted on /data; on-line resizing requiredold_desc_blocks = 2, new_desc_blocks = 3The filesystem on /dev/data_vg/data_lv is now 5240832 blocks long.[root@test ~]# df -h		//扩容成功文件系统                     容量  已用  可用 已用% 挂载点/dev/mapper/data_vg-data_lv   20G  130M   19G    1% /mnt

五、LVM逻辑卷减容

LVM逻辑卷减容存在数据丢失风险,非必要尽量不要执行减容操作。逻辑卷减容时一定要严格按照步骤完成,未完成必要操作前,不要重复执行或修改磁盘容量。

[root@localhost ~]# lvs		//查询LVM容量LV      VG      Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Converthome    centos  -wi-ao---- <39.00groot    centos  -wi-ao----  50.00gswap    centos  -wi-ao----  10.00gdata_lv data_vg -wi-ao----   4.99t[root@localhost ~]# umount /data	//卸载LVM[root@localhost ~]# e2fsck -f /dev/data_vg/data_lv  //强制检查文件系统正确性e2fsck 1.42.9 (28-Dec-2013)Pass 1: Checking inodes, blocks, and sizesPass 2: Checking directory structurePass 3: Checking directory connectivityPass 4: Checking reference countsPass 5: Checking group summary information/dev/data_vg/data_lv: 21/167444480 files (0.0% non-contiguous), 289491332/1339552768 blocks[root@localhost ~]# resize2fs  /dev/data_vg/data_lv 4t  //重整文件系统大小至4t,此大小必须小于原LVM容量,大于现有数据容量resize2fs 1.42.9 (28-Dec-2013)Resizing the filesystem on /dev/data_vg/data_lv to 1073741824 (4k) blocks.The filesystem on /dev/data_vg/data_lv is now 1073741824 blocks long.[root@localhost ~]# lvreduce -L 4t /dev/data_vg/data_lv //lvm减容至4tWARNING: Reducing active logical volume to 4.00 TiB.THIS MAY DESTROY YOUR DATA (filesystem etc.)Do you really want to reduce data_vg/data_lv? [y/n]: ySize of logical volume data_vg/data_lv changed from 4.99 TiB (1308157 extents) to 4.00 TiB (1048576 extents).Logical volume data_vg/data_lv successfully resized.[root@localhost ~]# lvs 		//查询LVM容量LV      VG      Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Converthome    centos  -wi-ao---- <39.00groot    centos  -wi-ao----  50.00gswap    centos  -wi-ao----  10.00gdata_lv data_vg -wi-a-----   4.00t[root@localhost ~]# e2fsck -f /dev/data_vg/data_lv		//强制检查文件系统正确性e2fsck 1.42.9 (28-Dec-2013)/dev/data_vg/data_lv is mounted.e2fsck: Cannot continue, aborting.[root@localhost ~]# vgreduce data_vg /dev/vdd1		//VG减容PV盘(可选)Removed "/dev/vdd1" from volume group "data_vg"[root@localhost ~]# pvremove /dev/vdd1		//删除PV盘(可选)Labels on physical volume "/dev/vdd1" successfully wiped.[root@localhost ~]# mount /dev/data_vg/data_lv /data/			//重新挂载LVM卷

六、常用命令

功能

物理卷管理

卷组管理

逻辑卷管理

Scan 扫描

pvscan

vgscan

lvscan

Create 创建

pvcreate

vgcreate

lvcreate

Display 显示

pvdisplay

vgdisplay

lvdisplay

Remove 删除

pvremove

vgremove

lvremove

Extend 扩展

不能扩展

vgextend

lvextend

Reduce 减容

不能减容

vgreduce

lvreduce

主要命令的语法

pvcreate 设备名

vgcreate 卷组名 物理卷1 物理卷2

vgreduce 卷组名 物理卷

lvcreate -L 大小 -n 逻辑卷名 卷组名

lvextend -L +大小 /dev/卷组名/逻辑卷名

lvreduce -L 减容后容量 /dev/卷组名/逻辑卷名

七、常见问题

7.1 e2fsck: Cannot continue, aborting

报错信息:e2fsck: Cannot continue, aborting

[root@localhost ~]# e2fsck -f /dev/data_vg/data_lve2fsck 1.42.9 (28-Dec-2013)/dev/data_vg/data_lv is mounted.e2fsck: Cannot continue, aborting.

解决方法:

磁盘减容前需umount卸载LVM卷挂载

7.2 Either the superblock or the partition table is likely to be corrupt!

报错信息:Either the superblock or the partition table is likely to be corrupt!

[root@localhost ~]# e2fsck -f /dev/data_vg/data_lve2fsck 1.42.9 (28-Dec-2013)The filesystem size (according to the superblock) is 1073741824 blocksThe physical size of the device is 1068374016 blocksEither the superblock or the partition table is likely to be corrupt!Abort<y>? yes

解决方法:

磁盘减容或扩容失败,一般要重新格式化分区才能重新挂载LVM卷,格式化分区数据会丢失

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多