Có thể tạo tệp hoán đổi cho máy khách Linux do Vagrant quản lý không?


8

Trong tôi Vagrantfilecó nhà cung cấp sau được định nghĩa:

Trích từ Vagrantfile:

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

Khi tôi chạy free -mtrong VM đã tạo, tôi thấy báo cáo sau:

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

Có thể gán swappiness khi VM đang được xây dựng và cung cấp không?

Tôi đã cố gắng thiết lập vm.swappinesstrong /etc/sysctl.confvà khởi động lại máy ảo, nhưng tôi không thấy bất kỳ ảnh hưởng của việc thêm không gian hoán đổi cho VM.

Tại sao tôi cần không gian hoán đổi? Tôi thà không đối phó với không gian hoán đổi chút nào và chạy mọi thứ trong bộ nhớ. Tuy nhiên, đối với một số ứng dụng (ví dụ dự án soạn thảo cho PHP) nổi tiếng là sử dụng nhiều bộ nhớ trong các điều kiện nhất định. Không có không gian hoán đổi, tôi phải rất tự do với số lượng bộ nhớ tôi ném vào máy ảo, nếu tôi có không gian hoán đổi - mặc dù nó có thể không hiệu quả - về mặt lý thuyết tôi sẽ gặp ít vấn đề hơn.

Câu trả lời:


4

Cài đặt bộ nhớ bạn thấy chỉ được sử dụng để định cấu hình RAM của VM. Tuy nhiên, định nghĩa không gian hoán đổi là một phần của hình ảnh đĩa. Hình ảnh này được cung cấp cho bạn như là một phần của config.vm.boxđịnh nghĩa trong Vagrantfile. Trong trường hợp cụ thể của tôi, tôi nhận thấy rằng không gian hoán đổi có thể dễ dàng được cấu hình lại (tôi chỉ có 1 GByte trao đổi).

Trong trường hợp của bạn, tôi khuyên bạn nên thay đổi hình ảnh cơ sở ( config.vm.box) hoặc thêm tệp hoán đổi vào hệ thống tệp gốc của bạn bằng cách tích hợp ví dụ tập lệnh này vào tập lệnh của bạn Vagrantfile. Đây là một liên kết khác có vẻ đáng để thử.


Cảm ơn, tôi đã hình dung rằng hình ảnh cơ sở phải được sửa đổi hoán đổi sau khi tôi nhìn sâu hơn vào nó. Hóa ra tôi có thể khắc phục các vấn đề của mình bằng cách sử dụng các hoạt động khác nhau trên chương trình đòi hỏi nhiều bộ nhớ. Dường như không có giải pháp nào khác ngoài sửa đổi hình ảnh cơ sở.
Sean Quinn

Các kịch bản được liên kết (đầu tiên) làm việc tốt cho tôi. Trong trường hợp liên kết bao giờ bị cũ: create_swap.shremove_swap.sh như GIST liệu
panepeter

11

Chỉ cần thêm dòng này vào tập tin mơ hồ của bạn

Vagrantfile

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

Và sau đó phê duyệt

vagrant up --provision

Làm thế nào nó hoạt động

Đây là một daemon không gian hoán đổi năng động. Có một số, nhưng đây là một phổ biến.

sudo apt install swapspace

Để xác minh nó đang chạy

sudo service swapspace status

Trích từ http://pqxx.org/development/swapspace/

Trình nền hệ thống cho nhân Linux này nhằm giải quyết nhu cầu về các phân vùng hoán đổi lớn, cố định hoặc các tệp hoán đổi.

Khi cài đặt một hệ thống dựa trên Linux (luôn luôn là GNU / Linux) với Swapspace, phân vùng trao đổi thông thường có thể được bỏ qua hoặc có thể được giữ khá nhỏ. Bất cứ khi nào Swapspace tìm thấy trong quá trình sử dụng hệ thống bình thường cần thêm bộ nhớ ảo, nó sẽ tự động lấy không gian từ đĩa cứng. Ngược lại, không gian hoán đổi không còn cần thiết sẽ được giải phóng lại để sử dụng thường xuyên bởi hệ thống tập tin.

Điều này có nghĩa là với Swapspace được cài đặt, kích thước không gian hoán đổi có sẵn của hệ thống trong khi cài đặt không còn là lựa chọn sống hay chết. Bây giờ nó trở nên thiết thực khi chạy GNU / Linux chỉ bằng một phân vùng lớn duy nhất - không mất dung lượng đĩa cho các lựa chọn cài đặt đáng tiếc. Hệ thống cũng có thể xử lý tác vụ thường xuyên chiếm bộ nhớ cần nhiều không gian hoán đổi hơn so với dự kiến ​​ban đầu, mà không để lại không gian hoán đổi tương tự không được sử dụng và không sử dụng được trong quá trình hoạt động bình thường như bình thường.


0

Nếu bạn đang sử dụng Chef để cung cấp hộp Vagrant của mình, giải pháp đơn giản nhất có lẽ là sử dụng swap_filetài nguyên. Tài nguyên này là mới trong Chef 14.0.

Ví dụ: thêm các mục sau vào công thức của bạn:

swap_file '/var/swap.1' do
  size 1024
end
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.