自述
曾经DZ先生做过这样的一个校园项目,在施工初期的时候,平台主机只有一块1T系统盘,且这个1T的硬盘只剩余500多G,但由于项目规划的原因,没有增加额外的存储来存储校园的4台人脸相机,于是乎只能将这4台人脸的照片存储平台主机,虽然早就知道存储有用尽的一天,但这一天还是早早的到来了。为了解决这个存储耗尽的问题,DZ先生我给出了使用LVM逻辑卷的方案,可在业务不中断,不更换硬盘,不导入导出业务的情况下,通过增加几块硬盘来解决问题。

原理

LVM(Logical volume Manager)定义:

逻辑卷管理通过将底层物理硬盘抽象封装起来,以逻辑卷的形式表现给上层系统。逻辑卷的大小可以动态调整,而且不会丢失现有数据。新加入的硬盘也不会改变现有上层的逻辑卷。

visual vm 监控内存增加 监控扩大存储容量_visual vm 监控内存增加

  

                                    图一:LVM组成 

visual vm 监控内存增加 监控扩大存储容量_PE_02


                                     图二:LV扩展

PE(physical extend): 物理拓展,是硬盘条带化后的存储块,默认为4M。
PV(physical volume):物理卷是格式化硬盘,包含众多PE的存储空间,一个PV相当于一块硬盘。
VG(physical group):卷组是包含多个PV的一组空间,来自不同的PV的PE进入VG的存储池里,空间不够时,只需要加入新的PV即可。
LV(logical volume):逻辑卷是真正可以被使用的存储,存储空间从VG中划分。
最后将LV格式化并挂载到相应的目录下,即可被正式用。

操作步骤

1.将物理磁盘设备初始化为物理卷

2.创建卷组,并将PV加入卷组中

3.基于卷组创建逻辑卷

4.为创建好的逻辑卷创建文件系统

5.将格式化好的逻辑卷挂载使用


1.将物理磁盘设备初始化为物理卷

pvcreate /dev/sdb  /dev/sdc

visual vm 监控内存增加 监控扩大存储容量_PE_03


通过fdisk -l 命令查到,我们有两块新的盘sdb和sdc,将其创建为PV

visual vm 监控内存增加 监控扩大存储容量_visual vm 监控内存增加_04


查询命令pvs 或者pvdisplay

visual vm 监控内存增加 监控扩大存储容量_PE_05

2.创建卷组,并将PV加入卷组中

vgcreate linux111 /dev/sdb  /dev/sdc   --------linux111为卷组名

visual vm 监控内存增加 监控扩大存储容量_visual vm 监控内存增加_06


查询命令vgs 或者vgdisplay

visual vm 监控内存增加 监控扩大存储容量_LVM_07



3.基于卷组创建逻辑卷

lvcreate -n mylv -L 2G linux111   -n 逻辑卷名字,-L分配大小 100M、1G等等

visual vm 监控内存增加 监控扩大存储容量_PV_08


注:创建完成后,会在/dev下自动创建linux111卷组名的文件夹,同时mylv1也会在/dev/linux111/目录下

查询命令lvs 或者lvdisplay

visual vm 监控内存增加 监控扩大存储容量_visual vm 监控内存增加_09



4.为创建好的逻辑卷创建文件系统

mkfs.ext3 /dev/linux111/mylv1

visual vm 监控内存增加 监控扩大存储容量_PV_10


5.将格式化好的逻辑卷挂载使用

mount /dev/linux111/mylv /mnt  可以用mount查看是否挂载成功

/dev/mapper/linux111-mylv1 on /mnt type ext3 (rw)

visual vm 监控内存增加 监控扩大存储容量_visual vm 监控内存增加_11

6.LV如何改名字

visual vm 监控内存增加 监控扩大存储容量_LV_12

7.LV挂载重启后丢失挂载如何解决?

1)挂载动作

visual vm 监控内存增加 监控扩大存储容量_visual vm 监控内存增加_13


2) 重启后挂载丢失

3) 修改/etc/fstab文件 ,新增部分见下图。保存重启即可

visual vm 监控内存增加 监控扩大存储容量_PE_14


说明:

格式: /dev/mapper/vg名-lv名字  挂载目录(如u01) 文件格式(可通过df -hT查看) defaults 0 0

文件格式: df -hT可查看现用文件格式,保持统一即可

visual vm 监控内存增加 监控扩大存储容量_LVM_15


重启后的结果,明显已经挂载成功

visual vm 监控内存增加 监控扩大存储容量_PV_16

删除LVM

倒过来删除

1. 去除挂载

 umount /mnt


2. 删除LV

lvremove /dev/linux111/mylv2

visual vm 监控内存增加 监控扩大存储容量_PV_17

3.删除VG

vgremove linux111

visual vm 监控内存增加 监控扩大存储容量_PE_18



4. 删除PV

pvremove /dev/sdb

visual vm 监控内存增加 监控扩大存储容量_PE_19

如何拉伸一个逻辑卷

1. 首先确保卷组里有足够的空间  vgdisplay|| vgs

2. 扩容LV

    扩容前

    

visual vm 监控内存增加 监控扩大存储容量_PV_20


    lvextend -L +100M  /dev/linux111/mylv1

    扩容后

    

visual vm 监控内存增加 监控扩大存储容量_PE_21


    注意:虽然扩容了,但是没有更新文件系统,新增的100M是不会显示出来的

 3. 更新文件系统,更新完则为200M
     
resize2fs /dev/linux111/mylv1

    

visual vm 监控内存增加 监控扩大存储容量_LV_22



如何拉伸一个卷组

顾名思义,卷组里没有过多的空间给LV,需要增加扩容空间,也就是扩容PE

1. 将要添加到VG的硬盘格式化PV

pvcreate /dev/sdc


2. 将PV添加到VG中

扩容前

visual vm 监控内存增加 监控扩大存储容量_LVM_23


vgextend linux111  /dev/sdc

扩容后

visual vm 监控内存增加 监控扩大存储容量_LVM_24

如何缩小一个逻辑卷
注意: 实际中不要轻易的去缩小一个逻辑卷,能不动则不动。一般只扩容,不缩减。这边仅以实验展示,并非实际环境!

1. 卸载已经挂载的逻辑卷

[root@CENTOS /]# umount /dev/linux111/mylv1 


2. 缩小文件系统(这边会有命令提示你检查文件系统)

resize2fs /dev/linux111/mylv1 100M  缩小到100M

visual vm 监控内存增加 监控扩大存储容量_PE_25


这边检验通过


3. 缩小LV并查看LV大小

lvreduce -L -100M  /dev/linux111/mylv1

visual vm 监控内存增加 监控扩大存储容量_visual vm 监控内存增加_26

4. 最后在挂载
mount  /dev/linux111/mylv1 /mnt

如何缩小一个卷组

注意: 实际中不要轻易的去缩小一个卷组,能不动则不动。一般只扩容,不缩减。这边仅以实验展示,并非实际环境!

1. 将一个pv从指定的卷组中去除

vgreduce linux111 /dev/sdc

visual vm 监控内存增加 监控扩大存储容量_LV_27

温馨提示: 实际中,建议只扩不减,只扩不减,只扩不减!!!