专栏首页yuncoder​云主机根分区自动扩容
原创

​云主机根分区自动扩容

通常在制作云上使用的虚拟机时,如果不进行任何干预,安装出来的虚拟机默认是带有swap分区的,同时采用lvm来管理磁盘,通过这种方式制作出来的虚拟机镜像,直接在云上使用会有很多问题,其中一个就是根分区无法实现自动扩容,只能通过手工操作完成。而且在openstack中,swap分区通常是由一个单独的swap磁盘来提供,而不应该是做镜像的时候提供。

本文的目的是实现在Linux虚拟机(本文采用centos7.6)中自动完成根分区的扩容,而无需人工介入。

1. 启动方式与分区关系:

  • ARM架构的服务器上,虚拟机只能采用UEFI启动,因此对应的磁盘分区必须是GPT分区;
  • X86架构的服务器上,虚拟机通常还是BIOS启动的,因此对应的磁盘分区是MBR分区,当然X86架构上也是支持UEFI的启动方式的;

2. MBR分区与GPT分区:

  • MBR分区仅支持最大2T的磁盘,每个磁盘最多4个主分区或3个主分区加1个扩展分区;
  • GPT分区支持大于2T的磁盘,最大可支持18EB磁盘,每个磁盘最多128个分区;

3. EXT4文件系统与XFS文件系统:

  • EXT4最大文件系统大小为1EB,最大单个文件大小为16TB,最大包含64,000个子目录;
  • XFS最大文件系统大小为8EB,最大单个文件大小为16EB,centos7.0开始作为默认文件系统;

综合前面的分析,本文主要介绍GPT分区+XFS文件系统的根分区扩容,不采用LVM的方式进行磁盘管理。

制作虚拟机模板

安装CentOS操作系统时,选择手动分区,分区信息如下图所示,/boot/efi分区为UEFI启动必须的分区,大小200MB;另外一个分区为根分区,Device Type选择为Standard Partition,File System选择为xfs,系统盘分为几个分区不重要,重要的是必须确保根分区为磁盘的最后一个分区,另外不建议创建swap分区

centos-parted.png

系统安装完成后,启动虚拟机,执行命令可以看到如下的分区信息

[root@localhost ~]# parted /dev/vda print
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name                  Flags
1      1049kB  211MB   210MB   fat16        EFI System Partition  boot
2      211MB   21.5GB  21.3GB  xfs

