เป็นไปได้ไหมที่จะสร้างไฟล์ swap สำหรับ VM guest guest VM ที่บริหารโดย Vagrant?


8

ในฉันVagrantfileฉันได้กำหนดผู้ให้บริการดังต่อไปนี้:

ตัดตอนมาจาก Vagrantfile:

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

เมื่อฉันรัน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 แต่ฉันไม่เห็นมีผลต่อการเพิ่มพื้นที่ swap กับ VM ใด ๆ

ทำไมฉันต้องมีพื้นที่สว็อป? ฉันค่อนข้างจะไม่จัดการกับพื้นที่สว็อปเลยและรันทุกอย่างในความทรงจำ อย่างไรก็ตามสำหรับบางแอปพลิเคชั่น (ตัวอย่างผู้แต่งสำหรับ PHP) มีชื่อเสียงในการใช้หน่วยความจำจำนวนมากภายใต้เงื่อนไขบางประการ หากไม่มีพื้นที่สว็อปฉันต้องมีความอิสระอย่างมากกับจำนวนหน่วยความจำที่ฉันส่งไปยัง VM ถ้าฉันมีพื้นที่สว็อป - แม้ว่ามันอาจจะไม่ได้มีประสิทธิภาพ - ในทางทฤษฎีแล้วฉันจะพบปัญหาน้อยลง

คำตอบ:


4

การตั้งค่าหน่วยความจำที่คุณเห็นใช้เพื่อกำหนดค่า RAM ของ VM เท่านั้น อย่างไรก็ตามนิยามพื้นที่สว็อปเป็นส่วนหนึ่งของอิมเมจดิสก์ ภาพนี้มีให้แก่คุณเป็นส่วนหนึ่งของความหมายในconfig.vm.box Vagrantfileในกรณีเฉพาะของฉันฉันสังเกตเห็นว่าพื้นที่สว็อปไม่สามารถกำหนดค่าใหม่ได้ง่าย (ฉันมีเพียง 1 GB ของการสว็อป)

ในกรณีของคุณผมขอแนะนำให้เปลี่ยนภาพฐาน ( config.vm.box) หรือเพิ่มการแลกเปลี่ยนไฟล์ในระบบแฟ้มรากของคุณโดยการบูรณาการเช่นสคริปต์นี้Vagrantfileลงใน นี่คือลิงค์อื่นที่น่าลอง


ขอบคุณฉันคิดว่าภาพฐานจะต้องมีการแก้ไข swap หลังจากที่ฉันดูเพิ่มเติม ตามที่ปรากฎฉันสามารถแก้ไขปัญหาของฉันโดยใช้การดำเนินการต่าง ๆ ในโปรแกรมที่ต้องใช้หน่วยความจำจำนวนมาก ดูเหมือนว่าจะไม่มีวิธีอื่นนอกเหนือจากการปรับเปลี่ยนอิมเมจพื้นฐาน
Sean Quinn

สคริปต์ที่เชื่อมโยง (อันแรก) ทำงานได้ดีสำหรับฉัน ในกรณีที่การเชื่อมโยงที่เคยได้รับเก่า: create_swap.shและremove_swap.shเป็น gists ดิบ
panepeter

12

เพียงเพิ่มบรรทัดนี้ในไฟล์คนจรจัดของคุณ

Vagrantfile

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

และจากนั้นตำหนิ

vagrant up --provision

มันทำงานอย่างไร

นี่เป็น daemon พื้นที่การแลกเปลี่ยนแบบไดนามิก มีหลายอย่าง แต่ที่นี่เป็นที่นิยม

sudo apt install swapspace

เพื่อตรวจสอบว่ามันทำงานอยู่

sudo service swapspace status

ตัดตอนมาจากhttp://pqxx.org/development/swapspace/

daemon ระบบนี้สำหรับเคอร์เนล Linux มีเป้าหมายที่จะกำจัดความต้องการพาร์ติชัน swap ขนาดใหญ่หรือไฟล์ swap

เมื่อติดตั้งระบบที่ใช้ Linux (GNU / Linux อย่างสม่ำเสมอ) ด้วย Swapspace จะไม่มีการเว้นพาร์ติชั่น swap ปกติหรืออาจเก็บไว้ค่อนข้างเล็ก เมื่อใดก็ตามที่ Swapspace พบในระหว่างการใช้งานระบบปกติที่ต้องการหน่วยความจำเสมือนมากขึ้นก็จะเรียกร้องพื้นที่โดยอัตโนมัติจากฮาร์ดดิสก์ ในทางกลับกันพื้นที่สว็อปที่ไม่ต้องการอีกต่อไปนั้นจะเพิ่มขึ้นอีกครั้งเพื่อให้ระบบไฟล์ใช้งานเป็นประจำ

ซึ่งหมายความว่าเมื่อมีการติดตั้ง Swapspace การปรับขนาดพื้นที่สว็อปที่มีอยู่ของระบบในระหว่างการติดตั้งจะไม่เป็นตัวเลือกที่เป็นความตายหรือตายอีกต่อไป ตอนนี้มันกลายเป็นประโยชน์ในการรัน GNU / Linux จากพาร์ติชั่นตัวเดียวที่มีขนาดใหญ่ - โดยไม่ต้องมีพื้นที่ดิสก์เหลือให้เลือกติดตั้งที่น่าเสียดาย ระบบควรสามารถจัดการงานที่ต้องใช้หน่วยความจำมากเป็นครั้งคราวซึ่งใช้พื้นที่สว็อปมากกว่าที่คาดการณ์ไว้เดิมโดยไม่ต้องเว้นพื้นที่สว็อปเดียวกันที่ไม่ได้ใช้และไม่สามารถใช้งานได้ในระหว่างการทำงานปกติตามปกติ


0

หากคุณใช้ Chef เพื่อจัดเตรียมกล่อง Vagrant ของคุณทางออกที่ง่ายที่สุดน่าจะใช้swap_fileทรัพยากร ทรัพยากรนี้ใหม่ใน Chef 14.0

ตัวอย่างเช่นเพิ่มสูตรอาหารของคุณต่อไปนี้:

swap_file '/var/swap.1' do
  size 1024
end
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.