| 远程连接ECS实例。
 
    运行以下命令,确认待扩容云盘及其分区信息。
    
    
     如图所示,表示该实例有2块云盘,系统盘 /dev/vda和数据盘 /dev/vdb,我们以数据盘 /dev/vdb为例。其中:
             
步骤1:扩容分区本操作以公共镜像Alibaba Cloud Linux 2.1903 LTS 64位操作系统、在ECS实例内部将云盘分区/dev/vdb1由40 GiB扩容至60 GiB(已在控制台扩大容量为60 GiB)为例,请您根据实际环境进行操作。 
    可选:根据准备工作确认的信息,如果您的云盘分区类型为MBR且在控制台扩容后容量大于2 TiB,需先转换分区为GPT分区。否则跳过该步骤。
    
    运行以下命令,安装工具。
    
    
        Alibaba Cloud Linux 2/3版本、CentOS 6及以上版本运行以下命令。
        
            安装growpart工具。
            
            
            type growpart || yum install -y cloud-utils-growpart
(可选)根据准备工作确认的信息,如果您的云盘分区类型为GPT,还需运行以下命令安装gdisk工具。
            
            
            type sgdisk || yum install -y gdisk
Debian 8及以上版本、Ubuntu14及以上版本运行以下命令。
        
            更新软件源。
            
            
            安装cloud-guest-utils。
             
            
            type growpart || apt-get install -y cloud-guest-utils
(可选)根据准备工作确认的信息,如果您的云盘分区类型为GPT,还需运行以下命令安装gdisk工具。
            
            
            type sgdisk || apt-get install -y gdisk
运行以下命令,扩容分区。
    以云盘分区名称 /dev/vdb1为例,运行如下命令。命令参数中的 /dev/vdb和 1之间需要空格分隔, 1是分区编号。
     
    
    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 2、growpart /dev/vdb 5完成分区的扩容。使用growpart工具时,如果出现报错信息,请参见常见问题进行排查。 
    、
     如下图所示,输出 CHANGED字样时,表示分区扩容成功。 可选:CentOS 6等较低版本的操作系统,需要执行reboot命令重启实例,使分区扩容生效。通常情况下,扩容分区不需要执行重启。但如果您扩容的是CentOS 6操作系统的云盘或者发现扩容后操作系统实际识别的分区没有扩展,这是操作系统版本较低的原因,需要重启实例使分区扩容生效。建议您选择业务低谷的时间段进行重启,避免影响业务运行。 步骤2:扩容文件系统
  说明 云盘和文件系统正在被使用的状态下,采用resize2fs等工具在线扩容文件系统,有可能会触发文件系统数据问题,该问题与镜像内核版本、resize2fs工具版本相关,与云盘扩容本身无关。建议您为云盘创建快照,做好数据备份。具体操作,请参见创建一个云盘快照 。 
    运行以下命令,查看文件系统类型。
    
    
    Type值为文件系统类型,Mounted on值为分区的挂载目录。如下图,表示/dev/vdb1分区的文件系统类型为ext4,挂载目录为/mnt。   如果Filesystem取值后缀不带数字(例如/dev/vdc),则为裸设备。运行以下命令,扩容文件系统。
    
    扩容命令因文件系统类型而异,请您根据上一步中查询到的文件系统类型选择以下命令。 
        ext*(例如ext2、ext3、ext4)文件系统
        
            以扩容云盘分区/dev/vdb1的ext*文件系统为例,则运行如下命令:以扩容裸设备/dev/vdc的ext*文件系统为例,则运行如下命令:xfs文件系统
        以扩容挂载目录为/mnt 的xfs 文件系统为例,则运行如下命令:
         
        
        type xfs_growfs || yum install -y xfsprogs xfs_growfs /mnt
btrfs文件系统
        以扩容挂载目录为/mnt 的btrfs 文件系统为例,则运行如下命令:
         
        
        btrfs filesystem resize max /mnt
