zoukankan      html  css  js  c++  java
  • 记一次阿里云硬盘LVM的扩容

    正式环境:mail实例:centos 6.9 内核版本:2.6.32
    测试环境: test实例:centos 7.7 内核版本:3.10.0
    需求:centos 6.9的ECS实例中,5块高效云盘,1块系统盘,4块组成了lvm,挂载了iradpad邮箱服务的数据存储,磁盘空间500G,占用超过80%,需要扩容

    LVM的制作步骤:
    yum -y install lvm2
    pvcreate /dev/vdb /dev/vdv /dev/vdd
    pvs | pvdisplay
    vgcreate lvm_01 /dev/vdb /dev/vdc /dev/vdd
    vgs | vgdisplay
    lvcreate -L 50G -n lv01 lvm_01
    lvs | lvdisplay
    mkfs.xfs /dev/lvm_01/lv01
    mount /dev/lvm_01/lv01 /test/
    df -h
    lsblk
    blkid

    方案1:直接选择云盘在线扩容,LVM扩容
    正式环境:centos7以下版本不支持云盘的在线扩容,也没有对应的扩容工具
    测试环境:可以扩容,但有一些注意事项
    扩容步骤:
    1.阿里云控制台选择其中一块进行在线扩容
    2.下载阿里云在线云盘扩容命令
    yum -y install cloud-utils-growpart xfsprogs

    3.查看是否有新增的磁盘空间
    fdisk -l /dev/vda
    growpart /dev/vda (如果是磁盘下分区需要扩容,比如:扩容第一个分区,growpart /dev/vda 1)

    4.对pv卷组内的磁盘进行刷新,重新读取(重点)
    pvresize /dev/vdc
    vgs

    5.将新加空间添加到逻辑卷及xfs文件系统中
    lvextend -l +100%FREE /dev/mapper/lvm_01-lv01
    xfs_growfs /dev/mapper/lvm_01-lv01

    方案2:新建块云盘到LVM中,LVM扩容
    证书环境:实现成功
    测试环境:实现成功
    扩容步骤:
    1.阿里云控制台新增磁盘并挂载到ecs
    2.将新增磁盘pv化
    pvcreate /dev/vde
    pvs

    3.将pv化的新盘加到vg卷组中
    vgextend lvm_01 /dev/vde
    vgs

    4.扫描卷组,刷新vg卷组信息(因我在新增新盘前就做了在线扩容,导致LVM信息和之前不一致,步骤3执行失败)(重点)
    vgscan 或 vgdisplay

    5.将新加空间添加到逻辑卷及xfs文件系统中
    lvextend -l +100%FREE /dev/mapper/lvm_01-lv01
    xfs_growfs /dev/mapper/lvm_01-lv01

    方案3:新添加块硬盘,将LVM数据迁移到新盘,将LVM废弃
    优点:方便管理和备份。LVM所在磁盘备份困难,恢复可能出现问题
    难点:小文件太多,长时间同步到新盘,会造成服务器资源OOM,将部分服务杀死,邮箱服务属于线上服务不能暂停,而且属于陌生项目,出现故障无法排故解决,iradpad文档稀少
    临时方案:数据目录下文件按批次同步到新盘,作为冗余,如果LVM出现故障方便切换和回滚

    题外话:LVM缩容(xfs系统)
    注意事项:ext4缩容比较方便,但是xfs系统不建议缩容,隐患问题会比较严重

    (一)ext4系统缩容(未验证)
    转发https://www.cnblogs.com/cheyunhua/p/14195518.html

    1. 卸载设备
      umount /mnt

    2. 进行磁盘检查
      e2fsck -f /dev/VolGroup/lv_mnt

    3. 收缩文件系统
      resize2fs /dev/VolGroup/lv_mnt 3G

    4. 收缩LV
      lvreduce -L -2G /dev/VolGroup/lv_mnt

    5. 将PE移动到空闲的地方
      查看哪些PV上有空闲的PE
      pvdisplay | grep 'PV Name| Free'
      将PE移动到有空闲PE的PV上
      pvmove /dev/sdb6:0-99 /dev/sdb4

    6. 从VG中移除PV
      vgreduce VolGroup /dev/sdb6

    7. 移除该PV
      pvremove /dev/sdb6

    (二)xfs系统缩容:(有备份较安全)
    转载https://blog.51cto.com/zhukeqiang/2471926(未验证)
    ext4文件系统,扩容和缩减容量都比较慢,我喜欢用xfs文件系统。
    但是今天我才知道xfs的lvm不能直接在线缩减空间,所以一定注意,xfs文件系统的lvm分区,尽量往小了分,一旦上线就只扩不减!
    如果你强行用以前ext4文件系统的lvm扩容方法去缩减空间,会导致出现superblock错误无法挂载非常坑的。

    万不得已需要缩减xfs文件系统的lvm分区空间时候,一定要注意顺序。

    1.安装xfs备份工具
    yum install -y xfsdump

    2.目标数据备份。以/home为例。
    xfsdump -f “dump文件存放的绝对路径加文件名” “需要缩减容量的目录”
    比如 xfsdump -f /opt/home.dump /home

    3.卸载你挂载的目录
    umount /home

    4.把你原来的逻辑卷变成7G是扩大还是缩小它自己会判断
    lvresize -L 7G /dev/mapper/centos-home

    5.格式化以更新到最新大小
    mkfs.xfs -f /dev/mapper/centos-home

    6.挂载出来空分区
    mount /dev/mapper/centos-home

    7.把dump的数据恢复
    xfsrestore -f /opt/home.dump /home

    (三)LVM缩减物理卷
    1.卸载逻辑卷挂载点
    umount /test
    2.缩容逻辑卷空间
    lvreduce -L 50G /dev/mapper/lvm_01-lv01
    3.移除lvm_01卷组中/dev/vde物理卷
    vgreduce lvm_01 /dev/vde
    4.移除/dev/vde物理卷
    pvremove /dev/vde
    5.查看磁盘情况
    lsblk
    df -h

  • 相关阅读:
    MinIO:入门
    JS中面向对象的多种继承方式
    点击按钮实现图片下载
    给大家推荐一个免费的云平台-阿贝云
    REPLACE
    SUBSTRING_REGEXPR 截取字符串
    基本的git/linux/g++/ 等指令
    C++引用和指针&, *
    go语言异常处理 error panic recover defer
    django.db.utils.IntegrityError: (1048, "Column 'id' cannot be null")
  • 原文地址:https://www.cnblogs.com/wangchengshi/p/15598843.html
Copyright © 2011-2022 走看看