[root@localhost ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 1024M  0 rom  
vda    253:0    0   20G  0 disk 
├─vda2 253:2    0 19.8G  0 part /
└─vda1 253:1    0  200M  0 part /boot/efi

按照openstack社区文档 https://docs.openstack.org/image-guide/centos-image.html 对虚拟机进行配置,配置完成不要执行关机操作;

安装GPT分区工具,否则执行growpart命令时会提示“no tools available to resize disk with 'gpt'”:

[root@localhost ~]# yum install gdisk

修改默认语言为英语,否则执行growpart命令会报错

[root@localhost ~]# echo "export LANG=en_US.UTF-8" >> /etc/profile

安装其他需要的工具...

验证磁盘自动扩容

在前面创建的centos7.6虚拟机镜像中,虚拟机系统盘只有20GB。接下来在openstack环境中,利用该镜像创建一个拥有400GB系统盘的虚拟机。虚拟机创建并启动完成后,通过下面的命令可以看出,cloudinit自动完成了根分区的扩容:

[root@centos ~]# parted /dev/vda print
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 429GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End    Size   File system  Name                  Flags
 1      1049kB  211MB  210MB  fat16        EFI System Partition  boot
 2      211MB   429GB  429GB  xfs

[root@centos ~]# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
vda    253:0    0   400G  0 disk 
├─vda2 253:2    0 399.8G  0 part /
└─vda1 253:1    0   200M  0 part /boot/efi

cloudinit会根据根分区的挂载点来查找到实际的根分区磁盘,即上面的/dev/vda2,并对/dev/vda磁盘的第2个分区即/dev/vda2进行扩容。如果采用lvm来管理磁盘的话,查找到的根分区挂载点就是/dev/mapper/centos-root,这个分区是一个逻辑上的分区,因此cloudinit无法对其进行扩容。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • linux LVM 一键分区脚本自动扩容

    eisc
  • 动态在线扩容root根分区大小的方法详解

    本文主要介绍了关于动态在线扩容root根分区大小的相关内容,分享出来供大家参考学习,下面话不都说了,来一起看看详细的介绍吧。

    砸漏
  • 英雄联盟自动化扩缩容利器

    2013年是英雄联盟在线爆发式的增长的一年,年初的运营数据已经让全体英雄联盟运营团队感受到了巨大的压力。去年,扩容相关工作占到占据了英雄联盟运维较多的工作时长,...

    腾讯大讲堂
  • SuperEdge 高可用云边隧道有哪些特点?

    作者李腾飞,腾讯容器技术研发工程师,腾讯云TKE后台研发,SuperEdge核心开发成员。 背景 在边缘集群中,边缘端和云端为单向网络,云端无法主动连接边缘端...

    腾讯云原生
  • 腾讯私有云MySQL解决方案—TDSQL

    TDSQL是腾讯提供的一套完整的MySQL数据库集群化管理解决方案,作为私有云TStack平台重要的数据库产品能力,旨在解决高可用、高性能、分布式、配套设施等方...

    腾讯云TStack
  • 【涂鸦物联网足迹】涂鸦云平台全景介绍

    我们前面一篇文章以“隔空接吻机”为例子,对物联网的概念和框架做了一个简单的介绍,朋友们如果感兴趣,可以戳>>>《【涂鸦物联网足迹】物联网基础介绍篇》。接下来的系...

    涂小航说智能
  • 腾讯云EMR基于YARN针对云原生容器化的优化与实践

    导语 | 传统HADOOP生态系统使用YARN管理/调度计算资源,该系统⼀般具有明显的资源使⽤周期。实时计算集群资源消耗主要在⽩天,而数据报表型业务则安排在离线...

    腾讯云大数据
  • 腾讯云EMR基于YARN针对云原生容器化的优化与实践

    ? 导语 | 传统HADOOP生态系统使用YARN管理/调度计算资源,该系统⼀般具有明显的资源使⽤周期。实时计算集群资源消耗主要在⽩天,而数据报表型业务则安排...

    腾小云
  • 【玩转腾讯云】如何构建云端高可用架构!

    作者介绍 万守兵:腾讯云行业架构师,对云上双活架构、迁移方案有比较深的了解,现主要负责腾讯云泛互行业TOP级客户的解决方案架构工作。 ? ? ?  高可用挑战...

    云存储
  • 【重磅】Docker企业级管理平台开放下载,免费使用

    Rainbond开源
  • Fluid 0.6 版本发布:数据感知的Pod调度与数据集自动弹性扩缩容

    Fluid是CNCF基金会旗下云原生环境中数据密集型应用的高效支撑平台,项目自开源发布以来吸引了众多相关方向领域专家和工程师的关注,在大家的积极反馈下社区不断演...

    CNCF
  • 腾讯云 CVM 产品详细信息

    腾讯云 CVM 提供了在云中的可扩展的虚拟计算资源,允许您选择多种操作系统来启动 CVM 实例,并加载到您自定义的应用环境。后续随着业务量的变化,您还可以随时调...

    勤劳的小蜜蜂
  • 消息队列上云挑战与方案:腾讯云的 Apache Pulsar 实践

    ? 云原生大潮风起云涌,企业不再停留在理念层面,目前已在多方面落地。消息队列作为关键技术基础设施之一,也在云原生时代面临着挑战和机会。本文从传统消息队列上云所...

    腾源会
  • 如何优雅扩容云硬盘(附视频)

    放心,在腾讯云的服务器上,不论是加块硬盘还是扩容已有硬盘的大小,都是轻松又简单的。

    溪歪歪
  • 腾讯CentOS云服务器挂载云硬盘与硬盘分区

    我对Linux不是很熟悉,我在学习的过程中记录了很多笔记,在去年发过一篇文章:CentOS 7系统服务器上安装R和Rstudio,并在浏览器中运行Rstudio...

    DoubleHelix
  • 腾讯云EMR基于YARN针对云原生容器化的优化与实践

    导语 | 传统HADOOP生态系统使用YARN管理/调度计算资源,该系统⼀般具有明显的资源使⽤周期。实时计算集群资源消耗主要在⽩天,而数据报表型业务则安排在离...

    腾讯QQ大数据
  • 腾讯云数据库(Redis)监控最佳指南

    简介 云数据库 Redis(TencentDB for Redis)是由腾讯云提供的兼容 Redis 协议的缓存数据库,具备高可用、高可靠、高弹性等特征。云数...

    腾讯云监控团队
  • 腾讯云数据库产品介绍

    腾讯云上有许多种数据库产品,本文简单介绍每种产品的介绍,特性,应用场景等,帮助各位根据业务需要选择最适合的数据库。

    scarlett学习手册
  • 如何使用腾讯云云硬盘API

    腾讯云控制台允许您以类似于使用硬盘驱动器的方式管理腾讯云CVM的额外存储。只需点击腾讯云简化的GUI或图形用户界面,即可为我们的CVM添加云硬盘。但是,这不是一...

    好烟

扫码关注云+社区

领取腾讯云代金券