Vagrant가 관리하는 Linux 게스트 VM에 대한 스왑 파일을 만들 수 있습니까?

Vagrantfile에서 다음 공급자를 정의했습니다.

Vagrantfile에서 발췌 :

config.vm.provider :virtualbox do |vb|
  vb.gui = false
  vb.customize ["modifyvm", :id, "--memory", "4096"]
end

내가 runn 때 free -m생성 된 VM 내에서 나는 다음과 같은 보고서를 참조하십시오

             total       used       free     shared    buffers     cached
Mem:          3953        337       3615          0         18        119
-/+ buffers/cache:        199       3753
Swap:            0          0          0

VM을 구축하고 프로비저닝 할 때 교체를 할당 할 수 있습니까?

내가 설정 시도 vm.swappiness/etc/sysctl.conf와 VM을 다시 시작,하지만 난 어떤 VM에 스왑 공간을 추가하는 영향을 볼 수 없습니다.

스왑 공간이 필요한 이유는 무엇입니까? 차라리 스왑 공간을 다루지 않고 모든 것을 메모리에서 실행하려고합니다. 그러나 일부 응용 프로그램 (예 : PHP 용 작곡가 프로젝트)의 경우 특정 조건에서 많은 메모리를 사용하는 것으로 악명이 높습니다. 스왑 공간이 없으면 스왑 공간이 있으면 VM에 던지는 메모리 양이 매우 자유로 워야합니다. 스왑 공간이 효율적이지 않더라도 이론적으로는 더 적은 문제가 발생합니다.



답변

표시되는 메모리 설정은 VM의 RAM을 구성하는 데만 사용됩니다. 그러나 스왑 공간 정의는 디스크 이미지의 일부입니다. 이 이미지는의 config.vm.box정의의 일부로 제공됩니다 Vagrantfile. 필자의 경우 스왑 공간을 쉽게 재구성 할 수 없다는 것을 알았습니다 (1GB의 스왑 만 있음).

귀하의 경우 기본 이미지 ( config.vm.box) 를 변경 하거나 예를 들어이 스크립트 를 에 통합하여 루트 파일 시스템에 스왑 파일을 추가하는 것이 좋습니다 Vagrantfile. 이것은 시도해 볼 가치가있는 또 다른 링크입니다.


답변

이 줄을 방랑 파일에 추가하기 만하면됩니다.

방랑자

 # Enable Dynamic Swap Space to prevent Out of Memory crashes
config.vm.provision "shell", inline: "sudo apt install swapspace -y"

그런 다음 다시 제공

vagrant up --provision

작동 원리

이것은 동적 스왑 공간 데몬입니다. 몇 가지가 있지만 여기에 인기있는 것이 있습니다.

sudo apt install swapspace

실행 중인지 확인하려면

sudo service swapspace status

http://pqxx.org/development/swapspace/ 에서 발췌

Linux 커널 용이 시스템 데몬은 큰 고정 스왑 파티션이나 스왑 파일이 필요하지 않도록합니다.

Swapspace와 함께 Linux 기반 시스템 (불규칙적으로 GNU / Linux)을 설치할 때 일반적인 스왑 파티션을 생략하거나 아주 작게 유지할 수 있습니다. Swapspace가 일반적인 시스템 사용 중에 더 많은 가상 메모리가 필요하다는 것을 발견 할 때마다 하드 디스크에서 공간을 자동으로 청구합니다. 반대로 더 이상 필요없는 스왑 공간은 파일 시스템에서 정기적으로 사용하기 위해 다시 확보됩니다.

이는 Swapspace가 설치되어 있으면 설치 중 시스템의 사용 가능한 스왑 공간 크기를 더 이상 결정하지 않아도됩니다. 유감스러운 설치 선택으로 인해 디스크 공간을 잃지 않고 하나의 큰 파티션에서 GNU / Linux를 실행하는 것이 실용화되었습니다. 또한 시스템은 정상적인 경우와 같이 동일한 스왑 공간을 사용하지 않고 정상 작동 중에 사용할 수없는 상태로 원래 예상했던 것보다 훨씬 많은 스왑 공간을 차지하는 가끔씩 메모리를 많이 사용하는 작업을 처리 할 수 ​​있어야합니다.


답변

Chef를 사용하여 Vagrant Box를 프로비저닝하는 경우 가장 쉬운 해결책은 아마도 swap_file리소스 를 사용하는 것입니다 . 이 리소스는 Chef 14.0의 새로운 기능입니다.

예를 들어, 레시피에 다음을 추가하십시오.

swap_file '/var/swap.1' do
  size 1024
end