Search code examples
vagrantvirtualbox

vagrant no space left on device


Today I started getting errors on simple operations, like creating small files in vim, the bash completion started to complain as well.

Here is the result of df -h :

vagrant@machine:/vagrant$ df -h
Filesystem                           Size  Used Avail Use% Mounted on
/dev/sda1                             40G   38G  249M 100% /
none                                 4.0K     0  4.0K   0% /sys/fs/cgroup
udev                                 2.0G   12K  2.0G   1% /dev
tmpfs                                396M  396K  395M   1% /run
none                                 5.0M     0  5.0M   0% /run/lock
none                                 2.0G     0  2.0G   0% /run/shm
none                                 100M     0  100M   0% /run/user
overflow                             1.0M  148K  876K  15% /tmp
192.168.50.1:/Users/nha/repo/assets  233G  141G   93G  61% /var/www/assets
vagrant                              233G  141G   93G  61% /vagrant

So apparently / doesn`t have space anymore ? Isn't it weird since I have space in the other filesystems (or am I misreading something) ?

How do I get more space on my vm ?


Solution

  • Even though you have space on your Guest OS, the VM is limited.There are couple of steps required in order to increase the size of your disk:

    first, vagrant haltto close your VM

    resize disk

    VBoxManage clonehd box-disk1.vmdk box-disk1.vdi --format vdi
    VBoxManage modifyhd box-disk1.vdi --resize 50000
    

    start Virtual box and change configuration of the VM to associate the new disk

    use fdisk to resize disk

    you need to create a new partition with the new space and allocate it, so first start the VM and logged on as super user

    vagrant up && vagrant ssh
    su -
    

    the command (as illustrated from my instance) are

    [root@oracle ~]# fdisk /dev/sda
    
    WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
             switch off the mode (command 'c') and change display units to
             sectors (command 'u').
    
    Command (m for help): p
    
    Disk /dev/sda: 52.4 GB, 52428800000 bytes
    255 heads, 63 sectors/track, 6374 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x00041a53
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1   *           1          39      307200   83  Linux
    Partition 1 does not end on cylinder boundary.
    /dev/sda2              39        2611    20663296   8e  Linux LVM
    
    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Partition number (1-4): 3
    First cylinder (2611-6374, default 2611):
    Using default value 2611
    Last cylinder, +cylinders or +size{K,M,G} (2611-6374, default 6374):
    Using default value 6374
    
    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    
    WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
    The kernel still uses the old table. The new table will be used at
    the next reboot or after you run partprobe(8) or kpartx(8)
    Syncing disks.
    [root@oracle ~]#
    

    note you might need to change /dev/sda compare to your configuration

    create a new partition (again logged on as super user su -)

    su -
    [root@oracle ~]# pvs
      PV         VG    Fmt  Attr PSize  PFree
      /dev/sda2  linux lvm2 a--  19.70g    0
    [root@oracle ~]# pvcreate /dev/sda3
      Physical volume "/dev/sda3" successfully created
    [root@oracle ~]# pvs
      PV         VG    Fmt  Attr PSize  PFree
      /dev/sda2  linux lvm2 a--  19.70g     0
      /dev/sda3        lvm2 a--  28.83g 28.83g
    
    [root@oracle ~]# vgextend linux /dev/sda3
      Volume group "linux" successfully extended
    [root@oracle ~]# lvextend -l +100%FREE /dev/linux/root
    [root@oracle ~]# resize2fs /dev/linux/home
    resize2fs 1.41.12 (17-May-2010)
    Filesystem at /dev/linux/home is mounted on /home; on-line resizing required
    old desc_blocks = 1, new_desc_blocks = 2
    Performing an on-line resize of /dev/linux/home to 7347200 (4k) blocks.
    The filesystem on /dev/linux/home is now 7347200 blocks long.