Os sistemas Linux em várias máquinas virtuais podem compartilhar a mesma partição swap? [duplicado]

3

Estou tentando economizar espaço em disco entre vários sistemas e reutilizando a mesma partição de troca (que parece estar bem).

Agora estou entrando em várias máquinas virtuais e estou pensando em um sistema de arquivos de passagem para outra unidade a ser usada como uma troca de Linux.

Seria possível (eu suponho) montar os dois sistemas na mesma partição swap, mas causaria problemas. Como o aplicativo é mapeado e não está em conflito, os identificadores do sistema operacional também são mapeados ou fazem parte do mapeamento de aplicativos?

O cenário estressado seria várias VMs em execução (possivelmente pausadas, portanto, não executando ativamente em simultâneo).

Para ser explícito:

  1. Iniciar a VM 1
  2. Pausar VM 1
  3. Iniciar VM 2

Ambos compartilham o mesmo arquivo de troca. Sem hibernação Se você viu isto: FreeBSD e Linux compartilhou partições mas a resposta afirma que é não confirmado. Também preciso saber se ele quebra para diferentes versões de SOs / Kernel.

    
por DarkSheep 13.06.2013 / 02:56

2 respostas

3

Acho que o que você vai descobrir é que é possível, mas provavelmente não é aconselhável fazer isso. Ao analisar três tecnologias de virtualização:

  • VirtualBox
  • VMWare
  • KVM

Parece ser possível nos primeiros 2 (VirtualBox e VMWare):

Para o KVM, parece possível também, mas com várias advertências. Para um com as versões mais novas do RHEL, foi implementada uma nova tecnologia chamada KSM - Kernel Samepage Merging , que permite páginas idênticas Convidados VM para ser compartilhado, no entanto, eles são "fixados" na memória e não podem ser trocados.

excerto - Práticas recomendadas do KVM (Kernel Virtual Machine) para o KVM

The system cannot swap memory pages that are shared by KSM because they are pinned.

Portanto, não fica claro o que acontece se a VM tiver sua própria troca e uma das páginas desses convidados precisar ser trocada pela VM. Então, isso aconteceria, mas a memória física não seria liberada (seria meu palpite), desperdiçando disco agora na troca da VM e continuando a usar a RAM física.

Além disso, parece perigoso ter todas as VMs usando a mesma troca por esse motivo: O que acontece quando a troca fica cheia, todas as VMs estão em risco, já que o recurso está praticamente esgotado.

excerto Supercomprometimento com o KVM

As KVM virtual machines are Linux processes, memory used by virtualized guests can be put into swap if the guest is idle or not in heavy use. Memory can be committed over the total size of the swap and physical RAM. This can cause issues if virtualized guests use their total RAM. Without sufficient swap space for the virtual machine processes to be swapped to the pdflush process, the cleanup process, starts. pdflush kills processes to free memory so the system does not crash. pdflush may destroy virtualized guests or other system processes which may cause file system errors and may leave virtualized guests unbootable.

Anatomia de uma troca no KVM

Há uma excelente excelente descrição no site do KVM que discute como a VM fornece memória , bem como Eventualmente, fará uso de swap. Foi escrito para qemu-kvm v0.12, então não sei quanto mudou desde aquela versão.

trecho da página acima

Swap-out path

Now, let's say the host is under memory pressure. The page from above has gone through the Linux LRU and has found itself on the inactive list. The kernel decides that it wants the page back:

  1. The host kernel uses rmap structures to find out in which VMA (vm_area_struct) the page is mapped.

  2. The host kernel looks up the mm_struct associated with that VMA, and walks down the Linux page tables to find the host hardware page table entry (pte_t) for the page.

  3. The host kernel swaps out the page and clears out the pte_t (let's assume that this page was only used in a single place). But, before freeing the page.

  4. The host kernel calls the mmu_notifier invalidate_page(). This looks up the page's entry in the NPT/EPT structures and removes it.

  5. Now, any subsequent access to the page will trap into the host ((2) in the fault-in path above)

Portanto, o que o texto acima está tentando dizer é que quando uma página da memória da VM guest precisa ser trocada, isso é feito pelo host. Mas perceba que é quando todo o host esgotou sua RAM, não quando uma VM guest tem.

Você deve usar swap no KVM?

Eu faço isso e desde que você entenda que, se tiver muitas VMs em um sistema, elas podem estar atingindo o disco se elas estiverem superprovisionadas e, assim, você estará criando uma grande quantidade de I / O seu disco. Veja esta pergunta ServerFault para mais detalhes .

    
por 13.06.2013 / 03:42
1

Se os SOs estiverem sendo executados simultaneamente em VMs com uma partição de swap compartilhada você vai causar estragos.

Não vá lá, compre um disco extra.

    
por 13.06.2013 / 03:18