云平台中虚拟机实例 root分区大小的自动扩充


ubuntu操作系统包含一个名为cloud-initramfs-growroot的软件,该软件可以在虚拟机启动的过程中自动扩充root分区的大小,该功能可以说是云主机标配的一个功能。

这里需要指出的是,growroot软件包只是扩充了硬盘分区的大小,此时登录云主机用df -h命令还看不到可用容量的增加,还需运行resize2fs命令来对文件系统的大小进行扩充,该过程可以手动进行,也可借助于cloudinit等软件包自动进行。

(1)实例

看一个具体的ubuntu server虚拟机,磁盘分区如下:

QQ截图20140124110842

 

从上图可以看到,硬盘总的block数为212860928,但sda1分区的大小只有3141839。

安装cloud-initramfs-growroot:

apt-get install  cloud-initramfs-growroot

重启系统后,再次查看硬盘分区,可以看到sda1的分区得到了扩大,但此时调用df -h,文件系统的大小并无变化。

QQ截图20140124110842

接下来,运行resize2fs命令,让文件系统识别扩充的空间:

QQ截图20140124110842

(2)原理

要理解这其中的原理,我们首先看看cloud-initramfs-growroot包里都有什么内容:

QQ截图20140124110842

 

如图,内容很简单 ,包含了一些initramfs中需要执行的一些脚本,具体内容可以查看相关文件。安装该软件包时,首先会进行相关文件的拷贝,然后运行update-initramfs命令对当前initramfs文件进行更新。

(3)手动安装

对于某些操作系统,官方源不包含cloud-initramfs-growroot,需要手动安装。

首先:从github上下载最新代码并拷贝到指定的位置,并更改可执行权限,如图:

QQ截图20140124110842

 

运行update-initramfs -u,并查看磁盘分区大小

QQ截图20140124110842

可以看到,磁盘的大小和分区的大小不一致。

此时,扩充分区大小的脚本已经更新到initramfs文件中,重启虚拟机后,运行resize2fs工具,

QQ截图20140124110842

 

over

 

相关内容