Linux之LVM
LVM基础概念
使用场景
在生产环境中当磁盘的存储容量不足以支撑数据存储
- 如上图所示当磁盘容量不够的时候,可以进行磁盘的扩充
- 但是当扩充之后如果过了一段时候磁盘容量再次不够呢 继续更换 再次不够 再次更换 这样效率低下且每次更换磁盘对业务可能产生影响
- 为解决此问题 使用LVM动态扩充磁盘的容量
工作原理
1.LVM:逻辑卷管理,其在磁盘分区与文件系统管理中间添加一个逻辑层,来为文件系统屏蔽下层的磁盘分区
2.其提供了一个抽象的盘卷,文件系统被建立在盘卷上
3.管理员使用LVM可以在磁盘不用重新分区情况下动态调整文件系统的大小
4.当添加新的磁盘之后不需要将原有的数据拷贝到新的磁盘之上可以利用LVM跨越磁盘直接将文件系统扩展到新的磁盘
PS:
- 其将底层的物理磁盘直接封装,然后以逻辑卷的方式呈现给上层应用
- 在LVM中因其对底层物理磁盘的封装 当我们操作底层物理磁盘的时候 其不是直接针对物理磁盘进行操作而 是通过逻辑卷的来对底层物理磁盘进行操作
术语
- 物理存储介质:LVM存储介质可以是磁盘 磁盘分区 RAID阵列但是设备初始化必须为LVM物理卷
- 物理卷PV:物理卷就是LVM基本的LVM基本的逻辑块 但是和基本物理存储介质相比其多了LVM的一些参数 创建物理卷可以使用硬盘分区也可以使用硬盘本身
- 卷组VG:将多个物理卷PV组合在一起形成一个卷组
- 逻辑卷LV:LV建立在VG组上 在LV上创建文件系统
- PE(physical extents):PV 物理卷中可以分配的最小存储单元, PE 的大小是可以挃定的,默认为4MB
- LE(logical extent):LV 逡辑卷中可以分配的最小存储单元,在同一个卷组中, LE 的大小和 PE 是相同的,并且一一对应
总结
多个物理介质(磁盘 raid)--->包含多个PV--->多个PV组合成VG--->在VG上划分逻辑卷LV--->格式化文件系统--->挂载使用
优点
- 使用卷组逻辑上多个硬盘像一个大的硬盘
- 使用逻辑卷,可以跨多个硬盘空间的分区 sdb1 sdb2 sdc1 sdd2 sdf
- 在使用逻辑卷时,它可以在空间不足时候动态调整它的大小
- 在调整逻辑卷大小时不需要考虑逡辑卷在硬盘上的位置,不用担心没有可用的连续空间可以在线对 LV,VG 迚行创建,删除,调整大小等操作。 LVM 上的文件系统也需要重新调整大小。
- 允许创建快照,可以用来保存文件系统的备份。
LVM创建与使用
步骤
- 物理磁盘格式化成PV
- 不同的PV加入VG组中
- 在VG组中创建LV逻辑卷
- LV格式化挂载使用
LV的扩展或者减少其实是扩展LV中PE的数量 其不会丢失原有的数据
LVM常用的使用命令
scan
扫描相关的对应卷
create
创建相应的对应卷
display
显示相应的对应卷
remove
移除相应的对应卷
extend
扩展相应的对应卷
reduce
减少相应的对应卷
常见的查看命令
创建LVM
创建PV
- 进行磁盘分区
[root@SR ~]# fdisk /dev/nvme0n2
命令(输入 m 获取帮助):n
分区类型
p 主分区 (0个主分区,0个扩展分区,4空闲)
e 扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (1-4, 默认 1):
第一个扇区 (2048-41943039, 默认 2048):
上个扇区,+sectors 或 +size{K,M,G,T,P} (2048-41943039, 默认 41943039): +2G
创建了一个新分区 1,类型为“Linux”,大小为 2 GiB。
命令(输入 m 获取帮助):n
分区类型
p 主分区 (1个主分区,0个扩展分区,3空闲)
e 扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (2-4, 默认 2):
第一个扇区 (4196352-41943039, 默认 4196352):
上个扇区,+sectors 或 +size{K,M,G,T,P} (4196352-41943039, 默认 41943039): +2G
创建了一个新分区 2,类型为“Linux”,大小为 2 GiB。
命令(输入 m 获取帮助):w
- 设定分区类型
设定分区类型代码: fdisk /dev/sdb ===> t ===> 选择分区号 ====> 8e ====> w
- 创建PV
[root@SR dev]# pvcreate /dev/nvme0n2p{1,2}
- 创建VG组
[root@SR dev]# vgcreate myvg /dev/nvme0n2p{1,2}
- 创建LV
-n:指定lv的名称
-L:指定lv的大小(M/G)
-l:指定le的数量
[root@SR dev]# lvcreate -n mylv -L 16M myvg
- 查看PV被使用
文件系统格式与挂载
文件系统与挂载
[root@SR ~]# mkdir lvtest 创建挂载点
[root@SR ~]# ls /dev/myvg/ 查看逻辑卷
mylv
[root@SR ~]# ll /dev/myvg/mylv
lrwxrwxrwx. 1 root root 7 5月 14 15:37 /dev/myvg/mylv -> ../dm-3 软连接
[root@SR ~]# mkfs.xfs /dev/myvg/mylv 文件系统
[root@SR ~]# mount /dev/myvg/mylv ./lvtest/ 挂载
[root@SR ~]#
[root@SR ~]# df -Th
/dev/mapper/myvg-mylv xfs 11M 1.0M 9.7M 10% /root/lvtest
[root@SR ~]# echo 'hello world' >> /etc/fstab # 载入数据
[root@SR ~]# cat /etc/fstab
hello world # 写入的数据
指定PE大小
-s:指定pe大小 如果文件数据较大 s数值较大为好 数据读取快
[root@SR ~]# vgcreate -s 16M myvg02 /dev/nvme0n2p
LVM扩容
- 确定VG是否有可用空间 LV不能跨VG扩容
说明: 在扩容大小的时候,扩容1G和扩容到1G是不一样的写法
扩容 1G====> -L +1G
扩容到 1G=====> -L 1G
[root@SR ~]# lvextend -L +1G /dev/myvg/mylv
- 扩容真的成功了吗
- 上述现象解释
1.对于文件系统来说磁盘大小相当于划分了一块边界 磁盘空间越大边界越大
2.虽然已经扩展成功了但是文件系统并不知道磁盘进行了扩充 所以磁盘边界还是原来的大小
3.进行文件系统的重新格式化挂载
[root@SR ~]# xfs_growfs /root/lvtest
LVM直接扩容
lvextend -L +1G -r /dev/myvg/mylv
xfs_growfs /root/lvtest/
VG扩容
[root@SR ~]# vgextend myvg /dev/nvme0n2p4
使用SSM动态扩充存储池
基础使用方式
- 安装SSM
yum -y install system-storage-manager
- 查看磁盘相关信息
- 存储池信息
创建ssm
[root@SR ~]# mkdir ./testssm
-s:创建大小
-n:创建名称
-p:卷组名称
--fstype:文件系统
--挂载点
自动把设备变成 pv,创建 vg , lv ,格式化文件系统, 自动挂载
[root@SR ~]# ssm create -s 4G -n ssmtest -p vgssm --fstype xfs /dev/nvme0n2p[1-4] ./testssm/