Como aumentar o tamanho do swap?

17

Recentemente, coloquei mais memória ram no meu servidor e agora tenho um total de 24 GB de RAM. Originalmente, eu configurei o sistema operacional para ter um tamanho de troca de 2 GB.

/dev/sdc1               1         281     2257101   82  Linux swap / Solaris
/dev/sdc2   *         282       60801   486126900   83  Linux

Atualmente, 2 GB estão alocados para troca, mas ler ao redor parece que não é muito. Para um sistema com 24 GB, estou pensando em alocar pelo menos 10 GB de swap.

Minhas perguntas são: Posso fazer isso enquanto o sistema operacional está em execução? Tenho que reinstalar? Estou usando o OpenSuse 11.3

Homem X
fonte

Respostas:

23

Você decidiu criar uma partição de troca separada na instalação. Você não pode redimensioná-lo online - mesmo um redimensionamento off-line levará uma quantidade considerável de tempo e arcará com o risco potencial de danificar seu sistema de arquivos subsequente em / dev / sdc2.

A opção mais fácil para contornar isso é criar uma nova partição de troca em um disco diferente que você não usa no momento (ou pode se dar ao luxo de offline para particionar novamente) ou simplesmente usar um arquivo de troca em um sistema de arquivos existente (que vem com alguma penalidade de desempenho menor devido à sobrecarga do sistema de arquivos ).

O procedimento geral para adicionar uma partição / arquivo de troca:

  • crie uma nova partição do tipo 82h ou um novo arquivo de 8 GB usando dd if=/dev/zero of=/swapfile bs=1M count=8192
  • inicialize-o usando mkswap /swapfileoumkswap /dev/sdXX
  • use swapon /swapfileouswapon /dev/sdXX respectivamente para ativar seu novo espaço de troca on-the-fly
  • adicione uma entrada ao / etc / fstab para garantir que seu novo espaço de troca seja ativado após a reinicialização

Sua partição de troca atual permanece em uso. Você pode se livrar dela por uma questão de redução de complexidade. Basta usar swapoff /dev/sdc1para desativar seu uso no momento e remover a referência em/etc/fstab

o wabbit
fonte
@ synticon-dj obrigado. os dados no disco em que a troca é crucial e eu tenho outro disco que posso usar. Você acha que definir um disco diferente como swap afetará o desempenho? Terei que trocar o / dev / sdc1?
que você
Isso afetará de uma maneira ou de outra - se / dev / sdc2 estiver sendo muito utilizado, essa E / S concorrerá com E / S de troca. Se você adicionar a partição de outro disco como swap, basta adicionar a carga de E / S de swap neste disco. O que será benéfico para o desempenho da troca é inevitavelmente prejudicial para as outras E / S no disco afetado. Dito isto, nada é tão ruim para o desempenho do seu sistema quanto um alto número de solicitações de saída de página / página. Se você vir isso, corrija-o adicionando memória ou reduzindo o consumo de memória do seu sistema.
the-wabbit
ter dois dispositivos de troca em eixos diferentes ajudará no desempenho da troca (pois há dois discos que podem ser endereçados simultaneamente, em vez de apenas um para leitura e gravação). Mas como você não deve ver atividade de alto I / O, devido à troca de qualquer maneira, você pode preferir usar apenas um único dispositivo / partição / arquivo para facilitar a administração
o wabbit
1
Observe que um arquivo de troca não funcionará se você estiver em um BtrFS. Duas soluções alternativas são (1) criar um dispositivo de loopback ou (2) usar btrfs-swapon .
Diagon
@ the-wabbit Como alguém realmente cria a /etc/fstabentrada para garantir que a nova troca seja ativada na reinicialização?
SIGSTACKFAULT
3

Você precisaria trocar neste caso? Não sei o que você está executando no sistema do sistema, mas tento ter memória suficiente em meus servidores para evitar a troca completamente ... (eu a tenho, mas apenas como à prova de falhas, se meu servidor começar a trocar, eu compro mais memória ...)

Analítico
fonte
Estou do seu lado aqui, o swap é usado principalmente para evitar falhas em caso de exaustão de memória (volátil) e, assim que você começa a bater em pratos, seu servidor está recebendo E / S de sucesso e / ou largura de banda, embora os SSDs possam ajudar eles são pelo menos 10 vezes mais lentos que a RAM, o que hoje em dia é muito barato. Os preços dos DDR3 ECC a 1333 é de cerca de US $ 1000 para 64GB (8x8GB)
Shadok
2

Você precisa reparticionar o disco. Se eu me lembro de que mudar bem o início da partição Linux não é suportado em parted, mas você pode reduzir também o sistema de arquivos linux e a partição e fazer outra troca no final do seu disco. Você não pode fazer isso enquanto o sistema estiver online.

A solução alternativa é usar um arquivo grande como swap. (Não sei se é uma boa ideia hoje em dia.)

Pedra
fonte
Nem todo sistema de arquivos pode ser reduzido, mesmo offline. Infelizmente, isso afeta opções populares como o XFS ( xfs.org/index.php/Shrinking_Support ).
Sven
@Stone isso significa reinstalar o sistema operacional?
X-man
Não. Isso significa fazer backups :), inicializar um LiveCD, reduzir o sistema de arquivos linux e depois a partição sdc2 e fazer uma nova troca no final do disco e reiniciar o sistema.
Stone
0

1 Desative todos os processos de troca

sudo swapoff -a

2 Redimensione a troca

sudo dd if=/dev/zero of=/swapfile bs=1G count=8

if = input file
of = output file
bs = block size
count = multiplier of blocks

3 Torne o arquivo utilizável como swap

sudo mkswap /swapfile

4 Ative o arquivo de troca

sudo swapon /swapfile

5 Verifique a quantidade de swap disponível

grep SwapTotal /proc/meminfo
Ryabchenko Alexander
fonte