lvm 架构图示:
对于生产环境下的服务器来说,如果存储数据的分区磁盘空间不够了怎么办?
解决方案:使用LVM 在线动态扩容
LVM的工作原理:
LVM( Logical Volume Manager)逻辑卷管理,是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。管理员利用LVM可以在磁盘不用重新分区的情况下动态调整文件系统的大小,并且利用LVM管理的文件系统可以跨越磁盘,当服务器添加了新的磁盘后,管理员不必将原有的文件移动到新的磁盘上,而是通过LVM可以直接扩展文件系统跨越磁盘。
它就是通过将底层的物理硬盘封装起来,然后以逻辑卷的方式呈现给上层应用。在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。
LVM的常用术语:
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的大小是可以指定的,默认为4M
LE(logical extents):LV中可以分配的最小的存储单元,在同一卷组中LE的大小与PE的大小相同并且一一对应
LVM 主要元素构成图:
总结:多个(物理介质) ---> 多个物理卷PV ---> 合成VG ---> VG里划分LV ---> 格式化LV ---> 挂载使用
LVM优点:
1、使用卷组VG可以使得多个硬盘看起来像是一个大的硬盘。
2、使用逻辑卷LV可以跨多个硬盘空间的分区。
3、使用逻辑卷LV时可以在空间不足时动态调整它的大小。
4、在调整逻辑卷LV时,不需要考虑逻辑卷在硬盘上的位置,也不用担心没有可用的连续空间。
5、可以在线对LV、VG 进行创建、删除、调整大小等操作。
总结:RAID + LVM 一起用:LVM 是软件的卷管理方式,而RAID是磁盘管理的方法。对于重要的数据,使用RAID来保护物理的磁盘不会因为故障而中断业务,再使用LVM实现对卷的良性管理,可以更好的利用磁盘资源。
LVM的常用命令:
功能 |
PV管理命令 |
VG管理命令 |
LV管理命令 |
scan 扫描 |
pvscan |
vgscan |
lvscan |
create 创建 |
pvcreate |
vgcreate |
lvcreate |
display显示 |
pvdisplay |
vgdisplay |
lvdisplay |
remove 移除 |
pvremove |
vgremove |
lvremove |
extend 扩展 |
|
vgextend |
lvextend |
reduce减少 |
|
vgreduce |
lvreduce |
查看相关的命令:
查看卷名 |
简单对应卷信息的查看 |
扫描相关的所有的对应卷 |
详细对应卷信息的查看 |
物理卷 |
pvs |
pvscan |
pvdisplay |
卷组 |
vgs |
vgscan |
vgdisplay |
逻辑卷 |
lvs |
lvscan |
lvdisplay |
实验:
① 创建4个分区,并且每个分区为1G(/dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4)
② 创建物理卷PV
pvcreate /dev/sdb{1,2,3,4}
③ 创建卷组VG
语法:vgcreate [vgname] [pvname] (可以跟多个pv)
vgcreate vg01 /dev/sdb1
④ 创建逻辑卷LV
语法:lvcreate -n [逻辑卷的名称] -L 指定LV 的大小(size M、G) (-l 指定LE 的数量) [vgname]
lvcreate -n lv01 -L 50M vg01
⑥ 格式化LV
mkfs.xfs(mkfs.ext2 mkfs.ext3 mkfs.ext4) /dev/vg01/lv01
⑦ 挂载到文件系统
mkdir /lv01
mount /dev/vg01/lv01 /lv01
PE的大小指定:指定PE大小的参数 -s ,如果 存储的数据都是大文件,那么PE要尽量调大(PE的大小只能为2的幂数,且最大为512) 读取速度快。
LV 的扩容操作?(扩容到30M:-L 30M;扩容增加30M :-L +30M)
lvextend -L 300M /dev/vg01/lv01
lvextend -L +300M /dev/vg01/lv01
注意:逻辑卷LV 虽然扩展了,但是文件系统下的大小依然没有变化。
ext4 文件系统扩容命令语法 resize2fs 逻辑卷名称
xfs 文件系统扩容命令语法 xfs_growfs 挂载点
注意:resize2fs和xfs_growfs 两者的区别是传递的参数不一样的,xfs_growfs是采用的挂载点;resize2fs是逻辑卷名称,而且resize2fs命令不能对xfs类型文件系统使用
卷组 VG 扩容?(VG卷组中的空间不够了,需要添加新的硬盘进来)
LVM可以动态增加,可以动态缩小吗?
LVM可以动态增加,也可以动态缩小,但是XFS不支持动态缩小,所以我们无法实现基于xfs的动态缩小。btrfs文件系统支持在线缩小。
创建LVM流程:
pvcreate创建pv -> vgcreate创建卷组 -> lvcreate创建逻辑卷 -> mkfs.xfs lv 格式化-> mount挂载
删除LVM流程:
umount卸载 -> lvremove lv移出卷组中所有逻辑卷-> vgremove vg移出卷组-> pvremove 移出pv
unmount /lv02
lvremove /dev/vg02/lv02
vgremove vg02
pvremove /dev/sdb2 /dev/sdb3
使用ssm 工具构建 LVM 架构
安装ssm 工具:yum -y install system-storage-manager
语法:ssm create -s lv大小 -n lv名称 --fstype lv文件系统类型 -p 卷组名 设备 挂载点
ssm create -s 1G -n test-lv --fstype xfs -p test /dev/sdb{1,2,3,4} /test