当前位置: 首页 > news >正文

教程:LVM操作讲解

LVM简介

在系统运维过程中,对磁盘扩缩容是常见的操作。如何高效的管理磁盘容量,lvm提供了很好的解决方案。

LVM将磁盘抽象成PV、VG、LV,方便用户进行磁盘管理,简单来讲,是由物理磁盘划分成PV,PV加入到具体的VG,LV从VG中划分指定容量的空间,再经挂载操作、格式化为具体的文件系统后供进程使用。

本文通过样例讲解数据盘扩缩容。

下图描述了lvm组件之间的关系

在这里插入图片描述

文本有惊喜!!!
在这里插入图片描述

样例环境

  • 添加挂载两块容量为5G scsi的硬盘
    在这里插入图片描述
  • 执行lsblk 命令,显示sdbsdc各5g,说明添加成功

在这里插入图片描述

如果是开机情况下挂载的,由于业务需要不方便关机的话,需要执行磁盘扫描命令

在这里插入图片描述
在这里插入图片描述

执行如下命令即可在线扫描磁盘

echo "- - -" > /sys/devices/pci0000:00/0000:00:10.0/host0/scsi_host/host0/scan
lsblk #查看是否扫描出来

执行 echo "- - -" > /sys/class/scsi_host/host0/scan 效果一样的,该路径软链接到了/sys/devices/pci0000:00/0000:00:10.0/host0/scsi_host/host0

[root@gentlewok ~]# ll /sys/class/scsi_host/host0
lrwxrwxrwx. 1 root root 0 Jun  4 09:29 /sys/class/scsi_host/host0 -> ../../devices/pci0000:00/0000:00:10.0/host0/scsi_host/host0

当前lvm信息

  • pvs显示有哪些pv
[root@gentlewok ~]# pvsPV         VG Fmt  Attr PSize   PFree/dev/sda2  rl lvm2 a--  <19.00g    0 
  • vgs显示有哪些vg
[root@gentlewok ~]# vgsVG #PV #LV #SN Attr   VSize   VFreerl   1   2   0 wz--n- <19.00g    0 
  • lvs显示有哪些lv
[root@gentlewok ~]# lvsLV   VG Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertroot rl -wi-ao---- <17.00g                                                    swap rl -wi-ao----   2.00g      
  • df -h 查看下当前容量
    在这里插入图片描述

磁盘扩容

系统盘扩容

  • pvcreate创建一个pv
[root@gentlewok ~]# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda           8:0    0   20G  0 disk 
├─sda1        8:1    0    1G  0 part /boot
└─sda2        8:2    0   19G  0 part ├─rl-root 253:0    0   17G  0 lvm  /└─rl-swap 253:1    0    2G  0 lvm  [SWAP]
sdb           8:16   0    5G  0 disk 
sdc           8:32   0    5G  0 disk 
sr0          11:0    1  1.7G  0 rom  
[root@gentlewok ~]# pvcreate /dev/sdbPhysical volume "/dev/sdb" successfully created.
[root@gentlewok ~]# 
  • 将pv加入到vg
[root@gentlewok ~]# vgsVG #PV #LV #SN Attr   VSize   VFreerl   1   2   0 wz--n- <19.00g    0 
[root@gentlewok ~]# vgextend rl /dev/sdbVolume group "rl" successfully extended
[root@gentlewok ~]# vgsVG #PV #LV #SN Attr   VSize  VFree rl   2   2   0 wz--n- 23.99g <5.00g
  • 将vg新加的5g加到 lv 上
[root@gentlewok ~]# lvsLV   VG Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertroot rl -wi-ao---- <17.00g                                                    swap rl -wi-ao----   2.00g                                                    
[root@gentlewok ~]# lvextend -l +100%FREE /dev/rl/rootSize of logical volume rl/root changed from <17.00 GiB (4351 extents) to 21.99 GiB (5630 extents).Logical volume rl/root successfully resized.
[root@gentlewok ~]# lvsLV   VG Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertroot rl -wi-ao---- 21.99g                                                    swap rl -wi-ao----  2.00g                                                   
  • 扩展文件系统
    先执行df -Th 确定文件系统
