【问题标题】:Many Vagrant(Virtualbox) machines on one host station and dynamic allocation of resources一个主机站上多台 Vagrant(Virtualbox) 机器和动态分配资源
【发布时间】:2016-04-07 14:41:16
【问题描述】:

我有一台主机,想要运行许多 (10) 个虚拟机(Virtualbox + Vagrant)。

我想动态分配 CPU 和 RAM 等资源。

如果我给每个 VM 2 GB RAM,我的主机必须至少有 20 GB od RAM 内存。但也许更好的是动态地为每个 VM 分配 512MB 到 4GB 的 RAM - 取决于当前的需求。

如果我知道这可能不是流浪的东西,而是 VirtualBox。

我在 VB 中阅读了有关 memory ballooning 的信息,但我不确定我是否了解它的工作原理以及这个气球实际上是什么。如何配置它以及将多少 MB 设置为最大等。

CPU 也是如此 - 我不知道如何配置它以及它应该如何工作。

我的问题是 如果我有 12 个 CPU 和 24GB od RAM 的主机并且想要运行 10 台 vagrant 机器 - 我该如何配置它以动态分配这些资源?

【问题讨论】:

    标签: memory-management vagrant virtualbox


    【解决方案1】:

    这是一个脚本(我不确定我在哪里,它在我的笔记中),可用于根据当前规格机器进行配置 - 您可以根据需要进行调整,您将启动多少虚拟机以此类推

    我知道它并不能完全回答动态 VM 分配一旦启动的问题。

      config.vm.provider "virtualbox" do |v|
          host = RbConfig::CONFIG['host_os']
          # Give VM 1/4 system memory & access to all cpu cores on the host
          if host =~ /darwin/
            cpus = `sysctl -n hw.ncpu`.to_i
            # sysctl returns Bytes and we need to convert to MB
            mem = `sysctl -n hw.memsize`.to_i / 1024 / 1024 / 4
          elsif host =~ /linux/
            cpus = `nproc`.to_i
            # meminfo shows KB and we need to convert to MB
            mem = `grep 'MemTotal' /proc/meminfo | sed -e 's/MemTotal://' -e 's/ kB//'`.to_i / 1024 / 4
          else
            cpus = `wmic cpu get NumberOfCores`.split("\n")[2].to_i
            mem = `wmic OS get TotalVisibleMemorySize`.split("\n")[2].to_i / 1024 /4
          end
    
          v.customize ["modifyvm", :id, "--memory", mem]
          v.customize ["modifyvm", :id, "--cpus", cpus]
      end
    

    【讨论】:

      猜你喜欢
      • 2021-05-30
      • 2016-07-03
      • 2013-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-02
      • 2019-02-28
      相关资源
      最近更新 更多