您的位置:首页 > 运维架构 > Linux

Linux LVM(逻辑卷管理)

2016-01-25 22:58 585 查看

Lvm基本应用

什么是LVM?

LVM 的全称是 Logical Volume Manager,中文为逻辑卷管理,它是Linux对磁盘分区的一种管理机制,它在传统的硬盘(或硬盘分区)和文件系统之间建立一个逻辑层,将一个或多个底层块设备组织成为一个逻辑设备。LVM 的重点在于可以动态的调整磁盘分区的大小,而并不是数据的冗余性和完整性。

LVM的组成



PV:Physical Volume,物理卷

PV是LVM的基本存储逻辑块。

PE:Physical Exten,物理块

把每一个物理卷PV被划分为PE的基本单元,默认为4MB,是整个LVM最小的储存区块,一般在创建卷组VG中划分大小,也可以由PV划分大小。

组成VG的一个或多个PV中PE必须统一大小。

VG:Volumen Group,卷组

由一个或多个物理卷PV组成,而VG最多仅能含有65534个PE,默认VG可以有 4M*65534/(1024M/G)=256G。

LV:Logical Volume,逻辑卷

逻辑卷建立在卷组VG之上。将逻辑卷LV格式化后建立文件系统进行使用。

LE:Logical Extent,逻辑块

逻辑卷LV也被划分为可被寻址的基本单位LE,在同一卷组中,LE的大小和PE大小相同,且有一一对应关系。



LVM的实现

磁盘的准备

通过使用fdisk -l /dev/sdb,我们可以查看到/dev/sdb分区如下,且ID为83



准备磁盘分区,并不要求分区的大小一致,但是必须将分区类型改为“8e”使它可以用于LVM



重复上述操作,将/dev/sdb所有分区类型修改为8e。



创建物理卷(PV)

PV的管理工具有:pvs,pvdisplay,pvcreate,pvremove

pvs:显示pv的简要信息

pvdisplay:显示pv的详细信息

pvcreate:创建pv

pvremove:删除pv

使用 pvcreate /dev/sdb# 命令创建物理卷



创建卷组(VG)

VG的管理工具有:vgs,vgdisplay,vgcreate,vgremove,vgextend,vgreduce

vgextend:VG的扩充

语法: vgextend 卷组名 设备名..

vgreduce:VG的缩减

语法:vgreduce 卷组名 设备名..

vgcreate [-s #[mgt]]
VG名称
PV名称

选项:-s:后面接PE的大小(size),单位可以是m,g,t(不区分大小写),默认为4MB

使用 vgcreate Vol_MyVg /dev/sdb1 /dev/sdb2 /dev/sdb3,显示successfully,创建成功



创建逻辑卷(LV)

LV的管理工具有:lvs,lvdisplay,lvcreate,lvremove

lvcreate -L #[mgt] -n
逻辑卷名 卷组名


选项:-L:后接大小,-n:后接LV的名称

使用 lvcreate -L 3G -n MyLv Vol_MyVg,该命令会从指定MyVg的卷组之上,创建一个名为”MyLv“、大小为3G的逻辑卷



格式化加挂载

逻辑卷设备的位置在 /dev/卷组名(VG名)/逻辑卷名(LV名),我们可以格式化和挂载逻辑卷,就像ext分区一样。

我们使用如下命令:

mkfs -t ext4 /dev/Vol_MyVg/MyLv

mkdir /mnt/LVM

mount /dev/dev/Vol_MyVg/MyLv



LVM扩展实现

设备/dev/sdb的总大小为8G,在上述LVM实现过程中,我们将/dev/sdb分成四个分区,每个分区2G,然后用了sdb1,sdb2,sdb3三个分区组成了卷组名为Vol_MyVg的卷组且大小为6GB,并在此卷组之上建立了大小为3GB且卷名为MyLv的逻辑卷,此时Vol_MyVg卷组还省下3GB。

1、扩大卷组(VG)- Vol_MyVg

vgextend:VG的扩充

语法: vgextend 卷组名 设备名..

使用命令 vgextend Vol_MyVg /dev/sdb4 创建,使用vgs 命令显示,详细信息可以使用vgdisplay,由下图可知成功将VG(Vol_MyVg)扩展为8GB



2、扩展逻辑卷(LV) - My_Lv

lvextend:LV的扩充

用法:lvextend -L [+]#[mMgGtT] /dev/卷组名/逻辑卷名

-L:指定大小,+ 号是指在原有逻辑卷上进行增加,不带则是指调整大小为指定数值

先用 lvs 或者 df -h 看看原来逻辑卷的大小,这里为3GB。

我们使用命令 lvextend -L +2G MyLv 来扩展逻辑卷MyLv



此时使用命令 lvs 可见的名为MyLv逻辑卷已变成5GB,但是命令 df -h下挂载点仍然为3GB,我们需使用命令 resize2fs /dev/卷组名/逻辑卷名
来通知内核



LVM缩减实现

经过LVM扩展后,LVM大小情况为,卷组Vol_MyVg的大小为8GB,逻辑卷MyLv的大小为5GB。
假设我们要将卷组Vol_MyVg大小缩减至2GB,逻辑卷MyLv的大小缩减至1GB,需进行以下操作。

1、缩减逻辑卷(LV) - My_Lv

第一步、使用 umount /dev/卷组名/逻辑卷名 命令 卸载已挂载的逻辑卷
第二步、e2fsck -f
/dev/卷组名/逻辑卷名 命令 检测逻辑卷是否正常

第三步、resize2fs
/dev/卷组名/逻辑卷名 #[mMgGtT] 命令通知内核

第四步、lvreduce -L [-]#[mMgGtT] /dev/卷组名/逻辑卷名 命令缩减大小,注意
- 号(有则缩减多少,无则缩减多少)

第五步、mount 挂载使用


2、缩减卷组(VG)- Vol_MyVg

注意事项
a. 卷组大小必须大于由此卷组(VG)建立的逻辑卷(LV)的大小之和。
b. 由于卷组是由物理卷(PV)构成,缩减时,必须将所移除的物理卷(PV)的数据(物理块(PE))移动到该卷组中的其它PV中去。

第一步、使用 pvs 命令查看各PV空间状态,选择要移除的PV,用来缩减VG的大小
第二步、使用 pvmove 要移除的PV设备名 其它PV设备名 命令将卷组上的所要移除的PV,移动到该卷组中的其它PV中
第三步、是用 vgreduce 卷组名
移除的PV设备名 命令进行VG的缩减



实现LVM快照(snapshot)

lvcreate -L
#[mMgGtT] -p r
-s -n
snapshot_lv_name original_lv_name


选项:
-L #[mMgGtT]:指定快照的大小
-p|--permission:指定权限 r 只读,w只写,rw读写

-n:snapshot_lv_name,快照名 original_lv_name,被快照的LV名
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: