自述
曾经DZ先生做过这样的一个校园项目,在施工初期的时候,平台主机只有一块1T系统盘,且这个1T的硬盘只剩余500多G,但由于项目规划的原因,没有增加额外的存储来存储校园的4台人脸相机,于是乎只能将这4台人脸的照片存储平台主机,虽然早就知道存储有用尽的一天,但这一天还是早早的到来了。为了解决这个存储耗尽的问题,DZ先生我给出了使用LVM逻辑卷的方案,可在业务不中断,不更换硬盘,不导入导出业务的情况下,通过增加几块硬盘来解决问题。
原理
LVM(Logical volume Manager)定义:
逻辑卷管理通过将底层物理硬盘抽象封装起来,以逻辑卷的形式表现给上层系统。逻辑卷的大小可以动态调整,而且不会丢失现有数据。新加入的硬盘也不会改变现有上层的逻辑卷。
图一:LVM组成
图二: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
通过fdisk -l 命令查到,我们有两块新的盘sdb和sdc,将其创建为PV
查询命令pvs 或者pvdisplay
2.创建卷组,并将PV加入卷组中
vgcreate linux111 /dev/sdb /dev/sdc --------linux111为卷组名
查询命令vgs 或者vgdisplay
3.基于卷组创建逻辑卷
lvcreate -n mylv -L 2G linux111 -n 逻辑卷名字,-L分配大小 100M、1G等等
注:创建完成后,会在/dev下自动创建linux111卷组名的文件夹,同时mylv1也会在/dev/linux111/目录下
查询命令lvs 或者lvdisplay
4.为创建好的逻辑卷创建文件系统
mkfs.ext3 /dev/linux111/mylv1
5.将格式化好的逻辑卷挂载使用
mount /dev/linux111/mylv /mnt 可以用mount查看是否挂载成功
/dev/mapper/linux111-mylv1 on /mnt type ext3 (rw)
6.LV如何改名字
7.LV挂载重启后丢失挂载如何解决?
1)挂载动作
2) 重启后挂载丢失
3) 修改/etc/fstab文件 ,新增部分见下图。保存重启即可
说明:
格式: /dev/mapper/vg名-lv名字 挂载目录(如u01) 文件格式(可通过df -hT查看) defaults 0 0
文件格式: df -hT可查看现用文件格式,保持统一即可
重启后的结果,明显已经挂载成功
删除LVM
倒过来删除
1. 去除挂载
umount /mnt
2. 删除LV
lvremove /dev/linux111/mylv2
3.删除VG
vgremove linux111
4. 删除PV
pvremove /dev/sdb
如何拉伸一个逻辑卷
1. 首先确保卷组里有足够的空间 vgdisplay|| vgs
2. 扩容LV
扩容前
lvextend -L +100M /dev/linux111/mylv1
扩容后
注意:虽然扩容了,但是没有更新文件系统,新增的100M是不会显示出来的
3. 更新文件系统,更新完则为200M
resize2fs /dev/linux111/mylv1
如何拉伸一个卷组
顾名思义,卷组里没有过多的空间给LV,需要增加扩容空间,也就是扩容PE
1. 将要添加到VG的硬盘格式化PV
pvcreate /dev/sdc
2. 将PV添加到VG中
扩容前
vgextend linux111 /dev/sdc
扩容后
如何缩小一个逻辑卷
注意: 实际中不要轻易的去缩小一个逻辑卷,能不动则不动。一般只扩容,不缩减。这边仅以实验展示,并非实际环境!
1. 卸载已经挂载的逻辑卷
[root@CENTOS /]# umount /dev/linux111/mylv1
2. 缩小文件系统(这边会有命令提示你检查文件系统)
resize2fs /dev/linux111/mylv1 100M 缩小到100M
这边检验通过
3. 缩小LV并查看LV大小
lvreduce -L -100M /dev/linux111/mylv1
4. 最后在挂载
mount /dev/linux111/mylv1 /mnt
如何缩小一个卷组
注意: 实际中不要轻易的去缩小一个卷组,能不动则不动。一般只扩容,不缩减。这边仅以实验展示,并非实际环境!
1. 将一个pv从指定的卷组中去除
vgreduce linux111 /dev/sdc
温馨提示: 实际中,建议只扩不减,只扩不减,只扩不减!!!