[Linux]逻辑卷LVM配置

逻辑卷LVM配置

什么是LVM

LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,管理员可以在卷组上随意创建逻辑卷组(logical volumes),并进一步在逻辑卷组上创建文件系统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配。

LVM中常用概念

PV(physical volume):物理卷在逻辑卷管理系统最底层,可为整个物理硬盘或实际物理硬盘上的分区。

VG(volume group):卷组建立在物理卷上,一卷组中至少要包括一物理卷,卷组建立后可动态的添加卷到卷组中,一个逻辑卷管理系统工程中可有多个卷组。

LV(logical volume):逻辑卷建立在卷组基础上,卷组中未分配空间可用于建立新的逻辑卷,逻辑卷建立后可以动态扩展和缩小空间。

PE(physical extent):物理区域是物理卷中可用于分配的最小存储单元,物理区域大小在建立卷组时指定,一旦确定不能更改,同一卷组所有物理卷的物理区域大小需一致,新的pv加入到vg后,pe的大小自动更改为vg中定义的pe大小。

LE(logical extent):逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小。

LVM结构图

底层PV是一种LVM格式,VG相当于普通磁盘,LV相当于磁盘上的分区,结构如下:

 

LVM常用命令汇总

任务

PV阶段

VG阶段

LV阶段

查找(scan)

pvscan

vgscan

lvscan

新建(create)

pvcreate

vgcreate

lvcreate

显示(display)

pvdisplay

vgdisplay

lvdisplay

增加(extend)

vgextend

lvextend(lvresize)

减少(reduce)

vgreduce

lvreduce(lvresize)

删除(remove)

pvremove

vgremove

lvremove

改变容量(resize)

lvresize

改变属性(attribute)

pvchange

vgchange

lvchange

配置示例

下面用一个示例,演示LVM常用的配置流程

 

如上图,虚拟机新磁盘sdb为10G,满足以下要求:

1、新建一个2G的逻辑卷,要求卷组名vg0_ext3,逻辑卷名lvm0,大小为1G,文件系统类型ext3,挂载点/data0;

2、将lvm0增大2G,同时增大文件系统,不影响已有文件;

3、将lvm0减小660M,同时减小文件系统,不影响已有文件;

4、新建一个3G的逻辑卷,要求卷组名vg1_xfs,逻辑卷名为lvm1,大小为3G,文件系统类型xfs,挂载点/data1;

5、将lvm1增大1G,增大文件系统,不影响已有文件;

使用ext3文件系统配置LVM

创建LVM

配置如下:

首先使用fdisk划分出2G分区,分区类型为LVM格式;

fdisk /dev/sdb

n(新增分区)--->p(基础分区)--->1(分区号)--->Enter(起始柱面)--->+2G(分区大小)--->t(改变分区类型)--->1(改变的分区号)--->8eLVM分区类型label--->w(保存退出)

查看分区:

 

PV阶段,将sdb1设置为PV格式,并查看:

pvcreate /dev/sdb1

pvdisplay /dev/sdb1

 

VG阶段,在sdb1分区,新建VG卷组名vg0_ext3,并查看该卷组;

vgcreate vg0_ext3 /dev/sdb1

vgdisplay /dev/vg0_ext3                       #注意此时卷组名/dev/vg0_ext3

 

LV阶段,在卷组vg0_ext3上,新建LV,名称lvm0,大小为1G,并查看;

lvcreate -L 1G -n lvm0 /dev/vg0_ext3      #选项 -L指定大小  -n指定lvm名称

lvdisplay /dev/vg0_ext3/lvm0            #注意此处lvm格式

 

查看LVM配置结果:

 

格式化lvm0,文件系统类型ext3,挂载点/data0

mkfs.ext3 /dev/vg0_ext3/lvm0

echo '/dev/vg0_ext3/lvm0 /data0 ext3 defaults 0 0' >> /etc/fstab

mkdir /data0

mount -a

查看挂载结果:

 

扩大LVM

由于剩余PV空间不足2G,需重新划分一个分区,大小2G,加到/dev/vg0_ext3/lvm0中;

配置如下:

fdisk /dev/sdb

N--->p--->2--->Enter--->+2G--->t--->2--->8e--->w--->partprobe(强制内核检查分区表)

 

umount /data0                                               #扩大LVM,首先umount挂载点

pvcreate /dev/sdb2                                        #/dev/sdb2创建PV

vgextend /dev/vg0_ext3 /dev/sdb2                #扩大原有VG,将/dev/sdb2加入

lvextend -L 3G /dev/vg0_ext3/lvm0                #扩大原有LV3G

e2fsck -f /dev/vg0_ext3/lvm0                         #要求强制检查文件系统

 

resize2fs /dev/vg0_ext3/lvm0 3G                 #调整/dev/vg0_ext3/lvm0分区大小为3G

 

查看增大后分区,并挂载

 

缩小LVM

缩小LVM,首先需要umount挂载点

umount /data0

减小660M文件系统,相当于文件系统减小为1024*3-660=2412M

e2fsck -f /dev/vg0_ext3/lvm0

resize2fs /dev/vg0_ext3/lvm0 2412M

 

lvreduce -L 2412M /dev/vg0_ext3/lvm0        #再减小LVM2412M

 

重新挂载后结果

 

使用xfs文件系统配置LVM

创建LVM

首先使用fdisk创建/dev/sdb3,大小为3G,之后开始创建LVM

pvcreate /dev/sdb3

vgcreate vg1_xfs /dev/sdb3

注意此处,由于/dev/sdb3大小是3G,创建LV时可能出现PE不够的情况

 

用vgdisplay查看空闲PE数后,用PE数量创建LV

lvcreate -l 767 -n lvm1 /dev/vg1_xfs                 # -l 参数表示PE个数

 

LV建立后进行格式化、挂载

mkfs.xfs /dev/vg1_xfs/lvm1

echo '/dev/vg1_xfs/lvm1 /data1 xfs defaults 0 0' >> /etc/fstab

mkdir /data1

mount -a

 

扩大LVM

扩大dev/vg1_xfs/lvm1,首先fdisk新建分区/dev/sdb4,大小为1G,再增加LVM

pvcreate /dev/sdb4

vgextend /dev/vg1_xfs /dev/sdb4

查看VG,总PE数为1022

 

lvextend -l 1022 /dev/vg1_xfs/lvm1

 

扩大xfs文件系统,注意xfs文件系统可以在挂载的情况下扩大

xfs_growfs /dev/vg1_xfs/lvm1

 

查看LVM扩大后结果

 

删除LVM

过程跟创建LVM相反,先删除LV,再删除VG,举例删除/dev/vg1_xfs/lvm1

umount /data1

lvremove /dev/vg1_xfs/lvm1

vgremove vg1_xfs

pvremove /dev/sdb4

pvremove /dev/sdb3

最后用fdisk删除磁盘分区即可

 

总结

1、ext3文件系统调整前必须umount,强制检查后调整,即先e2fsck后再resize2fs;

2、xfs文件系统用xfs_growfs扩大,不能减小,没有相应的减小命令,在挂载状态下执行;

3、文件系统减小有风险,尽量避免对根分区操作;

4、如果LV扩大提示空间不足,考虑使用PE个数扩大;

5、PE大小默认4MB,如果要改变,VG阶段使用vgcreate -s指定PE大小,同时其他要加入的逻辑卷PE大小须保持一致;

   

原文地址:https://www.cnblogs.com/gwblogs/p/8486362.html