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

Centos7LVM(逻辑卷管理器)

LVM是什么?LVM即逻辑卷管理器,是Linux系统用户对硬盘分区管理的一种机制,理论性较强,其创建的初衷是为了解决硬盘设备在创建完分区后不易修改分区大小的权限,LVM技术是在硬盘

LVM是什么?

LVM即逻辑卷管理器,是Linux系统用户对硬盘分区管理的一种机制,理论性较强,其创建的初衷是为了解决硬盘设备在创建完分区后不易修改分区大小的权限,LVM技术是在硬盘分区和文件系统之间添加了一个逻辑层,他提供了一个抽象的卷组,可以把多个硬盘进行罐组合并。这样一来,用户就不用担心物理硬盘设备的底层架构布局,可以轻松实现对硬盘分区的动态调整。简而言之,生产中我们某个分区不够用的情况下,出来清理历史数据外,就是调整当前数据的存储位置,否则分区一旦满了,就没法工作了,而LVM技术就可以解决不用迁移原来的数据(原来的分区必须是LVM格式的),就可以随意添加硬盘,然后向LVM分区动态添加空间,当然,也可以缩减空间。重点是原来的数据不会受到任何影响。


了解几个概念

  物理卷:PV【Physical Volume】

  卷组:VG【Volume Group】

  逻辑卷:LV【Logical Volume】

  基本单元:PE【Physical Extent】

  物理卷处于LVM中的最底层,可以将其理解为物理硬盘、硬盘分区或者RAID磁盘阵列。卷组建立在物理卷之上,一个卷组可以包含多个物理卷,而且在卷组创建之后也可以继续向其中添加新的物理卷。逻辑卷是用卷组中空闲的资源建立的,而且物理卷在建立后可以动态的扩建或者缩小红箭。这就是LVM的核心理念。


部署逻辑卷

  首先我们看看物理卷、卷组和逻辑卷的常用命令。















































功能/命令 物理卷管理卷组管理逻辑卷管理
扫描pvscanvgscanlvscan
建立pvcreatevgcreatelvcreate
显示pvdisplayvgdisplaylvdisplay
删除pvremovevgremovelvremove
扩展 vgextendlvextend
缩小 vgreducelvreduce

 

 

 

 

 

 

 

 

 


操作步骤

  首先我们准备两块5GB的硬盘,在虚拟机里添加即可,分别是/dev/sdb和/dev/sdc两块硬盘。

  1、让新建家的两块硬盘设备支持LVM技术。(注意,当前操作系统是Centos7.7 最小化安装的没有lvm相关命令,需要yum install -y lvm2进行安装)

  #pvcreate /dev/sdb /dev/sdc

  

   2、把两块硬盘设备加入到storage卷组中,然后查看卷组的状态。

  #vgcreate storage /dev/sdb  /dev/sdc

  

  #vgdisplay

  

   3、切割出一个6GB的逻辑卷设备。

    这里需要注意切割单位的问题。在对逻辑卷进行切割时候有两种计量单位。第一种是以容量为单位,所使用的参数是-L。例如,在使用-L 6G生成一个大小等于6G的逻辑卷。另外一种是以基本单位的个数为单位,所使用的参数为-l。每个单元的到校默认为4MB。例如使用-l 1000可以生成一个大小为4MBx1000=4000MB的逻辑卷。后者显然有点繁琐,我们就用-L计量单位为各位演示下面的操作。

  # lvcreate -n vo -L 6G storage

  

   查看逻辑卷

  # lvdisplay

  

   4、把生成好的逻辑卷进行格式化,然后挂载使用,这里我们用ext4格式为各位演示。Linux系统会把LVM中的逻辑卷设备存放在/dev设备目录中(实际上是做了一个符号链接),同时会以卷组的名称来建立一个目录,其中保存了逻辑卷的设备映射文件(即/dev/卷组名称、逻辑卷名称)

  # mkfs.ext4 /dev/storage/vo

  

  创建挂载目录,并挂载逻辑卷

  # mkdir /lvmtest

  # mount /dev/storage/vo /lvmtest/

  5、查看挂载状态,并写入挂载配置文件,使其永久生效。

  # vim /etc/fstab  (追加至最后一条)

  /dev/storage/vo /lvmtest ext4 defaults 0 0

   

  验证

  