运行以下命令,确认是否扩容成功。
    
    
    当查询结果中的文件系统容量和控制台容量一致时,表示扩容成功。 如下图所示,分区 /dev/vdb1文件系统容量(59 GiB)和云盘容量(60 GiB)基本一致(因为文件系统本身会占用部分存储空间),表示扩容完成。  
    扩容完成后,您需要根据实际情况检查云盘数据是否正常。
     
        如果扩容成功,ECS实例中的业务程序能够正常运行,则完成操作。如果扩容失败,您可以通过备份的快照回滚数据。具体操作,请参见使用快照回滚云盘。 常见问题
  说明如果您遇到难以解决的问题,您可以加入云盘扩容问题客户钉钉群(钉钉群号:25920014655)与我们的工程师即时沟通。 
growpart相关问题 resize2fs相关问题   
    问题:运行扩容分区growpart命令时,提示unexpected output in sfdisk --version [sfdisk,来自 util-linux 2.23.2]。原因:中文版操作系统使用了非en_US.UTF-8的字符编码类型。 解决方案:
     
        运行locale命令查看ECS实例的字符编码类型,将非en_US.UTF-8的字符编码类型切换成en_US.UTF-8。
            运行以下命令,切换字符编码类型。
            
            如果问题仍未解决,运行以下命令,切换字符编码类型。
            
            
            export LC_ALL=en_US.UTF-8
如果问题仍未解决,请您尝试运行reboot命令重启ECS实例。 
      重要 当您通过切换字符编码,成功完成扩容分区后,建议您按需切回原有字符编码。问题:运行扩容分区growpart命令时,提示unexpected output in sfdisk --version [sfdisk (util-linux-ng 2.17.2)]。原因:您的fdisk版本与growpart版本不兼容。 解决方案:尝试将growpart版本降低到0.27。如果问题仍未解决,请参考扩展分区和文件系统_Linux数据盘扩容分区。问题:运行扩容分区growpart命令时,提示FAILED: unable to determine partition type。原因:您的云盘是裸设备,未分区。裸设备无需执行扩容分区操作,直接扩容文件系统即可。 解决方案:直接扩容文件系统。问题:运行扩容分区growpart命令时,提示WARNING: MBR/dos partitioned disk is larger than 2TB. Additional space will go unused.。原因:MBR分区类型不支持2 TiB以上的云盘。 解决方案:先将分区类型从MBR转换为GPT,然后再扩容分区。具体操作,请参见转换MBR分区为GPT分区。问题:运行扩容分区growpart命令时,提示mkdir: cannot create directory ... No space left on device原因:磁盘空间不足,导致growpart命令创建临时目录时失败。 解决方案:清理无用的文件释放空间,然后再进行扩容。问题:为什么在CentOS 6中安装growpart工具时提示Error: Cannot retrieve repository metadata。原因:CentOS 6操作系统版本已结束生命周期(EOL),继续使用默认源会导致无法安装包。 解决方案:
     
        在CentOS 6中切换yum源。具体操作,请参见CentOS 6 EOL如何切换源?。
        
          说明 CentOS 6操作系统版本已结束生命周期(EOL),如果您需要使用yum安装软件包,需要先切换yum源。重新运行以下命令,安装growpart工具。
        
        
        type growpart || yum install -y cloud-utils-growpart
