Linux LVM磁盘扩容 For CentOS 7

零、前言

背景

本次文档旨在记录Linux系统中LVM的配置方法,了解LVM的逻辑管理。学会配置LVM中磁盘大小的调整

 

LVM简介:(资料来自百度百科,已优化)

LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现,目前最新版本为:稳定版1.0.5,开发版 1.1.0-rc2,以及LVM2开发版。Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。

前言

每个Linux使用者在安装Linux时都会遇到这样的困境:在为系统分区时,如何精确评估和分配各个硬盘分区的容量,因为系统管理员不但要考虑到当前某个分区需要的容量,还要预见该分区以后可能需要的容量的最大值。因为如果估 计不准确,当遇到某个分区不够用时管理员可能甚至要备份整个系统、清除硬盘、重新对硬盘分区,然后恢复数据到新分区。虽然有很多动态调整磁盘的工具可以使用,例如PartitionMagic等等,但是它并不能完全解决问题,因为某个分区可能会再次被耗尽;另外一个方面这需要 重新引导系统才能实现,对于很多关键的服务器,停机是不可接受的,而且对于添加新硬盘,希望一个能跨越多个硬盘驱动器的文件系统时,分区调整程序就不能解 决问题。

因此完美的解决方法应该是在零停机前提下可以自如对文件系统的大小进行调整,可以方便实现文件系统跨越不同磁盘和分区。幸运的是Linux提供的逻辑盘卷管理(LVM,LogicalVolumeManager)机制就是一个完美的解决方案。

LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和 分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组 (volumegroup),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系 统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配,例如按照使用用途进行定义:“development”和“sales”,而不是使用物理磁盘名“sda”和“sdb”。而且当系统添加了新的磁盘,通过LVM管理员就不必将磁盘的 文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。

基本术语

前面谈到,LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的存储卷,在存储卷上建立文件系统。首先我们讨论以下几个LVM术语:

*物理存储介质(PhysicalStorageMedia)

指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元。

*物理卷(Physical Volume,PV)

指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。

*卷组(Volume Group,VG)

类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)。

*逻辑卷(Logical Volume,LV)

类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。

*物理块(Physical Extent,PE)

每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。

*逻辑块(Logical Extent,LE)

逻辑卷LV也被划分为可被寻址的基本单位,称为LE。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

图所示LVM抽象模型,展示了PV、VG、LV三者之间关系:

和非LVM系统将包含分区信息的元数据保存在位于分区的起始位置的分区表中一样,逻辑卷以及卷组相关的元数据也是保存在位于物理卷起始处的VGDA(卷组描述符区域)中。VGDA包括以下内容:PV描述符、VG描述符、LV描述符、和一些PE描述符。

系统启动LVM时激活VG,并将VGDA加载至内存,来识别LV的实际物理存储位置。当系统进行I/O操作时,就会根据VGDA建立的映射机制来访问实际的物理位置。

 

LVM逻辑关系图

PV:可以是磁盘中的分区(如/dev/sdb1,/dev/sdc2等),也可以是整个磁盘(如/dev/sdb,/dev/sdc等)

VG:可以看做是将多个零散的PV组成了一个完成的磁盘

LV:可以看做是在VG组合成的大磁盘中划分出来的分区

说明

本次模拟实验,采用将整个物理磁盘作为PV的方式创建新的VG,如果采用分区作为PV的方法类似,

如需要扩展系统原有VG方法类似.

一、新增LVM逻辑磁盘

1.增加新的磁盘

使用lsblk命令,查看一下当前系统的磁盘状况,发现只有一款物理磁盘是/dev/sda

# lsblk

接下来编辑虚拟机设置,增加一块10G的新硬盘,用来测试

添加完成后,再次运行lsblk查看,可以看到新加的/dev/sdb已经识别,如果没有识别,可能需要重启才能识别到

2.创建PV

查看当前系统的PV信息,可看到,当前只有一个PV,

#pvs

想看下详细信息,可使用pvdisplay查看

#pvdisplay

创建PV

#pvcreate /dev/sdb

使用pvs查看后发现已经已经有两个PV,并且新建的/dev/sdb的PFree是10G

 

注意:创建PV时如果遇到以下提示,说明你的磁盘有分区等操作,并不是完全空白的新硬盘,需要删除分区后在创建,或使用分区来创建PV

# pvcreate /dev/sdb

Device /dev/sdb not found (or ignored by filtering).

或者

# pvcreate /dev/sdc

  Device /dev/sdc excluded by a filter.

以下指令供参考

3.创建VG

查看当前的系统的VG信息,

# vgs

想看下详细信息,可使用vgdisplay查看

创建VG

创建一个名称为vg_data的VG,并将/dev/sdb的PV添加到vg_data中

# vgcreate vg_data /dev/sdb

