Linux LVM(逻辑卷管理)

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名
原文地址:https://www.cnblogs.com/jhcelue/p/6979557.html