如何自定义可自动扩容root分区的Linux私有镜像?
约束条件
- 根分区文件系统为xfs的镜像不支持自动扩容。
- 有LVM分区的镜像不支持自动扩容。
- 推荐使用文件系统为ext3、ext4的单分区镜像。
版本太老的OS分区扩容成功后需要重启,文件系统才能刷新。
不同OS的growpart安装方式
操作系统 |
工具包 |
---|---|
Debian/Ubuntu |
cloud-init、cloud-utils、cloud-initramfs-growroot |
Fedora/CentOS |
cloud-init、cloud-utils、cloud-utils-growpart |
SUSE/openSUSE |
cloud-init、growpart |

Debian 9请优先使用“方法一”安装growpart,如安装失败,请参考“方法二”的操作步骤完成安装。
方法一:
Debian 9请执行如下命令安装growpart工具。
apt-get install -y -f cloud-init cloud-utils cloud-initramfs-growroot
方法二:
- 执行以下命令下载依赖包:
可从如下地址获取依赖包:
http://ftp.br.debian.org/debian/pool/main/c/cloud-utils/cloud-utils_0.29-1_all.deb
- 执行以下命令修复依赖:
- 执行以下命令进行安装:
dpkg -i cloud-utils包路径 cloud-initramfs-growroot包路径
例如:dpkg -i /root/cloud-utils_0.29-1_all.deb /root/cloud-initramfs-growroot_0.18.debian5_all.deb
Debian其他系列请执行以下命令安装:
apt-get update;apt-get install cloud-utils cloud-initramfs-growroot
操作步骤
私有镜像磁盘分区方式以如下两种场景为例:
当root分区在最末尾分区的情况请参考root分区在末尾分区。
当root分区在非末尾分区的情况请参考root分区在非末尾分区。