如果问题仍未解决,请参考扩展分区和文件系统_Linux数据盘扩容分区。问题:设备名以/dev/mapper开头的分区未扩容成功。原因:设备名以/dev/mapper开头,通常是通过LVM(Logical Volume Manager)管理磁盘分区。 解决方案:需要先通过LVM扩容逻辑卷,然后再扩容文件系统。具体操作,请参见通过LVM扩容逻辑卷。          操作步骤登录CentOS 6系统的ECS实例。
 具体操作,请参见连接方式概述。
 运行以下命令编辑CentOS-Base.repo 文件。
 vim /etc/yum.repos.d/CentOS-Base.repo
 按i进入编辑模式,修改以下内容切换源。
 请根据实例不同的网络类型进行修改,具体内容如下:
 专有网络VPC类型实例
 [base]
 name=CentOS-6.10
 enabled=1
 failovermethod=priority
 baseurl=http://mirrors.cloud.aliyuncs.com/centos-vault/6.10/os/$basearch/
 gpgcheck=1
 gpgkey=http://mirrors.cloud.aliyuncs.com/centos-vault/RPM-GPG-KEY-CentOS-6
 [updates]name=CentOS-6.10
 enabled=1
 failovermethod=priority
 baseurl=http://mirrors.cloud.aliyuncs.com/centos-vault/6.10/updates/$basearch/
 gpgcheck=1
 gpgkey=http://mirrors.cloud.aliyuncs.com/centos-vault/RPM-GPG-KEY-CentOS-6
 [extras]name=CentOS-6.10
 enabled=1
 failovermethod=priority
 baseurl=http://mirrors.cloud.aliyuncs.com/centos-vault/6.10/extras/$basearch/
 gpgcheck=1
 gpgkey=http://mirrors.cloud.aliyuncs.com/centos-vault/RPM-GPG-KEY-CentOS-6
 经典网络类型实例
 [base]
 name=CentOS-6.10
 enabled=1
 failovermethod=priority
 baseurl=http://mirrors.aliyuncs.com/centos-vault/6.10/os/$basearch/
 gpgcheck=1
 gpgkey=http://mirrors.aliyuncs.com/centos-vault/RPM-GPG-KEY-CentOS-6
 [updates]name=CentOS-6.10
 enabled=1
 failovermethod=priority
 baseurl=http://mirrors.aliyuncs.com/centos-vault/6.10/updates/$basearch/
 gpgcheck=1
 gpgkey=http://mirrors.aliyuncs.com/centos-vault/RPM-GPG-KEY-CentOS-6
 [extras]name=CentOS-6.10
 enabled=1
 failovermethod=priority
 baseurl=http://mirrors.aliyuncs.com/centos-vault/6.10/extras/$basearch/
 gpgcheck=1
 gpgkey=http://mirrors.aliyuncs.com/centos-vault/RPM-GPG-KEY-CentOS-6
 编辑完成后,按Esc键,并输入:wq保存退出文件。
 运行以下命令编辑epel.repo 文件。vim /etc/yum.repos.d/epel.repo
 按i进入编辑模式,修改以下内容切换源。
 请根据实例不同的网络类型进行修改,具体内容如下:
 专有网络VPC类型实例
 [epel]
 name=Extra Packages for Enterprise Linux 6 - $basearch
 enabled=1
 failovermethod=priority
 baseurl=http://mirrors.cloud.aliyuncs.com/epel-archive/6/$basearch
 gpgcheck=0
 gpgkey=http://mirrors.cloud.aliyuncs.com/epel-archive/RPM-GPG-KEY-EPEL-6
 经典网络类型实例
 [epel]
 name=Extra Packages for Enterprise Linux 6 - $basearch
 enabled=1
 failovermethod=priority
 baseurl=http://mirrors.aliyuncs.com/epel-archive/6/$basearch
 gpgcheck=0
 gpgkey=http://mirrors.aliyuncs.com/epel-archive/RPM-GPG-KEY-EPEL-6
 编辑完成后,按Esc键,并输入:wq保存退出文件。
 后续步骤yum源和epel源切换完成后,即可使用yum install命令在实例上安装您所需要的软件包。
 使用自定义镜像创建新的ECS实例,在启动实例时cloud-init会自动初始化系统的源配置。如果您后续需要通过已切换源的ECS实例创建自定义镜像,并且需要保留已切换的源配置,需要您在创建自定义镜像前,按照以下操作在已切换源的ECS实例中修改cloud-init的配置文件/etc/cloud/cloud.cfg。(责任编辑:haoxuewa)运行以下命令编辑/etc/cloud/cloud.cfg文件。
 vim /etc/cloud/cloud.cfg
 按i进入编辑模式,使用#注释掉cloud_init_modules:下的- source-address模块。
 注释后,文件内的配置信息如下所示:cloudinit
 编辑完成后,按Esc键,并输入:wq保存退出文件。
       学友请微信搜索好学网,或加公众号 haoxuewacom 获取更多学习资讯!  |