扩容逻辑卷

  前面我们挂载了两块5GB的硬盘,我们初始给LVM的使用空间是6GB,我们最大可以扩容到10GB,下面进行扩容。

  1、首先需要卸载之前的lvm挂载盘。

  # umount /lvmtest/

  2、把前面LVM的6GB扩容至9GB。

  # lvextend -L 9G /dev/storage/vo 

  

   3、检查硬盘完整性,并重置硬盘容量。

  # e2fsck  -f /dev/storage/vo

  

  重置硬盘容量,这一步很重要,如果不重置LVM容量将还是6GB。下面是ext4的重置方法,xfs格式需要用命令:# xfs_growfs /dev/storage/vo

  # resize2fs /dev/storage/vo

   

   最后,我们挂载一下,然后验证LVM容量。

  


缩小逻辑卷

  相较于扩容逻辑卷,在对逻辑卷进行缩减容量操作时,其丢失数据的风险更大。所以在生产环境中执行相应操作时,一定要提前备份好数据。另外Linux系统规定,在对LVM逻辑卷进行缩容操作之前,要先检查文件系统的完整性(也是为了保证数据安全)。在执行缩容操作前记得先把文件系统卸载掉。

  1、卸载。

  # umount /lvmtest/

  2、检查文件系统的完整性。

  # e2fsck -f /dev/storage/vo

  

   3、把逻辑卷vo的容量缩减到5GB。

  # resize2fs  /dev/storage/vo   5G

  

   4、重新挂载文件系统并查看系统状态。

  # mount -a

  #df -h

  


删除逻辑卷

  生产环境中想要重新部署LVM或者不再继续使用LVM时,则需要执行LVM的删除操作。为此,需要提前备份好重要的数据信息,然后依次删除逻辑卷、卷组、物理卷设备,这个顺序不可颠覆。

  1、取消逻辑卷与目录的挂载关联,删除配置文件中的永久生效(/etc/fstab下的挂载记录)的设备参数。

  #umount /lvmtest

  #vim /etc/fstab,进来删除或者注释LVM挂载记录。

  2、删除逻辑卷设备,需要输入y来确认操作。

  # lvremove /dev/storage/vo

  

   3、删除卷组,此处只写卷组名称即可,不需要设备的绝对路径。

  # vgremove storage

  

   4、删除物理卷设备。

  # pvremove  /dev/sdb /dev/sdc

  

   5、最后一步,在上述操作完成没有报错之后,再执行lvdisplay、vgdisplay、pvdisplay命令来查看LVM的信息时就不会再看到信息了。

  


 问题一:

  如果我们之前已经完成了/dev/sdb和/dev/sdc两块硬盘的操作,比如我们两块硬盘的总容量是10GB,我们已经用了9GB,我们又想新加一块硬盘怎么操作呢?如下:

  现状:

  

 

   

  开始:

  这里我们用的是虚拟机,添加硬盘我们就不再赘述,我们直接开始。

  1、查看硬盘信息。

  

  2、让新加的sdd硬盘设备支持LVM技术。

  # pvcreate /dev/sdd

  

  3、 把sdd这块硬盘设备加入到storage卷组中,然后查看卷组状态。

  # vgextend storage /dev/sdd

  # vgdisplay

  如下图所示,已经添加成功。

  

   4、扩容、扩容、扩容,给它扩容到14GB,记住每次扩容缩容都必须先卸载文件系统。

  # umount /lvmtest/

  # lvextend -L 14G /dev/storage/vo

  

   检查硬盘完整性,并重置硬盘容量。

  # e2fsck -f /dev/storage/vo 

  # resize2fs /dev/storage/vo

  

   5、最后挂载文件系统,并验证效果。

  


