最近在制作Openstack下的镜像,用户需要CentOS6以及CentOS7的虚机镜像,遇到了些关于系统盘以及数据盘在线扩容的问题,故此整理一下。
传统我们想对磁盘在线热扩容,必然会想到LVM逻辑卷。如果没有LVM逻辑卷的情况下,则可以考虑使用growpart命令。
#yum -y install cloud-utils-growpart
在内核3.6.0 以上,是可以实现系统盘在线扩容的,如果低版本内核则需要reboot或者重新挂载磁盘。
#growpart /dev/sda 1 #将sda剩余空间全部扩容给sda1
#resize2fs /dev/sda1 #ext使用resize2fs, xfs使用xfs_growfs
所以,假如虚机镜像大小20G,创建系统盘大小是50G的虚机时,默认情况下cloud-init会调用growpart以及resize2fs扩容系统盘。
如果是centos7的系统镜像,虚机开机过程中cloud-init调用growpart和resize2fs即可直接在线扩容系统盘。
如果是centos6的系统镜像,虚机开机过程中cloud-init调用growpart和resize2fs并不能在线扩容系统盘。如何解决?可以通过给initramfs添加growroot的module,growroot
模块用于在启动过程中自动调整根文件系统的大小。
#dracut --force --add growroot /boot/initramfs-$(uname -r).img