码迷,mamicode.com
首页 > 其他好文 > 详细

LVM2逻辑卷创建及扩容

时间:2017-03-30 12:02:32      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:lvm   physical   volume   动态   空间   

一、背景介绍

LVM2逻辑卷由于支持空间的动态扩展或收缩,在中小企业中有一定的使用场景,在CentOS5、6系统中经常会见到,从CentOS7以后默认的文件系统由ext4改为btrfs,而btrfs也支持空间的动态扩展和收缩,所以在CentOS7以后的系统中再使用LVM就是不明智的选择了

二、LVM原理介绍

在介绍LVM之前首先需要对几个名词进行说明:

PV——physical volume,在物理层面磁盘组成的磁盘卷

VG——volume group,在较低的逻辑层从多个PV中抽象出来的卷组

PE——physical extend,VG将PV所提供的容量再次以“块”的形式对外提供,每一个“块”的大小

LV——logical volume,由多个LV“块”组成可供挂载使用的设备文件

技术分享

从上图可以看出VG是一个或多个PV抽象出一个逻辑层,该逻辑层对外提供的块大小称为PE,将多个PE组成的LV就是用于挂载的设备文件。空间的扩展或收缩就是增加或减少PE的过程。LVM功能实际上是通过内核中的dm模块(device mapper)实现,它将一个或多个底层块设备组织成一个逻辑设备的模块,在/dev/目录下以dm-#形式展现

三、创建LVM2逻辑卷

1.添加一个新磁盘,或在原有磁盘剩余空间上新创建几个分区(只要是块设备都可以用于创建LVM2),注意分区时ID号要是8e

技术分享

2.从分区类型中可以看到,8e是用于LVM的的ID号

技术分享

3.使用pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3命令新建3个PV,完成后可以使用pvs查看

技术分享

4.使用命令vgcreate [-s #[kKmMgG]] myvg /dev/sdb1 /dev/sdb2 /dev/sdb3 创建VG,可以使用-s设置PE块的大小,默认是4M,myvg是自定义的VG名称

技术分享

5.使用命令lvcreate -L 15G -n mylv myvg创建LV,此处需要注意的是如果后期删除LV需要之名LV的路径,即使用lvremove /dev/myvg/mylv命令完成

技术分享

创建好的LV可以在/dev/mapper/下通过VG_NAME-LV_NAME或者在/dev/下通过VG_NAME/LV_NAME找到,这两个路径其实都是指向/dev/dm-#的链接

技术分享

6.此时LV就已将创建完成,使用mke2fs命令将LV格式化后就可以挂载使用了

技术分享

三、LVM2扩容

从前文得知LV的大小受制于PE、VG、PV,所以当要对LV进行扩容时推荐的步骤为:扩容PV——扩容VG——扩容LV——扩大文件系统大小

1.再将一个分区创建为PV

技术分享

2.将新创建的分区加入myvg的VG中,使用vgs可以看到PV数量由3变成了4

技术分享

3.在通过lvresize -L +4G /dev/myvg/mylv命令扩容LV大小,此处注意-L后+4G表示再原有基础上再增加4G的空间,也可以写成lvresize -L 19G /dev/myvg/mylv表示空间大小增加到19G

技术分享

4.此时LV空间虽然扩大了,但是会发现挂载的设备文件空间大小并没有发生变化

技术分享

卸载原来的挂载点,使用resize2fs /dev/myvg/mylv命令对文件系统扩容后,再挂载看到已经变成19G了

技术分享

补充说明

在讲LV设备(/dev/myvg/mylv)挂载到/lvm目录下后,直接扩展文件系统时提示无法在线扩展

技术分享

卸载后再次尝试扩展文件系统提示找不到有效的超级块

技术分享

重启后再次尝试,提示先检查并修复文件系统

技术分享

只有当检查完文件系统后再次扩容才能够成功,具体产生的原因尚且不清楚

技术分享


本文出自 “兔样兔森破” 博客,请务必保留此出处http://arkling.blog.51cto.com/2844506/1911573

LVM2逻辑卷创建及扩容

标签:lvm   physical   volume   动态   空间   

原文地址:http://arkling.blog.51cto.com/2844506/1911573

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!