逻辑卷快照

  LVM具备“快照卷”功能,功能类似于VMware workstation的快照功能,可以对某个逻辑卷设备做一次快照,如果日后发现数据改错了,可以利用做好的亏按照进行覆盖还原,不过它有两个特点。

  1、亏按照卷的容量必须等同于逻辑卷的容量。

  2、快照卷仅此一次有效,一旦执行还原操作后则会被立即自动删除。

  3、那么问题来了,比如我卷组总共空间2TB,当前数据已经有1.5TB,我得做一个一样大的卷组,显然当前的这个卷组是不可能再有1.5TB的空间了,除非扩容,很浪费空间。据说快照和逻辑卷必须是在同一卷组上。

  4、这个东西凭我个人的经验,生产过程中基本用不到,阿里云有快照那个更安全快捷。本地有本地备份和异地备份文件,有兴趣可以自己了解一下。



推荐阅读
  • 解决CentOS 7.5中无法通过man命令查询C语言库函数的问题
    本文描述了在CentOS 7.5操作系统上,使用man命令查询C语言库函数时遇到的问题,并提供了详细的解决方案。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • CentOS 转向引发争议,联合创始人推出 Rocky Linux
    CentOS 转向 CentOS Stream 引发用户不满,其联合创始人 Gregory Kurtzer 推出新的社区项目 Rocky Linux,旨在延续 CentOS 的精神。 ... [详细]
  • 解决Jenkins实例离线问题的新方法
    针对新版Jenkins镜像遇到的‘实例离线’问题,本文提供了一种通过调整Linux系统防火墙设置的有效解决方案,旨在为遇到类似问题的用户提供新的思路和帮助。 ... [详细]
  • 在DELL Inspiron 14R上部署CentOS X64 6.4的详细步骤
    本文详细记录了在DELL Inspiron 14R笔记本电脑上安装CentOS X64 6.4操作系统的过程,包括遇到的问题及解决方法。 ... [详细]
  • Docker入门与实践指南
    本文介绍了Docker的基础知识,包括其作为开源应用容器引擎的特点,以及如何利用Docker将应用程序及其依赖项打包成轻量级的容器镜像。同时,还详细讲解了Docker的核心概念、安装过程及基本命令操作。 ... [详细]
  • GNU GRUB(简称GRUB)是一个来自GNU项目的支持多启动的引导加载程序。它允许用户在同一台计算机上安装多个操作系统,并在启动时选择希望启动的系统。 ... [详细]
  • 本文详细介绍了如何在Python环境中配置与Oracle数据库的连接,包括必要的软件安装和环境变量设置等步骤,旨在为初学者提供清晰的操作指南。 ... [详细]
  • 解决腾讯社区开放平台.NET SDK在Linux下的兼容性问题
    本文探讨了腾讯社区开放平台.NET SDK在Linux系统(如CentOS)中遇到的QzoneException异常,并提供了通过安装根证书等方法解决该问题的具体步骤。 ... [详细]
  • 本文档详细介绍了在 CentOS Linux 7.9 系统环境下,如何从源代码编译安装 libwebsockets 库及其示例程序,并提供了编译过程中可能遇到的问题及解决方案。 ... [详细]
  • 本文详细介绍了在Ubuntu 7.10操作系统上安装多种常用软件的方法,包括RAR压缩工具、即时通讯软件Pidgin、办公软件永中Office 2007试用版、多线程下载软件MultiGet及d4x、FTP客户端gFTP与FireFTP插件,以及P2P下载工具aMule。每部分都提供了具体的安装步骤和配置方法。 ... [详细]
  • 本文档详细介绍了在 CentOS 7 系统上安装 Redis 的步骤,包括环境准备、软件安装、配置调整及服务管理等环节。 ... [详细]
  • 本文探讨了Unix和Linux操作系统的起源和发展历程。从20世纪60年代计算机技术的初期阶段,到Unix的诞生及后续Linux的崛起,文章详细介绍了这些操作系统如何逐步成为现代计算不可或缺的一部分。 ... [详细]
  • 在CentOS上构建Ntopng实时网络流量监控平台
    本文详细介绍了如何在CentOS操作系统上安装和配置Ntopng,一个强大的网络流量监控工具。Ntopng能够提供实时的网络流量分析,并通过Web界面展示详细的流量报告。 ... [详细]
  • magent是一款开源的Memcached代理服务器软件,其项目网址为:  http:code.google.compmemagent  一、安装步骤& ... [详细]
author-avatar
bj_gqdy_342
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有