码疯窝

Vagrant box 增加磁盘容量方法

2016/01/25 16:46:55    分类: 技术随笔    18人评论 次浏览

一直以来都是以vagrant+docker作为开发环境,可是久而久之,原Box自带的8G容量就捉襟见肘了。时不时需要手动删除一些东西。

dfhold

Virtualbox 本身只支持vdi硬盘文件格式的扩容,对vmdk 格式的却不支持。但是却提供vmdk到vdi格式的转化,正好可以利用这一功能进行扩容。

1. 关闭虚拟机, 从Virtualbox页面查看硬盘文件地址(选中虚拟机->右键->设置->存储)。进到文件所在目录后执行:

$ VBoxManage clonehd box-disk1.vmdk box-disk1.vdi –format VDI

2. 给vdi格式硬盘文件扩容

$ VBoxManage modifyhd box-disk1.vdi –resize 20000

3. 从Virutalbox存储界面删除原硬盘文件,然后再加入新的VDI格式硬盘文件

4. vagrant up启动虚拟机,然后vagrant ssh进入

5. 利用cfdisk工具创建主分区,谨记选择格式为Linux LVM (8e)

$ sudo cfdisk /dev/sda

cfdisk

6. 利用pvcreate命令给新的分区创建物理卷

$ sudo pvcreate /dev/sda3
successfully created

7. 查看VG Name,我自己的VG Name是centos

$ sudo pvdisplay | grep "VG Name"
VG Name centos

8. 将新分区扩展到centos这个组

$ vgextend centos /dev/sda3
Volume group "centos" sucessfully extended

9. 扩展逻辑分区

$ lvextend /dev/mapper/centos-root /dev/sda3

10. resize并且生效

$ resize2fs /dev/mapper/centos-root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/debian-605/root is mounted on /; on-line resizing required old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/debian-605/root to 4937728 (4k) blocks.
The filesystem on /dev/debian-605/root is now 4937728 blocks long.

centos 7下,这一步会出错

resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Bad magic number in super-block while trying to open /dev/mapper/centos-root
Couldn't find valid filesystem superblock.

resize2fs

这时,只需要使用xfs_growfs命令替换就行了

xfs_grouwfs /dev/mapper/centos-root

至此,大分告成。vagrant reload重启虚拟机查看效果
dfh

于是乎,妈妈再也不用担心我的虚拟机磁盘没容量了。

参考文章:

https://gist.github.com/christopher-hopper/9755310
//blog.lenss.nl/2012/09/resize-a-vagrant-vmdk-drive/

继续查看有关 技术随笔的文章

18个访客评论

  1. 140744

    年前再来转转!

    qweqwe Reply
  2. zengda

    不错,不错,看看了!

    qweqwe Reply
  3. ai凉快

    xfs_grouwfs /dev/mapper/centos-root 单词写错了应该是xfs_growfs 你的多了一个 u 方法很有效谢谢!

    qweqwe Reply
    • Gcaufy

      是的, 谢谢.

      qweqwe Reply
      • ai凉快

        VBoxManage modifyhd box-disk1.vdi –resize 20000 这种方法有个缺点,就是我之前的配置都丢失了,全部都要重来。

        qweqwe Reply
        • Gcaufy

          不会啊, 我的扩容后没有任何问题的. home目录东西都不会动.

          qweqwe Reply
          • ai凉快

            除了/root下面的,以下目录的文件都丢失了。
            /usr/local/webserver/
            /opt/logstash
            /opt/kibana

            qweqw Reply
  4. 我用的debian 8,怎么VG Name 显示是没有值呢

    qweqwe Reply
  5. zhouxi

    果然可以,谢谢博主的文章

    qweqwe Reply
  6. 西海

    谢谢 可以用

    qweqwe Reply
  7. ″ 赵三多丶

    cfdisk /dev/sda这不=步不知道怎么操作,楼主可否详细说明

    qweqwe Reply
  8. ″ 赵三多丶

    好了,感谢楼主,我那个乱码导致的

    qweqwe Reply
  9. 憧憬

    VBoxManage clonehd ./centos-vm-disk1.vmdk ./centos-vm-disk1.vdi -format VDI 或 VBoxManage clonehd centos-vm-disk1.vmdk centos-vm-disk1.vdi -format VDI
    都报错:

    VBoxManage.exe: error: Could not get the storage format of the medium ‘C:\Users\user\VirtualBox VMs\server_default_1491386319452_61438\.\centos-vm-disk1.vmdk’ (VERR_NOT_SUPPORTED)
    VBoxManage.exe: error: Details: code VBOX_E_IPRT_ERROR (0x80bb0005), component MediumWrap, interface IMedium, callee IUnknown
    VBoxManage.exe: error: Context: “OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, enmAccessMode, fForceNewUuidOnOpen, pMedium.asOutParam())” at line 179 of file VBoxManageDisk.cpp

    执行报错 这个要怎么解决 求大神帮忙..

    qweqwe Reply