# xfs文件系统使用该命令使扩容生效
xfs_growfs /dev/mapper/vg-lv
# ext4文件系统使用该命令使扩容生效
resize2fs /dev/mapper/vg-lv

在这里插入图片描述
在这里插入图片描述

数据盘扩容

创建data目录 mkdir -p /data

在这里插入图片描述

扩容前lvm信息

在这里插入图片描述

创建pv

在这里插入图片描述

创建数据盘vg并将刚创建的pv加入到vg

vgcreate vg pv

在这里插入图片描述
在这里插入图片描述

创建数据盘lv并将刚创建的vg所有容量加入到 lv

lvcreate -l +100%FREE --name lv vg

在这里插入图片描述

挂载到/data 目录下

在这里插入图片描述
设置开机自动挂载

echo "/dev/mapper/vg--data-lv--data     /data xfs     defaults   0 0" >> /etc/fstab

磁盘缩容

对于扩容来讲,操作正确的情况下,业务是无感知的。缩容本身的逻辑比较简单,只是缩容会影响到到应用的数据读取,实际缩容方案需要综合评估。涉及应用层的变更可简单可复杂,本文不讨论。

本文作为技术点讲解假设应用可以停的情况下,该如何操作? 下面为大概步骤

注意:生产环境所有变更应做好备份后操作

  • 停应用,应用数据目录假设为 /data

  • 新挂载磁盘,创建新挂载点 /data-copy

  • 创建新的pv、vg、lv

  • 新的lv挂载到/data-copy

  • 复制迁移的数据到/data-copy ;命令:cp -a xx /data-copy

  • 卸载/data ;命令: umount /data

  • 卸载/data-copy ;命令: umount /data-copy

  • 挂载新lv/data; 命令:mount 新lv /data

  • 起应用

    就这样!
    在这里插入图片描述

    惊喜

    笔者收集了关于lvm的详细文档,下图为文档目录,需要的回复暗号 lvm

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

  • 【Android】记录在自己的AMD处理器无法使用Android studio 虚拟机处理过程
  • CBA认证-业务架构师认证的尚方宝剑
  • 【Android面试八股文】你能说一说View绘制流程与自定义View注意点吗?
  • 【python】OpenCV——Color Correction
  • 处理导入Excel文件过大导致Zip bomb detected的问题
  • HTML 事件
  • 【八股系列】说一下mobx和redux有什么区别?(React)
  • Python 设计模式(第2版) -- 第四部分(其他设计模式)
  • 路由器的Wi-Fi性能是否限制了你的网速?这里有你想要的答案
  • 动手学深度学习(Pytorch版)代码实践 -深度学习基础-13Kaggle竞赛:2020加州房价预测
  • jnp.linalg.norm
  • 1. C++面向过程
  • 强化安全新篇章:韶关石油化工可燃气体报警器年检解析
  • 收费4980的AI批量混剪,素材技术方法工具配套,详细拆解!
  • Mongodb UPDATE使用$sort将数组重新排序
  • Git初体验
  • HTTP 简介
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • JavaScript实现分页效果
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Laravel Mix运行时关于es2015报错解决方案
  • Promise初体验
  • spring security oauth2 password授权模式
  • Spring声明式事务管理之一:五大属性分析
  • SQLServer之创建数据库快照
  • Swoft 源码剖析 - 代码自动更新机制
  • ⭐ Unity + OpenCV 实现实时图像识别与叠加效果
  • vue-router的history模式发布配置
  • 理解在java “”i=i++;”所发生的事情
  • 聊聊hikari连接池的leakDetectionThreshold
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 如何编写一个可升级的智能合约
  • 深度学习在携程攻略社区的应用
  • 原生JS动态加载JS、CSS文件及代码脚本
  • ​水经微图Web1.5.0版即将上线
  • ###STL(标准模板库)
  • #Datawhale X 李宏毅苹果书 AI夏令营#3.13.2局部极小值与鞍点批量和动量
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • $GOPATH/go.mod exists but should not goland
  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (floyd+补集) poj 3275
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (五)MySQL的备份及恢复
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net Application的目录
  • .NET BackgroundWorker
  • .Net Core中Quartz的使用方法
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .net和php怎么连接,php和apache之间如何连接
  • .net实现头像缩放截取功能 -----转载自accp教程网