(声明:非原创)

    CentOS/RHEL Linux LVM逻辑卷扩容
    1.1 前言
    Linux LVM逻辑卷扩容有2种方法,第1种是直接对/目录进行扩容,前提条件是安装Linux系统时/目录是采用LVM分区方式,如下图就是采用LVM分区:
    image.png

    1. 如果/目录采用的是硬分区,则无法对/进行扩容,只能新建1个卷,挂载至/下面的任一目录,简称挂载点。
    2. 下面展示2种扩容方法。

    1.2 扩容至/目录
    这种环境强调一点,一般只适用于本地硬盘,如服务器本地硬盘或虚拟机,物理机通过FC SAN或IP SAN连接存储的,禁用此方法,否则扩容后无法开机,系统运行在物理机外挂存储的,必须新建目录参考1.4章节。
    这里以VMware虚拟化为例,首先对该虚拟机增加一块硬盘,编辑好想要扩容大小,这里不建议直接增加安装系统的硬盘大小,因为该盘结构复杂(硬分区-LVM),不利于后期多次扩容。例如我们想把这台虚机从200G扩容至500G,那么新添加1块300G的硬盘。
    image.pngimage.png
    添加完成后重启该虚拟机认盘。
    image.png

    1. 查看该盘大小,这里显示会比我们加的略大(算法不同)
    2. fdisk -l /dev/sdb
    3. od命令确认一下,该盘为空盘,Ctrl+C退出
    4. od /dev/sdb
    5. 将/dev/sdb创建pv(物理卷,Physical Volume
    6. pvcreate /dev/sdb
    7. 查看现有pv
    8. pvs
    9. 查看现有vg(卷组,Volume Grouppv创建完成后加入vg
    10. vgs
    11. 将新的pv加入现有vg
    12. vgextend centos /dev/sdb
    13. # centos为变量,根据实际环境自行修改
    14. 再次查看vgVSize容量已经扩容完成
    15. vgs
    16. 再次查看pv,新pv已经属于centos vg
    17. pvs
    18. 查看现有lv(逻辑卷,Logical Volume,从vg划分lv
    19. lvs
    20. root lv卷扩容至最大可用
    21. lvextend -l +100%free -n /dev/mapper/centos-root
    22. # centos-root为变量,意思为vg卷组名-lv卷名,根据实际环境自行修改
    23. 再次查看现有lv
    24. lvs
    25. 最后扩容该lv对应的文件系统,根据文件系统类型不同,一般对应以下2种方法:
    26. xfs文件系统(CentOS/RHEL 7默认格式):
    27. xfs_growfs /dev/mapper/centos-root
    28. # centos-root为变量,意思为vg卷组名-lv卷名,根据实际环境自行修改

    ext4文件系统:
    resize2fs /dev/mapper/centos-root
    # centos-root为变量,意思为vg卷组名-lv卷名,根据实际环境自行修改

    1. 最后确认/目录大小扩容成功
    2. df -Th

    1.3 多次扩容至/目录
    在1.2步骤中,我们将/目录从183G扩容至483G,如空间接近用满需要再次扩容时,比如再扩容500G,方法如下:
    如果是物理服务器,只有本地硬盘可以采用多次新增pv方式向/目录扩容,外挂存储严禁使用该方法向/目录扩容,否则将导致物理机无法启动;
    如果是虚拟机环境,可以直接对1.2步骤中新加的300G硬盘扩容至800G。
    image.png

    1. 扩容完成后重启该虚拟机,以重新识别该硬盘容量。
    2. 操作系统重新识别pv大小
    3. pvresize /dev/sdb
    4. root lv卷扩容至最大可用
    5. lvextend -l +100%free -n /dev/mapper/centos-root
    6. # centos-root为变量,意思为vg卷组名-lv卷名,根据实际环境自行修改
    7. 再次查看现有lv
    8. lvs
    9. 最后扩容该lv对应的文件系统,方法同1.2,下面截图简单说明

    1.4 新建卷并挂载至新目录
    物理服务器外挂存储,或应用软件要求数据单独存放于某目录下,使用该方法,例如将新建卷挂载至/data目录,可以新建多个卷挂至多个目录,方法一样。
    首先添加1块新硬盘,例如1T

    1. 将/dev/sdb创建pv
    2. pvcreate /dev/sdb
    3. 查看现有pv
    4. pvs
    5. 查看现有vg
    6. vgs
    7. 新建vg组,名字不能和现有的重复
    8. vgcreate datavg /dev/sdb
    9. # datavg为变量,根据实际环境自行修改
    10. 新建lv卷,名字不能和现有的重复(lvs查询现有卷,此处略)
    11. lvcreate -l 100%free -n datalv datavg
    12. # datalv为变量,根据实际环境自行修改,datavg为上一步新建vg组名
    13. 查看新建卷
    14. lvs
    15. 对该卷进行格式化,推荐使用xfs文件系统
    16. mkfs.xfs /dev/mapper/datavg-datalv
    17. 新建挂载点
    18. mkdir /data
    19. 编辑/etc/fstab文件,实现自动挂载
    20. vi /etc/fstab
    21. 在文件结尾新添加一行:
    22. vi编辑器简单命令说明,按i进入插入模式,方向键将光标定位至文件末尾,按回车新增一行,输入以上红框内容(卷组、逻辑卷名、挂载目录根据实际情况自行修改),按Esc退出编辑模式,输入:wq保存退出,再cat /etc/fstab确认文件修改正确。
    23. 输入mount -a进行挂载,再输入df -Th查看新卷是否挂载至指定目录。
    24. 最后简单说明一下,如果要对/data目录再次进行扩容,在虚拟环境下直接将虚拟磁盘大小增大,参考1.3步骤类似操作,物理机环境可以将本地硬盘新的pv划入vg组,类似于1.2步骤,此处不再另行举例。