LVM的基本概念
-
实战场景:对于生产环境下的服务器来说,如果存储数据的分区磁盘空间不够了怎么办?
-
答:只能换一个更大的磁盘。 如果用了一段时间后, 空间又不够了,怎么办?再加一块更大的?换磁盘的过程中,还需要把数据从一个硬盘复制到另一个硬盘,过程太慢了。
-
解决方案:使用LVM在线动态扩容
LVM的工作原理
LVM( Logical Volume Manager)逻辑卷管理,是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。管理员利用LVM可以在磁盘不用重新分区的情况下动态调整文件系统的大小,并且利用LVM管理的文件系统可以跨越磁盘,当服务器添加了新的磁盘后,管理员不必将原有的文件移动到新的磁盘上,而是通过LVM可以直接扩展文件系统跨越磁盘
它就是通过将底层的物理硬盘封装起来,然后以逻辑卷的方式呈现给上层应用。在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。
LVM常用的术语
-
物理存储介质(The physical media):LVM存储介质可以是磁盘分区,整个磁盘,RAID阵列或SAN磁盘,设备必须初始化为LVM物理卷,才能与LVM结合使用
-
物理卷PV(physical volume) :物理卷就是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数,创建物理卷它可以用硬盘分区,也可以用硬盘本身;
卷组VG(Volume Group) :一个LVM卷组由一个或多个物理卷组成
- 逻辑卷LV(logical volume) :LV建立在VG之上,可以在LV之上建立文件系统
PE(physical extents) :PV物理卷中可以分配的最小存储单元,PE的大小是可以指定的,默认为4MB
-
LE(logical extent) : LV逻辑卷中可以分配的最小存储单元,在同一个卷组中,LE的大小和PE是相同的
-
最小存储单位总结:
名称 最小存储单位
硬盘 扇区(512字节)
文件系统 block(1K或4K )# mkfs.ext4 -b 2048 /dev/sdb1 ,最大支持到4096
raid chunk (512K) #mdadm -C -v /dev/md5 -l 5 -n 3 -c 512 -x 1 /dev/sde{1,2,3,5}
LVM PE (4M) # vgcreate -s 4M vg1 /dev/sdb{1,2}
磁盘结构
操作思路:
总结:多个磁盘/分区/raid-> 多个物理卷PV->
合成卷组VG->从VG划出逻辑卷LV-> 格式化LV挂载使用
创建lvm步骤:
a) 添加物理磁盘,创建物理卷
b) 创建卷组,将物理卷加入卷组
c) 在卷组中划分逻辑卷
d) 格式化逻辑卷
e) 挂载使用
实验环境
系统 | ip |
---|---|
centos 7 | 192.168.10.11 |
常用命令
功能 | pv管理命令 | vg管理命令 | lv管理命令 |
---|---|---|---|
scan 扫描 | pvscan | vgscan | lvscan |
create创建 | pvcreate | vgcreate | lvcreate |
display 显示 | pvdisplay | vgdisplay | lvdisplay |
remove 移除 | pvremove | vgremove | lvcreate |
extend 扩展 | vgextend | lvextend | |
reduce 减少 | vgreduce | lvreduce |
实验演示
- 准备物理磁盘
[root@localhost ~]# lsblk |grep "sd[bcd]"
sdb 8:16 0 1G 0 disk
sdc 8:32 0 1G 0 disk
sdd 8:48 0 1G 0 disk
- 将磁盘加入pv
[root@localhost ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
[root@localhost ~]# partprobe /dev/sdb 记得刷新下
[root@localhost ~]#
//检查pv创建情况
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm2 --- 1.00g 1.00g
- 创建名为datavg的卷组
[root@localhost ~]# vgcreate datavg /dev/sdb
Volume group "datavg" successfully created
//检查卷组
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
datavg 1 0 0 wz--n- 1020.00m 1020.00m
- 创建逻辑卷, 分配名称, 以及大小, 指定卷组
[root@localhost ~]# lvcreate -L 100M -n lv1 datavg
Logical volume "datalv1" created.
//检查逻辑卷
[root@localhost ~]# lvscan
ACTIVE '/dev/datavg/lv1' [100.00 MiB] inherit
- 格式化文件系统
[root@localhost ~]# mkfs.xfs /dev/datavg/lv1
//挂载并使用
[root@localhost ~]# mkdir /lv1
[root@localhost ~]# mount /dev/datavg/lv1 /lv1/
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/mapper/datavg-lv1 97M 5.2M 92M 6% /lv1
卷组管理
- 扩展卷组,将新磁盘加入卷组
新硬盘加入pv
[root@localhost ~]# pvcreate /dev/sdc
- 使用vgextend扩展
[root@localhost ~]# vgextend datavg /dev/sdc
Volume group "datavg" successfully extended
- 缩减卷组,将指定磁盘从卷组中删除
[root@localhost ~]# vgreduce datavg /dev/sdb
Removed "/dev/sdb" from volume group "datavg"
``
- 数据迁移卷组,同一卷组的磁盘才可以进行在线迁移
//检查当前逻辑卷VG中PV使用情况
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb vg1 lvm2 a -- 2.00g 1.76g
/dev/sdc vg1 lvm2 a -- 2.00g 2.00g
- pvmove在线数据迁移至其他pv
[root@localhost ~]# pvmove /dev/sdb
/dev/sdb: Moved: 41.33%
/dev/sdb: Moved: 100.00%
- 检查是否将sdb数据迁移至sdc
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb vg1 lvm2 a -- 2.00g 2.00g
/dev/sdc vg1 lvm2 a -- 2.00g 1.76g
- 逻辑卷管理
逻辑卷扩展,逻辑卷的扩展取决于卷组中的容量,逻辑卷扩展的容量不能超过卷组的容量
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 2 2 0 wz --n- 1.88g 1.00g
- 扩展lv逻辑卷
//增加800M分配给逻辑卷 {注意: 800M +800M 不一样}
[root@localhost ~]# lvextend -L +800M /dev/datavg/lv1
//分配磁盘池中多少百分比给逻辑卷
[root@localhost ~]# lvextend -l +50%FREE /dev/datavg/lv1
- 扩展fs文件系统
//xfs扩容
[root@localhost ~]# xfs_growfs /dev/datavg/lv1
//ext扩容
[root@localhost ~]# resize2fs /dev/datavg/lv1
对ext4文件系统的逻辑卷裁剪容量
- 如果已经挂载,必须先卸载
1. umount /dev/finance/uplooking 如果已经挂载,必须先卸载
e2fsck -f /dev/finance/uplooking 裁剪容量,必须是先检测文件系统
resize2fs /dev/finance/uplooking 512M
4. lvreduce -L 512M /dev/finance/uplooking 调整完毕后采取裁剪逻辑卷容量
WARNING: Reducing active logical volume to 512.00 MiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce uplooking? [y/n]: y
5. e2fsck -f /dev/finance/uplooking 强烈建议裁剪后,再次检测文件系统
挂载测试
如果能够挂载,一般说明裁剪成功,文件系统没有损坏
- 缩减逻辑卷注意事项:
不能在线缩减,得先卸载;
确保缩减后的空间大小依然能存储原有的所有数据;
在缩减之前应该先强行检查文件,以确保文件系统处于一致性状态。使用命令e2fsck -f /PATH/TO/LV