热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

Linux使用LVM逻辑卷给分区扩容不重启热扩容

虚拟机的硬盘不够用了,里面又正在跑着服务不能重新格式化分区该怎么办呢?跟大家说一下如何使用LVM来进行动态热扩容。首先:确定你的操作系统安装时是使用LVM进行分区的,否则是无法使

虚拟机的硬盘不够用了,里面又正在跑着服务 不能重新格式化分区 该怎么办呢?跟大家说一下 如何使用LVM来进行动态热扩容。

首先:确定你的操作系统安装时 是使用LVM进行分区的,否则是无法使用LVM进行扩容的。查看方式:

使用下面的命令查看:


如上图所示:介绍几个概念

PV:就是physical volume:物理卷,类似我们的硬盘;

VG:volume group 卷组:vg可以把很多个pv包含进来,形成一个整体的vg,这个vg又可以做为整体:分配出多个lv,每个lv可以挂载一个文件系统目录,这样我们控制每个挂载目录的硬盘空间就会非常灵活。

LV:logical volume逻辑卷:它是进行目录挂载的,每一个lv挂载一个目录,类似于我们的硬盘分区,不同于分区的是,所有的lv共有一个vg的空间;vg可以把自己内部的free的硬盘空间分配给任意一个lv,所以就可以实现lv的动态扩容。

========通俗的介绍一下LV(逻辑卷)、PV(物理卷)、VG(卷组)之间的关系,及扩容的原理==========

PV就像我们的一块一块硬盘,每块硬盘可以通过LVM生成一个PV,然后我们把很多个PV组成一个整体的VG;这时我们的VG就可以把自己的空间分配出任意个LV(系统挂载目录),不分配的可以留着,就是VG的free空间,free的空间VG想分配给哪个LV 就分配的哪个LV。这时,我们新添加的硬盘,我们把它加入到VG里,那么VG的free空间 就增加了,就可以分配给我们想扩容的那个挂载目录,从而就实现了硬盘扩容。

===========好了 明白了原理,我们就来实际操作===============
使用LVM系统扩容主要步骤:

1. 首先给虚拟机添加一块新的SCSI硬盘;SCSI支持热插拔,不需要重启

按照默认的就可以,然后指定要分配的硬盘大小

在虚拟机中添加硬盘成功后,使用下面命令:热读取添加的硬盘
查看主机总线号
root@node  /]# ls /sys/class/scsi_host/
host0  host1  host2
重新扫描SCSI总线来添加设备
[root@node /]# echo "- - -" > /sys/class/scsi_host/host0/scan
[root@node /]# echo "- - -" > /sys/class/scsi_host/host1/scan
[root@node /]# echo "- - -" > /sys/class/scsi_host/host2/scan

创建物理卷PV:可以一次创建多个物理卷,每个硬盘是一个物理卷,我们可以通过 VG来组合和分配各个物理卷的空间,分配给LV即逻辑卷,逻辑卷LV可以执行mount挂载,在系统中使用,我们从而可以动态调整LV的空间大小pvcreate /dev/sdd /dev/sde
Physical volume "/dev/sdd" "/dev/sde" successfully created
创建VG,物理卷组 即将多块硬盘或硬盘分区,组合成一个VG组,

查看vg信息命令
vgdisplay 或 vgs
vg_lexzhang 是创建的VG设备的名称,我们通过上面的vgs命令已经查看到了


设置开机自动挂载 vim /etc/fstab
=============================================
对碰LV进行扩展:
①我们可以从VG中给VG中包含的LV进行空间分配
[root@localhost ~]# vgs 查看卷组的空间:如下vg0,包含两个PV(我们期初添加的两块硬盘,LV一个,就是我们创建的lv1,并挂载到了根目录/lv1下)总空间14.99G,Free空间3.99G
VG #PV #LV #SN Attr VSize VFree
vg0 2 1 0 wz--n- 14.99g 3.99g
查看lv的空间占用:lv1,所属vg组vg0,lv所占空间11G
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg0 -wi-ao---- 11.00g
现在我们给lv1卷 扩展空间:给lv1 添加1G空间
lvextend -L +1G /dev/vg0/lv1
添加后,使用df -TH发现实际容量并没有变化,因为我们的系统还不认识刚刚添加进来的磁盘的文件系统,所以还
然后使用df -TH 查看,文件系统中空间 增加成功
②如果VG空间用完,我们可以新添加硬盘,然后把硬盘空间添加到VG中,在给LV分配空间
将我们新添加的硬盘,创建成PV
[root@localhost ~]# pvcreate /dev/sdd
Physical volume "/dev/sdd" successfully created
查看VG用量:vgs
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg_lexzhang 2 1 0 wz--n- 14.99g 1.99g
对vg0卷组进行扩容:如下命令
[root@localhost ~]# vgextend vg_lexzhang /dev/sdd
Volume group "vg_lexzhang" successfully extended
再查看添加过后的vg信息:容量已经扩展为17G,原先15G+2G
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg_lexzhang 3 1 0 wz--n- 16.98g 3.98g
卷组容量扩充之后:对卷组内的lv进行扩容:
lvextend -L +1G /dev/vg_lexzhang /LogVol00
扩容之后,lvs查看我们的lv发现容量的确扩展了。
将扩容扩展给文件系统,即让我们的挂载目录重新获取一下存储

需要对文件系统进行扩容。

resize2fs /dev/vg_lexzhang/LogVol00
执行完之后,我们使用命令查看一下我们的硬盘空间
命令:df -TH 发现我们的存储的确扩展了
============本人文笔不好,如果有哪里没写清楚的,请给我留言===========


推荐阅读
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • NFS(Network File System)即网络文件系统,是一种分布式文件系统协议,主要用于Unix和类Unix系统之间的文件共享。本文详细介绍NFS的配置文件/etc/exports和相关服务配置,帮助读者理解如何在Linux环境中配置NFS客户端。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • Linux 基础命令详解
    本文介绍了在 Linux 系统中常见的命令及其用法。当用户登录系统后,默认提示符会显示为 [root@localhost ~]# 或 [user@localhost ~]$,其中 # 表示当前用户为 root,$ 表示普通用户。我们将深入探讨一些常用的 Linux 命令,帮助初学者更好地理解和使用这些工具。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 在成功安装和测试MySQL及Apache之后,接下来的步骤是安装PHP。为了确保安全性和配置的一致性,建议在安装PHP前先停止MySQL和Apache服务,并将MySQL集成到PHP中。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • 请看|间隔时间_Postgresql 主从复制 ... [详细]
author-avatar
OpenZzzz
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有