- root分区在末尾分区(例如:/dev/xvda1: swap,/dev/xvda2: root)
以CentOS 6.5 64bit系统盘为40GB为例,介绍root分区在末尾分区时如何自定义可自动扩容root分区的Linux私有镜像的配置方法。
- 执行如下命令查看/dev/xvda的磁盘分区。
回显信息如下所示,此时root分区为第二分区,大小为38.7GB。
Model: Xen Virtual Block Device (xvd) Disk /dev/xvda: 42.7GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 1049kB 4296MB 4295MB primary linux-swap(v1) 2 4296MB 42.9GB 38.7GB primary ext4 boot
- 为了支持镜像自动扩容到root分区,请安装growpart工具。
yum install cloud-*
growpart可能集成在cloud-utils-growpart/cloud-utils/cloud-initramfs-tools/cloud-init包里,可以直接执行上述命令并确保growpart命令可用。
- 执行如下命令,获取文件系统类型和UUID。
回显信息如下所示。
/dev/xvda1: UUID="25ec3bdb-ba24-4561-bcdc-802edf42b85f" TYPE="swap" /dev/xvda2: UUID="1a1ce4de-e56a-4e1f-864d-31b7d9dfb547" TYPE="ext4"
- 关闭云服务器转成私有镜像。
[root@sluo-ecs-e6dc-resizefs ~]# poweroff Connection closed by foreign host. Disconnected from remote host at 11:08:54. Type `help´ to learn how to use Xshell prompt.
- 用此新私有镜像发放云服务器,系统盘指定50GB为例,重新登录后,执行如下命令查看分区扩容情况。
parted -l /dev/xvda
回显信息如下所示,此时root分区已完成自动扩容。
Model: Xen Virtual Block Device (xvd) Disk /dev/xvda: 53.7GB Sector size (logical/physical): 512B/512B Partition Table: msdos NumberStartEndSizeTypeFile systemFlags 1 1049kB 4296MB 4295MB primary linux-swap(v1) 2 4296MB 53.7GB 49.4GB primary ext4 boot
- 执行如下命令,检查磁盘挂载是否成功。
回显信息如下所示。
Filesystem Type Size Used Avail Use% Mounted on /dev/xvda2 ext4 49.4G 2.6G 46.8G 4% /dev/shm tmpfs tmpfs 4295M 0 4295M 0% /
- 执行如下命令查看/dev/xvda的磁盘分区。
- root分区在非末尾分区(例如:/dev/xvda1: root,/dev/xvda2: swap)以CentOS 7.3 64bit系统盘为40GB为例,介绍root分区在非末尾分区时如何自定义可自动扩容root分区的Linux私有镜像的配置方法。
- 执行如下命令查看/dev/xvda的磁盘分区。
回显信息如下所示,此时,第一个分区是root分区,大小为40.9GB。第二个分区是swap分区。
Model: Xen Virtual Block Device (xvd) Disk /dev/xvda: 42.9GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 41.0GB 40.9GB primary ext4 boot 2 41.0GB 42.9GB 2000MB primary linux-swap(v1)
- 执行如下命令,查看/etc/fstab文件的配置。
回显信息如下所示,可以看到两个分区的UUID信息。
# UUID=7c4fce5d-f8f7-4ed6-8463-f2bd22d0ddea / ext4 defaults 1 1 UUID=5de3cf2c-30c6-4fb2-9e63-830439d4e674 swap swap defaults 0 0
- 执行如下命令,打开/etc/fstab文件,按“i”键进入编辑状态。
- 清除swap分区配置,按“ESC”键退出编辑状态并执行如下命令保存配置。
- 执行如下命令,查看配置是否已更改。
回显信息如下所示,此时只有root分区的UUID信息。
UUID=7c4fce5d-f8f7-4ed6-8463-f2bd22d0ddea / ext4 defaults 1 1
- 执行如下命令,关闭swap设备。
- 执行如下命令,查看/dev/xvda磁盘分区情况。
回显信息如下所示。
[root@test-0912 bin]# parted /dev/xvda GNU Parted 3.1 Using /dev/xvda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted)
- 输入如下命令,查看当前分区情况。
回显信息如下所示。
(parted) p Model: Xen Virtual Block Device (xvd) Disk /dev/xvda: 42.9GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 4296MB 4295MB primary linux-swap(v1) 2 4296MB 42.9GB 38.7GB primary xfs boot (parted)
- 输入如下命令,删除第2个磁盘分区。
回显信息如下所示。
(parted) rm 2 (parted)
- 输入如下命令,查看当前分区情况。
回显信息如下所示。
(parted) p Model: Xen Virtual Block Device (xvd) Disk /dev/xvda: 42.9GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 41.0GB 40.9GB primary ext4 boot
- 输入quit退出。
- 执行如下命令,查看/dev/xvda磁盘分区情况。
回显信息如下所示,swap分区已经删除。
Model: Xen Virtual Block Device (xvd) Disk /dev/xvda: 42.9GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 41.0GB 40.9GB primary ext4 boot
- 为了支持镜像自动扩容到root分区,请安装growpart。
yum install cloud-*
growpart可能集成在cloud-utils-growpart/cloud-utils/cloud-initramfs-tools/cloud-init包里,可以直接执行上述命令并确保growpart命令可用。
- 执行如下命令,将/dev/xvda的swap分区扩容给root分区所在的第1个分区。
回显信息如下所示:
CHANGED: partition=1 start=2048 old: size=79978496 end=79980544 new: size=83873317,end=83875365
- 执行如下命令,查看/dev/xvda磁盘分区情况。
回显信息如下所示:
Model: Xen Virtual Block Device (xvd) Disk /dev/xvda: 42.9GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 42.9GB 42.9GB primary ext4 boot
- 执行如下命令,获取文件系统类型和UUID。
回显信息如下所示:
/dev/xvda1: UUID="7c4fce5d-f8f7-4ed6-8463-f2bd22d0ddea" TYPE="ext4"
- 关闭云服务器转成私有镜像。
[root@sluo-ecs-e6dc-resizefs ~]# poweroff Connection closed by foreign host. Disconnected from remote host at 11:08:54. Type `help´ to learn how to use Xshell prompt.
- 用此新私有镜像发放云服务器,系统盘指定100GB为例,重新登录以后,执行以下命令查看/dev/xvda磁盘分区情况。
parted -l /dev/xvda
回显信息如下所示,确认root分区已完成扩容,此时扩容后的root分区大小为107GB。
Model: Xen Virtual Block Device (xvd) Disk /dev/xvda: 107GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 107GB 107GB primary ext4 boot
回显信息中Size的大小为扩容后的大小。
- 执行如下命令查看/dev/xvda的磁盘分区。
Cloud-Init操作类 所有常见问题
more
