Centos7挂载磁盘原盘扩容-硬盘扩容

起因:政务云上的硬盘使用到99%了,经申请,政务云给我们把原盘容量扩容了一倍,需要我们手动扩容分区容量。

本文操作适用于以下云盘扩容场景:

  • Linux实例云盘,已分区,将扩容部分的容量划分至已有分区:需扩容分区和文件系统。

重点:一定要做磁盘快照,一般云盘运营商都提供的!!!!

重点:一定要做磁盘快照,一般云盘运营商都提供的!!!!

重点:一定要做磁盘快照,一般云盘运营商都提供的!!!!

  • 远程连接ECS实例。

    具体操作,不作解释了。。。

  • 运行以下命令,确认待扩容云盘及其分区信息。

    放大查看复制代码
    fdisk -lu

    Centos7挂载磁盘原盘扩容-硬盘扩容_第1张图片

    如图所示,表示该实例有2块云盘,系统盘/dev/vda和数据盘/dev/vdb,我们以数据盘/dev/vdb为例。其中:

    • ①:云盘的设备名称。

    • ②:云盘是否分区及分区名称。

      • 已分区:如果有②处的分区信息表示已分区,Device取值为分区名称(示例中为/dev/vdb1),数字1是分区编号,则需扩容分区和文件系统。

    • ③:云盘的分区类型。

      Disk label type值为dos表示MBR分区,值为gpt表示GPT分区。

       说明

    • 不同操作系统的显示略有不同。如果没有Disk label type字段,可通过System字段判断。System值为Linux表示MBR分区,值为GPT表示GPT分区。

    • 较低版本的fdisk可能不能正常显示GPT分区表。您可以通过gdisk -l /dev/vdb命令查看分区类型。

    • ④:确认待扩容的分区。

    • 由于容量= sectors值*512 bytes,图示例中:

    • 云盘/dev/vdb的sectors=125829120,则云盘容量=125829120*512bytes=64.4GB(等于60GiB)

    • 分区/dev/vdb1的sectors=(End-Start)=83886078,则分区容量= 83886078*512bytes=42.9GB(等于40GiB)

    • 根据计算得出/dev/vdb1分区的容量小于云盘/dev/vdb的容量,即/dev/vdb1分区需要扩容。

  • CentOS 6及以上版本
  • MBR分区

    放大查看复制代码
    type growpart || yum install -y cloud-utils-growpart
    LC_ALL=en_US.UTF-8 growpart /dev/vdb 1

  • GPT分区(需安装gdisk工具)

    放大查看复制代码
    type growpart || yum install -y cloud-utils-growpart
    type sgdisk || yum install -y gdisk
    LC_ALL=en_US.UTF-8 growpart /dev/vdb 1

    重要

    以下几种分区情况,您需要特别注意:

  • LC_ALL=en_US.UTF-8是环境变量设置,为了兼容中文操作系统的字符编码。

  • 如果您扩容的是系统盘,系统盘的设备名称通常为/dev/vda

  • 如果单盘有多个连续分区的情况,仅能扩容最后一个分区。例如数据盘/dev/vdb有三个分区/dev/vdb1/dev/vdb2/dev/vdb3。扩容时,只能扩容最后一个分区/dev/vdb3,即执行growpart /dev/vdb 3命令即可完成数据盘的分区扩容。

  • 如果您是NVMe类型云盘,以分区名称/dev/nvme0n1p1为例,其中/dev/nvme0n1是设备名称。扩容时执行命令为growpart /dev/nvme0n1 1,而不是growpart /dev/nvme0n1p1 1

  • 如果您需要扩容的云盘分区是MBR分区表下的扩展分区(通常判断方式是分区号大于等于5),您需要先进行扩展分区扩容后再对逻辑分区进行扩容。例如您有/dev/vdb1(主分区)、/dev/vdb2(扩展分区)、/dev/vdb5(逻辑分区)三个分区,此时您需要依次执行growpart /dev/vdb 2growpart /dev/vdb 5完成分区的扩容。

步骤2:扩容文件系统

  1. 运行以下命令,获取需要扩容的文件系统的类型和挂载目录。

    放大查看复制代码
    df -Th

    Type值为文件系统类型,Mounted on值为分区的挂载目录。如下图表示/dev/vdb1分区的文件系统类型为ext4,挂载目录为/mnt

    Centos7挂载磁盘原盘扩容-硬盘扩容_第2张图片

    如果Filesystem取值后缀不带数字(例如/dev/vdc),则为裸设备。

  2. 扩容文件系统。

    扩容命令因文件系统类型而异,请您根据上一步中查询到的文件系统类型选择以下命令。

    说明

    云盘和文件系统正在被使用的状态下,采用resize2fs等工具在线扩容文件系统,有可能会触发文件系统数据问题,该问题与镜像内核版本、resize2fs工具版本相关,与云盘扩容本身无关。建议您为云盘创建快照,做好数据备份。具体操作,请参见创建一个云盘快照。

    ext*(例如ext2、ext3、ext4)文件系统
    • 以扩容云盘分区/dev/vdb1ext*文件系统为例,则运行如下命令:

      放大查看复制代码
      resize2fs /dev/vdb1

    • 以扩容裸设备/dev/vdcext*文件系统为例,则运行如下命令:

      放大查看复制代码
      resize2fs /dev/vdc

    xfs文件系统

    以扩容挂载目录为/mntxfs文件系统为例,则运行如下命令:

    放大查看复制代码
    type xfs_growfs || yum install -y xfsprogs
    xfs_growfs /mnt
    btrfs文件系统

    以扩容挂载目录为/mntbtrfs文件系统为例,则运行如下命令:

    放大查看复制代码
    btrfs filesystem resize max /mnt

  3. 运行以下命令,确认是否扩容成功。

    放大查看复制代码
    df -Th

    当查询结果中的文件系统容量和控制台容量一致时,表示扩容成功。

    如下图所示,分区/dev/vdb1文件系统容量(59 GiB)和云盘容量(60 GiB)基本一致(因为文件系统本身会占用部分存储空间),表示扩容完成。

    Centos7挂载磁盘原盘扩容-硬盘扩容_第3张图片

    扩容完成后,您需要根据实际情况检查云盘数据是否正常。

    • 如果扩容成功,ECS实例中的业务程序能够正常运行,则完成操作。

    • 如果扩容失败,您可以通过备份的快照回滚数据。

你可能感兴趣的:(linux,运维,服务器)