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卷 六、常用命令
主要命令的语法: 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卷,格式化分区数据会丢失 |
|