aumento do tamanho de / tmp em instâncias do EC2

8

Estou executando um servidor Ubuntu no EC2 ebs, e meu aplicativo precisa de muito espaço em disco temporário, alocado em / tmp. No entanto, no ec2, a unidade raiz que também contém / tmp é bem pequena, em torno de 10 GB. Todo o espaço em disco restante é montado em / mnt. Como resultado, meu aplicativo retorna erros de 'falta de espaço em disco', porque / tmp parece estar cheio.

Qual é a melhor maneira de resolver este problema? Uma coisa que consigo pensar é criar / mnt / tmp e criar um link simbólico

/tmp --> /mnt/tmp

No entanto, estou um pouco relutante em mexer com algo que é usado por muitos programas e ferramentas Linux. Não tenho certeza se todos os programas resolverão corretamente o link simbólico e não tenho certeza do que seria para o desempenho.

Jeroen
fonte
2
Montagens de ligação significam não ter que vincular novamente.
Ignacio Vazquez-Abrams

Respostas:

5

Com imagens suportadas pelo EBS, o armazenamento efêmero ainda está disponível, apenas não é mapeado como dispositivo de bloco por padrão (como nas imagens de armazenamento de instância)

O documento da amazon está aqui e há uma publicação útil no blog, aqui

Em resumo: você pode especificar esse mapeamento na linha de comando ao iniciar a imagem e montá-la como um volume normal /dev/sd[x]. Ou, se você rolar sua própria AMI, poderá fazer o mapeamento nessa AMI para que todas as imagens iniciadas a partir dela tenham acesso a ela desde o início.

A ligação simbólica /tmpfuncionará, mas eu não recomendaria neste caso, onde você tem uma grande quantidade de armazenamento temporário em uso. Depois de disponibilizar o mapeamento do dispositivo, você poderá montá-lo como /tmpem /etc/fstab.

Com uma instância pequena, você deve ter 150 GB de armazenamento de instância disponível gratuitamente. É desnecessário dizer que esse armazenamento morre quando a instância é reinicializada. Se o seu uso não for tão temporário, você precisará criar seu próprio novo volume EBS e montá-lo dessa maneira.

SmallClanger
fonte
1
Por que a ligação simbólica não é recomendada? Por exemplo, se eu quiser colocar ambos / var / tmp e / var / log no meu armazenamento efêmero, eu posso montar o armazenamento como / mnt e vincular os dois diretórios lá.
j0nes
Bom ponto. Eu estava pensando nesse caso específico, com base no pressuposto de que o OP estava considerando enviar um link simbólico para a partição principal. Vou esclarecer minha resposta.
SmallClanger
1

Você pode vincular o ponto de montagem / tmp a / mnt / tmp:

sudo mount -B / tmp / mnt / tmp

hithwen
fonte
2
Esses comandos olham para trás para mim. Eu acho que você trocou os dois nomes de diretório.
precisa saber é
0

A ligação simbólica, conforme sugerido na pergunta, não é uma solução tão ruim. Mas há alguns cuidados extras a serem tomados ao fazê-lo. Apenas para consolidar as etapas precisas envolvidas na montagem do volume são:

1) Crie um novo volume no console da AWS. Anexe-o à instância.

2) Formate-o e monte-o sob dizer /mnt/vol1

3) Limpe /tmpna medida do possível.

4) mkdir /mnt/vol1/tmp && mv /tmp/* /mnt/ && rmdir /tmp && ln -s /mnt/vol1/tmp /tmp

Murphy
fonte
Mover os arquivos para o novo diretório não alcançará o resultado desejado para nenhum arquivo que esteja aberto no momento. Eu reiniciaria, pois os programas não podem esperar que os arquivos /tmpsobrevivam a uma reinicialização.
kasperd