使用vgs查看后发现已经有两个VG,并且新建的vg_data的VFree是10G

4.创建LV

查看当前的系统的LV信息,

# lvs

想看下详细信息,可使用lvdisplay查看

在vg_data中创建一个名称为lv_u1的LV,并指定lv的大小为全部的VG可供空间

# lvcreate -l 100%Free -n lv_u1 vg_data

 

注意-l参数后面跟的是LV大小如果要LV的大小则100%Free可换成10G等内容

# lvcreate -l 10G -n lv_u1 vg_data

使用lvs查看后发现新建的lv_u1已经可以看到

使用lvdisplay 查看一下详细的内容

5.格式化LV

此时使用lsblk命令可看到我们的lv已经创建成功。

接下来就可以格式化分区了,将lv_u1格式化为XFS格式

# mkfs.xfs /dev/vg_data/lv_u1

格式化完成后,就可以挂载目录使用了

我们在根目录下新建一个u1的文件夹,并挂载到lv_u1上

# mkdir /u1

# mount /dev/vg_data/lv_u1 /u1

# df -hT

 

可以看到u1已经成挂载到新的LV上了

6.挂载新LV

需注意mount命令只会在执行之后挂载磁盘,重启后会丢失

# mount /dev/vg_data/lv_u1 /u1

所以,要实现开机自动加载还需要修改/etc/fstab的内容,可使用以下命令,

# echo "/dev/vg_data/lv_u1 /u1 xfs defaults 0 0" >> /etc/fstab

或直接修改/etc/fstab文件

# vi /etc/fstab

然后重启使用df查看是否挂载成功

# df -h

可以看到已经可以自动挂载

二、扩展LVM逻辑磁盘

在实际应用过程中,可能会遇到预留的磁盘空间不足,需要增加硬盘空间,这里我们模拟增加刚才创建的10G的磁盘,将虚拟磁盘的大小改为15G用来演示。

1.扩展虚拟机磁盘

将10G的虚拟磁盘改为15G

2.更新磁盘信息

新增后,我们同样适用lsblk查看一下,磁盘信息,发现并没有识别到扩展的5G空间

适用partprobe命令,更新一下磁盘信息

更新后,可正常识别到15G的磁盘,如果实在不行,果断重启吧,省的麻烦

3.扩展PV

识别到新扩展的磁盘空间后,需要先扩展PV,先看一下扩展前的信息,PFree是0

# pvs

# pvresize --setphysicalvolumesize 15G /dev/sdb

通过pvs可以看到PFree增加了5G

 

注意这里输入的空间不要超过你的磁盘空间大小,否则会报错一下信息,虽然系统允许你这种强制创建,超过物理从盘大小的PV,但是可能会出现资料丢失的问题,所以还是不要做这种操作了。

4.扩展VG

PV扩展完成后,可以扩展VG了

注意因为我们是直接将整个磁盘作为一个PV而不是一个分区,所以这里VG会自动扩展

# vgs

通过vgs我们就会发现,VFree已经有5G了

这里需要注意,如果是使用分区作为PV的话,这里就需要新建分区或者扩展分区之后再加到VG里面,比较麻烦,所以我比较喜欢用整个磁盘来做PV

5.扩展LV

扩展VG之后,我们就可以来扩展LV了,先看一下扩展之前,lv_u1的大小是10G

# lvs

# lvextend -l +100%Free /dev/vg_data/lv_u1

还是一样,将100%Free空间扩展到LV中,如果要指定大小,可以换成XXG即可,比如5G

再次用lvs查看,可以看到lv_u1已经变成15G了

# lvs

此时并没有结束,df -h可以发现,空间还是10G

# df -h

而且执行partprobe之后也一样

# partprobe

# df -h

这里我们需要使用xfs_growfs来同步文件系统信息,注意因为是XFS 格式的,所以需要使用xfs_growfs来同步,如果是ext4格式的需要使用resize2fs命令

# xfs_growfs /dev/vg_data/lv_u1

# df -h

此时可发现容量已经可以正常识别

三、使用新硬盘到LV中

1.虚拟机增加新硬盘

使用lsblk查看到新添加的10G硬盘/dev/sdc

# lsblk

2.创建PV

与之前一样的步骤

# pvcreate /dev/sdc

看下新建后的PV信息

# pvs

3.扩展VG

将新的PV加到现有的VG中

# vgextend vg_data /dev/sdc

# vgs

4.扩展LV

扩展VG再来扩展LV

# lvextend -l +100%Free /dev/vg_data/lv_u1

# lvs

可以看到lv_u1的空间已经是25G了

5.同步磁盘信息

同步磁盘信息后,可以看到磁盘空间以扩展

# xfs_growfs /dev/vg_data/lv_u1

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值