vagrant 没有 space 留在设备上
vagrant no space left on device
今天我开始在简单的操作上出错,比如在 vim
中创建小文件,bash 完成也开始抱怨。
这是 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
显然 /
不再有 space 了?这不是很奇怪吗,因为我在其他文件系统中有 space(或者我误读了什么)?
如何在我的虚拟机上获得更多 space?
即使您的 Guest OS 上有 space,VM 是 limited.There 需要几个步骤才能增加磁盘的大小:
首先,vagrant halt
关闭您的虚拟机
调整磁盘大小
VBoxManage clonehd box-disk1.vmdk box-disk1.vdi --format vdi
VBoxManage modifyhd box-disk1.vdi --resize 50000
启动 Virtual box 并更改 VM 的配置以关联新磁盘
使用 fdisk 调整磁盘大小
你需要用新的space创建一个新分区并分配它,所以首先启动虚拟机并以超级用户身份登录
vagrant up && vagrant ssh
su -
命令(如我的实例所示)是
[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 ~]#
注意您可能需要更改/dev/sda与您的配置
创建一个新分区(再次以超级用户身份登录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.
您可以在您的盒子中增加 space,而不会丢失数据或创建新分区。
停止您的虚拟机;
转到/home_dir/VirtualBox VMs
将文件格式从 .vmdk
更改为 .vdi
。然后使用上面答案中的命令来增加 space.
改回文件扩展名并更改文件名。
将扩展磁盘附加到您的 VM。
VBoxManage storageattach <your_box_name> --storagectl "IDE Controller" --
port 0 --device 0 --type hdd --medium new_extended_file.vmdk
在您的 VirtualBox 应用程序中转到 Your_VM -> 设置 -> 存储。单击控制器并选择下面的“添加新磁盘”。从现有磁盘中选择您刚刚扩展的磁盘。
Here's a step by step instruction how to expand the space in your vagrant box or virtual machine.
增加 vagrant box 大小的最简单方法是使用 vagrant-disksize 插件。
在你的 vagrant 根文件夹中,运行 vagrant plugin install vagrant-disksize
然后将新尺寸添加到 Vagrantfile 中:
Vagrant.configure('2') do |config|
...
config.disksize.size = '60GB'
end
然后vagrant halt
和vagrant up
。
vagrant reload
将不起作用。
我了解到,如果您超出范围,该插件会在缩小磁盘大小时出现问题。
编辑:
在 Mac 上,此插件还调整了 Guest OS 中的分区大小(在我的例子中是 Ubuntu)。
在 Windows 上,Vagrant 在主机 OS 上保留了 space(它扩大了磁盘),但是你不能使用 space 直到从 Guest 中调整分区大小OS.
我用了 GParted, but other solutions look simpler, such as: https://nguyenhoa93.github.io/Increase-VM-Partition
有时我不得不破坏机器并重新构建它,在我的情况下释放了很多 space,你可以通过 运行
vagrant destroy
vagrant up
今天我开始在简单的操作上出错,比如在 vim
中创建小文件,bash 完成也开始抱怨。
这是 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
显然 /
不再有 space 了?这不是很奇怪吗,因为我在其他文件系统中有 space(或者我误读了什么)?
如何在我的虚拟机上获得更多 space?
即使您的 Guest OS 上有 space,VM 是 limited.There 需要几个步骤才能增加磁盘的大小:
首先,vagrant halt
关闭您的虚拟机
调整磁盘大小
VBoxManage clonehd box-disk1.vmdk box-disk1.vdi --format vdi
VBoxManage modifyhd box-disk1.vdi --resize 50000
启动 Virtual box 并更改 VM 的配置以关联新磁盘
使用 fdisk 调整磁盘大小
你需要用新的space创建一个新分区并分配它,所以首先启动虚拟机并以超级用户身份登录
vagrant up && vagrant ssh
su -
命令(如我的实例所示)是
[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 ~]#
注意您可能需要更改/dev/sda与您的配置
创建一个新分区(再次以超级用户身份登录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.
您可以在您的盒子中增加 space,而不会丢失数据或创建新分区。
停止您的虚拟机;
转到
/home_dir/VirtualBox VMs
将文件格式从
.vmdk
更改为.vdi
。然后使用上面答案中的命令来增加 space.改回文件扩展名并更改文件名。
将扩展磁盘附加到您的 VM。
VBoxManage storageattach <your_box_name> --storagectl "IDE Controller" -- port 0 --device 0 --type hdd --medium new_extended_file.vmdk
在您的 VirtualBox 应用程序中转到 Your_VM -> 设置 -> 存储。单击控制器并选择下面的“添加新磁盘”。从现有磁盘中选择您刚刚扩展的磁盘。
Here's a step by step instruction how to expand the space in your vagrant box or virtual machine.
增加 vagrant box 大小的最简单方法是使用 vagrant-disksize 插件。
在你的 vagrant 根文件夹中,运行 vagrant plugin install vagrant-disksize
然后将新尺寸添加到 Vagrantfile 中:
Vagrant.configure('2') do |config|
...
config.disksize.size = '60GB'
end
然后vagrant halt
和vagrant up
。
vagrant reload
将不起作用。
我了解到,如果您超出范围,该插件会在缩小磁盘大小时出现问题。
编辑:
在 Mac 上,此插件还调整了 Guest OS 中的分区大小(在我的例子中是 Ubuntu)。
在 Windows 上,Vagrant 在主机 OS 上保留了 space(它扩大了磁盘),但是你不能使用 space 直到从 Guest 中调整分区大小OS.
我用了 GParted, but other solutions look simpler, such as: https://nguyenhoa93.github.io/Increase-VM-Partition
有时我不得不破坏机器并重新构建它,在我的情况下释放了很多 space,你可以通过 运行
vagrant destroy
vagrant up