是否可以为 Vagrant 管理的 Linux 来宾 VM 创建交换文件?

Sea*_*inn 9 memory virtualbox swap vagrant

在我中,Vagrantfile我定义了以下提供者:

摘自 Vagrantfile:

config.vm.provider :virtualbox do |vb|
  vb.gui = false
  vb.customize ["modifyvm", :id, "--memory", "4096"]
end
Run Code Online (Sandbox Code Playgroud)

当我free -m在创建的 VM 中运行时,我看到以下报告:

             total       used       free     shared    buffers     cached
Mem:          3953        337       3615          0         18        119
-/+ buffers/cache:        199       3753
Swap:            0          0          0
Run Code Online (Sandbox Code Playgroud)

是否可以在构建和配置 VM 时分配 swappiness?

我已经尝试设置vm.swappiness/etc/sysctl.conf并重新启动虚拟机,但我没有看到添加交换空间的VM的任何影响。

为什么需要交换空间?我宁愿根本不处理交换空间并在内存中运行所有内容。但是,对于某些应用程序(例如 PHP 的 Composer 项目),在某些情况下会因使用大量内存而臭名昭著。如果没有交换空间,我必须非常自由地分配给 VM 的内存量,如果我有交换空间——尽管它可能效率不高——理论上我会遇到更少的问题。

Jon*_*han 15

只需将此行添加到您的流浪文件中

流浪档案

 # Enable Dynamic Swap Space to prevent Out of Memory crashes
config.vm.provision "shell", inline: "sudo apt install swapspace -y"
Run Code Online (Sandbox Code Playgroud)

然后重新配置

vagrant up --provision
Run Code Online (Sandbox Code Playgroud)

这个怎么运作

这是一个动态交换空间守护进程。有几个,但这里有一个流行的。

sudo apt install swapspace
Run Code Online (Sandbox Code Playgroud)

验证它正在运行

sudo service swapspace status
Run Code Online (Sandbox Code Playgroud)

摘自http://pqxx.org/development/swapspace/

这个 Linux 内核的系统守护进程旨在消除对大型固定交换分区或交换文件的需求。

当使用 Swapspace 安装基于 Linux 的系统(总是 GNU/Linux)时,通常的交换分区可以省略,或者可以保持很小。每当 Swapspace 在正常系统使用过程中发现需要更多虚拟内存时,它就会自动从硬盘中申请空间。相反,不再需要的交换空间被再次释放以供文件系统定期使用。

这意味着安装 Swapspace 后,在安装期间调整系统可用交换空间的大小不再是生死攸关的选择。现在可以在一个单独的大分区上运行 GNU/Linux 了——没有磁盘空间因令人遗憾的安装选择而损失。系统还应该能够处理偶尔占用比最初预期更多交换空间的内存密集型任务,而不会像通常情况那样在正常操作期间留下未使用和不可用的相同交换空间。


小智 4

您看到的内存设置仅用于配置虚拟机的 RAM。但是,交换空间定义是磁盘映像的一部分。config.vm.box该图像作为中定义的一部分提供给您Vagrantfile。在我的具体情况下,我注意到交换空间无法轻松重新配置(我只有 1 GB 的交换空间)。

对于您的情况,我建议更改基本映像 ( ),或者通过将此脚本config.vm.box集成到您的. 是另一个似乎值得尝试的链接。Vagrantfile