vagrant box centos7硬盘扩容【不删除原数据】
笔者之前一直在使用vagrant作为虚拟机使用。
vagrant的好处自然不必说,只是有一天遇到了一个麻烦事——虚拟硬盘空间不!够!了!
笔者使用了df -h
命令一看,结果发现,主硬盘(/dev/sda1
)总空间居然只有10G,然而一般的系统镜像初始大小就超过9G。
在网上一查,发现vagrant其实最初设计定位是快速还原运行环境,于是vagrant一般情况下在虚拟机初始化阶段不会留出很足的主硬盘空间。
准备工作
环境变量
在这次操作中,我们需要用到virtualbox提供的vboxmanage
命令。所以我们首先需要将此命令添加到环境变量中。
在windows下的操作,就是将virtualbox的安装路径添加至path项。unix系统中应该类似。
设置教程:https://www.cnblogs.com/-mrl/p/13931641.html
打开box目录,cmd切换到该目录
记录原始硬盘信息
输入如下命令
vboxmanage showhdinfo centos-vm-disk1.vmdk
记录下原硬盘的uuid
制作扩容版硬盘
首先是将原硬盘进行克隆操作
vboxmanage clonehd "centos-vm-disk1.vmdk" "new-virtualdisk.vdi" --format vdi
将硬盘克隆成了vdi
格式后,就可以开始下一步的扩容操作了:
vboxmanage modifyhd "new-virtualdisk.vdi" --resize 30720
其中·30720
单位为MB,即表示30G
空间。81920则为80G
接下来将硬盘文件转回原来的格式,以及建议不要直接覆盖原来的 vmdk
硬盘文件,以作备份。
VBoxManage clonehd "new-virtualdisk.vdi" "resized.vmdk" --format vmdk
记录一下新vmdk
文件的uuid信息。到这一步,带有原数据和新尺寸的硬盘就制作完毕了。
以上步骤截图:
使用新制造硬盘替换原硬盘重新挂载磁盘到虚拟机
VBoxManage storageattach 16c94808-3de9-4de5-8918-d8b875fbc5e9 --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium resized.vmdk
"SATA Controller" 可以从vboxmanage showvminfo 16c94808-3de9-4de5-8918-d8b875fbc5e9查看
16c94808-3de9-4de5-8918-d8b875fbc5e9 是容器名称可以从vboxmanage list vms查看
将新硬盘载入使用
重新启动虚拟机
vagrant reload #重新开启虚拟机 vagrant ssh # 进入虚拟机
查看磁盘,使用fdisk分区扩容
sudo fdisk -l sudo fdisk /dev/sda 按p显示分区表,默认是 sda1 和 sda2。 按n新建主分区。 按p设置为主分区。 输入3设置为第三分区。 输入一次回车设置默认磁盘位置。 再输入一次回车设置默认磁盘位置。 输入t改变分区格式 输入3选择第三分区 输入8e格式成LVM格式 输入w执行保存
重启虚拟机
sudo reboot
以上步骤截图
再次登入虚拟机
查看【将system 类型需是Linux LVM】
sudo fdisk -l
利用pvcreate命令给新的分区创建物理卷
sudo pvcreate /dev/sda3
查看VG Name,我自己的VG Name是cl
sudo pvdisplay | grep "VG Name"
查看卷组,将新分区扩展到cl这个组
sudo vgdisplay
sudo vgextend cl /dev/sda3
扩展逻辑分区
sudo lvextend /dev/mapper/cl-root /dev/sda3
更新文件系统,resize并且生效
centos6
sudo resize2fs /dev/mapper/cl-root
centos7
sudo xfs_growfs /dev/mapper/cl-root
以上截图
回到物理主机,可将原来的镜像删除,不然站存储空间【老的vmdk和新建的vdi文件】
大功告成
vagrant reload重启虚拟机查看效果
未扩容前截图:
扩容后截图纪念【扩容到80G】: