Vagrant,如何指定磁盘大小?

gec*_*kos 25 vagrant

我想确保我的开发环境有足够的可用空间来安装工具和其他东西.关于告诉Vagrant我想要的最小磁盘大小,我找不到任何配置选项.这是可能的还是我需要创建自己的盒子?

Lau*_*hen 53

我使用vagrant插件vagrant-disksize来调整磁盘大小.

有效.它还可以帮助指定初始磁盘大小.

vagrant plugin install vagrant-disksize
Run Code Online (Sandbox Code Playgroud)

  • 使用这个插件后,我破坏了盒子,然后做了“无用功”来使更大的磁盘工作。由于访客OS看不到新的磁盘空间,“ vagrant halt; vagrant up”不起作用。对我而言,重新创建包装盒不是解决新问题,而是更轻松的解决方案,并且可以正常工作。 (3认同)

Fir*_*rze 18

安装 Vagrant 插件vagrant-disksize

vagrant plugin install vagrant-disksize
Run Code Online (Sandbox Code Playgroud)

如果你想确保用户安装了插件,在启动 vagrant 时,你可以在 Vagrantfile 的开头添加这个

# Install vagrant-disksize to allow resizing the vagrant box disk.
unless Vagrant.has_plugin?("vagrant-disksize")
    raise  Vagrant::Errors::VagrantError.new, "vagrant-disksize plugin is missing. Please install it using 'vagrant plugin install vagrant-disksize' and rerun 'vagrant up'"
end
Run Code Online (Sandbox Code Playgroud)

在 Vagrantfile 中设置所需的磁盘大小

vagrant.configure('2') do |config|
    config.disksize.size = '50GB'
end
Run Code Online (Sandbox Code Playgroud)

更新现有的流浪箱

  1. 执行以上所有操作
  2. 运行 vagrant halt & vagrant up(你应该会看到类似“Resized disk: old 32768 MB, req 51200 MB, new 51200 MB”)
  3. SSH 到流浪箱
  4. 运行sudo cfdisk /dev/sda
  5. 使用箭头选择您的磁盘可能是 sdaX。我的是sda3。
  6. 然后使用箭头键选择调整大小。接受建议的磁盘大小。
  7. 然后选择写入。并回答是。
  8. 您可以选择立即退出。
  9. 运行sudo resize2fs -p -F /dev/sdaX 您应该会看到如下内容:“/dev/sda3 上的文件系统安装在 /;在线调整大小所需的 old_desc_blocks = 4, new_desc_blocks = 6 /dev/sda3 上的文件系统现在是11933952 (4k) 块长。”
  10. 运行df并查看您的磁盘大小已增加。

  • 步骤 9 `sudo resize2fs -p -F /dev/sda1` 给我错误 `resize2fs:尝试打开 /dev/sda1 时超级块中的错误幻数`。“找不到有效的文件系统超级块”。你能帮忙吗? (3认同)

W1M*_*M0R 11

更新 1:自 Vagrant v2.4.0 起,不再将其标记为实验性的。

Vagrant 最近通过 VirtualBox 提供程序添加了对自定义磁盘大小(包括磁盘调整大小)的实验性支持。一些常见的使用场景记录在此处此处

要激活此功能,请修改Vagrantfile(请参阅下面的示例),VAGRANT_EXPERIMENTAL="disks"在 shell 中设置环境变量,然后运行vagrant up​​.

以下是使用基础盒(基于LVMVagrantfile )在 上测试的示例:Vagrant 2.2.19bento/ubuntu-20.04


Vagrant.configure("2") do |config|
  ...
  config.vm.disk :disk, size: "150GB", primary: true
  config.vm.box = "bento/ubuntu-20.04"
  config.vm.box_version = "202005.21.0"
  config.vm.box_check_update = false
  ...
end
Run Code Online (Sandbox Code Playgroud)

您应该在 期间看到以下输出(或多或少)vagrant up


Vagrant.configure("2") do |config|
  ...
  config.vm.disk :disk, size: "150GB", primary: true
  config.vm.box = "bento/ubuntu-20.04"
  config.vm.box_version = "202005.21.0"
  config.vm.box_check_update = false
  ...
end
Run Code Online (Sandbox Code Playgroud)

此过程可能需要一段时间才能完成(在我的例子中,需要 1 到 2 小时)。

使用vagrant ssh进入您的虚拟机,然后使用以下命令(基于此答案)收集有关文件系统的信息,然后扩展 LVM 卷。如果您的基础设备不使用 LVM,则不应使用这些命令。

==> vagrant: You have requested to enabled the experimental flag with the following features:
==> vagrant:
==> vagrant: Features:  disks
==> vagrant:
==> vagrant: Please use with caution, as some of the features may not be fully
==> vagrant: functional yet.
Bringing machine 'server' up with 'virtualbox' provider...
==> server: Clearing any previously set forwarded ports...
==> server: Clearing any previously set network interfaces...
==> server: Preparing network interfaces based on configuration...
    server: Adapter 1: nat
==> server: Forwarding ports...
    server: 22 (guest) => 49222 (host) (adapter 1)
    server: 4200 (guest) => 49280 (host) (adapter 1)
    server: 4243 (guest) => 49243 (host) (adapter 1)
==> server: Configuring storage mediums...
    server: Disk 'vagrant_primary' needs to be resized. Resizing disk...
Run Code Online (Sandbox Code Playgroud)


JFL*_*JFL 8

如果您的 vagrant box 使用 LVM 并且已经创建,则与 Firze 的答案相比,需要额外的步骤:

  • 安装 Vagrant 插件 vagrant-disksize
vagrant plugin install vagrant-disksize
Run Code Online (Sandbox Code Playgroud)
  • 在 Vagrantfile 中设置所需的磁盘大小
vagrant.configure('2') do |config|
    config.disksize.size = '300GB'
end
Run Code Online (Sandbox Code Playgroud)
  • 重新启动 vagrant box(您应该看到类似“调整磁盘大小...”的内容)
vagrant halt
vagrant up
Run Code Online (Sandbox Code Playgroud)
  • SSH 到 vagrant box

  • 使用 vgdisplay 检查旧尺寸:

vgdisplay
  --- Volume group ---
  VG Name               vagrant-vg
  System ID             
  Format                lvm2
  ...
  Alloc PE / Size       16200 / 63.28 GiB
  Free  PE / Size       0 / 0  
Run Code Online (Sandbox Code Playgroud)
  • 假设设备是 /dev/sda 您必须调整扩展分区和逻辑分区的大小:
parted /dev/sda
p
Number  Start   End     Size    Type      File system  Flags
 1      1049kB  768MB   767MB   primary   ext2         boot
 2      769MB   68.7GB  67.9GB  extended
 5      769MB   68.7GB  67.9GB  logical                lvm

resizepart 2 321GB
resizepart 5 321GB
p
Number  Start   End    Size   Type      File system  Flags
 1      1049kB  768MB  767MB  primary   ext2         boot
 2      769MB   322GB  321GB  extended
 5      769MB   321GB  320GB  logical                lvm
quit
Run Code Online (Sandbox Code Playgroud)
  • 然后,LVM 应该会看到修改:
pvresize /dev/sda5

vgdisplay
  Alloc PE / Size       16200 / 63.28 GiB
  Free  PE / Size       60148 / 234.95 GiB
Run Code Online (Sandbox Code Playgroud)
  • 扩展LVM组:
lvextend  -L+234.95 /dev/vagrant-vg/root 
  Size of logical volume vagrant-vg/root changed from 62.32 GiB (15955 extents) to 297.27 GiB (76102 extents).
  Logical volume root successfully resized.

vgdisplay
  Alloc PE / Size       76347 / 298.23 GiB
  Free  PE / Size       1 / 4.00 MiB
Run Code Online (Sandbox Code Playgroud)
  • 最后,调整文件系统的大小:
resize2fs /dev/vagrant-vg/root

df -h
/dev/mapper/vagrant--vg-root  293G   59G  222G  21% /
Run Code Online (Sandbox Code Playgroud)