Espaço em disco insuficiente '/' na instância da AWS

28

Estou executando o Ubuntu 11.04 exemplo para o meu servidor Web na AWS nuvem, agora eu estou recebendo não há espaço em disco / partição do meu servidor. df -ah diga isso

Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda1            7.9G  7.8G   97M  99% /
proc                     0     0     0   -  /proc
none                     0     0     0   -  /sys
fusectl                  0     0     0   -  /sys/fs/fuse/connections
none                     0     0     0   -  /sys/kernel/debug
none                     0     0     0   -  /sys/kernel/security
none                  3.7G  112K  3.7G   1% /dev
none                     0     0     0   -  /dev/pts
none                  3.7G     0  3.7G   0% /dev/shm
none                  3.7G   80K  3.7G   1% /var/run
none                  3.7G     0  3.7G   0% /var/lock
/dev/xvdb             414G   16G  377G   4% /mnt

Agora eu tentei isso para obter algum espaço extra na / partição

  • Limpe todos os arquivos de log do Apache.
  • Removidos todos os arquivos desnecessários do servidor.
  • Diretório inicial Limpeza.

Mas ainda não estou conseguindo espaço suficiente. Esse tipo de instância é m1.large com 8GB EBS. Agora estou recebendo espaço em disco suficiente / dev / xvdb .

Existe uma maneira que eu possa alocar algum espaço em disco para / de / dev / xvdb ou quaisquer outras maneiras. Por favor, sugira-me a possível solução para isso. É possível usar a mesma partição / dev / xvdb com outra instância.

Sumant
fonte
1
Atualização de 2017: a Amazon permite redimensionar suas unidades (mesmo a unidade de inicialização) em tempo real hoje em dia! veja a minha resposta SO aqui: stackoverflow.com/a/42791031/7022062
Dmitry Shevkoplyas

Respostas:

26

A resposta é dupla.

Solução alternativa: use / dev / xvdb (/ mnt) para dados temporários

Esse é o chamado armazenamento efêmero da sua instância do Amazon EC2 e suas características são muito diferentes das do armazenamento persistente do Amazon EBS em uso em outros lugares. Em particular, esse armazenamento efêmero será perdido nos ciclos de parada / partida e geralmente desaparecerá ; portanto, você definitivamente não deseja colocar nada de valor duradouro lá, ou seja, apenas colocar dados temporários que possam perder ou reconstruir facilmente , como um arquivo de troca ou dados estritamente temporários em uso durante os cálculos. É claro que você pode armazenar índices enormes por exemplo, mas deve estar preparado para reconstruí-los depois que o armazenamento for limpo por qualquer motivo (reinicialização da instância, falha de hardware, ...).

Solução: redimensione / dev / xvda1 (/) para obter o armazenamento desejado

Esse é o chamado armazenamento de dispositivo raiz da instância do EC2 suportada pelo Amazon EBS , que facilita o Amazon EBS para flexibilidade e durabilidade em particular, ou seja, dados colocados lá são razoavelmente seguros e sobrevivem a falhas da instância; você pode aumentar ainda mais a flexibilidade e a durabilidade tirando instantâneos regulares do seu volume EBS, que são armazenados no Amazon S3 , apresentando a bem conhecida durabilidade 99.999999999%.

Esse recurso de captura instantânea permite que você resolva o problema por sua vez, na medida em que você pode substituir o armazenamento raiz do EBS atual de 8 GB (/ dev / xvda1) por um mais ou menos do tamanho que você deseja. O processo está descrito no excelente artigo de Eric Hammond Redimensionando o disco raiz em uma instância do ECBS Boot EC2 em execução :

Desde que você esteja bem com um pouco de tempo de inatividade na instância do EC2 (alguns minutos), é possível alterar o volume do EBS raiz com uma cópia maior, sem a necessidade de iniciar uma nova instância.

Se você preparar adequadamente as etapas que ele descreve (eu recomendo testá-las com uma instância do EC2 descartável primeiro para se familiarizar com o procedimento ou automatizá-lo por meio de um script personalizado), você poderá concluir o processo com alguns minutos de inatividade apenas de fato.

A maioria das etapas descritas também pode ser realizada por meio do AWS Management Console , que evita lidar com as Amazon EC2 API Tools ; isso se resume a:

  • parar (não terminar!) a instância do EC2
  • desanexe o volume EBS da instância parada
  • crie uma captura instantânea do volume EBS desanexado
  • crie um novo volume EBS (maior) a partir da captura instantânea criada
  • anexe o novo volume EBS à instância do EC2 ( Importante ! Se este for o seu dispositivo raiz, certifique-se de que o nomeie exatamente como o dispositivo raiz da instância conforme mencionado, por exemplo, (/ dev / sda1) ou (/ dev / xdva1) caso contrário, ele será anexado como um dispositivo de bloco e não como um dispositivo raiz e você não poderá iniciar a instância, pois não haverá nenhum dispositivo raiz listado para a instância.)
  • SSH na instância em execução e confirme se tudo está em ordem via df -ah
    • caso seu sistema não tenha redimensionado automaticamente o sistema de arquivos, você precisará fazer isso manualmente, conforme explicado no artigo de Eric

Boa sorte!


Alternativo

Dada a versatilidade e facilidade de uso desses volumes EBS, uma opção adicional seria anexar mais volumes EBS à sua instância e mover áreas de preocupação claramente separáveis ​​por lá.

Por exemplo, estamos usando alguns aplicativos Java bastante pesados, cada um consumindo 1-2 GB de armazenamento por versão; para facilitar a atualização de versões e, geralmente, poder mover esses aplicativos para diferentes instâncias, a meu critério, eu os coloquei em volumes EBS dedicados cada, monte-os em uma instância e os vincule ao local desejado, por exemplo, geralmente /var/lib/<app>/<version>e /usr/local/<app>/<version>.

Com esse método, atualmente estamos executando instâncias do EC2 com o armazenamento do dispositivo raiz ainda no tamanho padrão de 8 GB (como o seu), mas às vezes até 8 volumes EBS com tamanhos variados (1 a 15 GB) anexados.

Você precisa estar ciente dos possíveis problemas de desempenho da rede, pois todos esses volumes EBS estão usando a mesma LAN para suas E / S, o que pode gerar ganhos de desempenho iguais ou saturar sua rede em casos extremos - portanto, como sempre, isso depende no caso de uso e na carga de trabalho em mãos.

Steffen Opel
fonte
Estou usando / dev / xvdb para manter meu banco de dados com quase 16 GB de tamanho agora. Um processo em segundo plano está sendo executado para mantê-lo atualizado. Então, qual deve ser o melhor armazenamento permanente para esse banco de dados. Devo ir para o Amazon RDS ou o Amazon DynamoDB. qual a sua sugestão Estou executando o servidor PHP nesta instância.
Sumant
2
@ Sumant: Isso não é bom, então você fez exatamente o que é perigoso, ou seja, colocar os dados a serem persistidos em um disco que pode basicamente desaparecer a qualquer momento (geralmente não acontece, colocar alguém deve tratá-lo dessa maneira)? Espero não têm a abelha enganosa a este respeito - por favor, ser extremamente cuidadoso ao mitigar este, a fim de evitar a perda de dados durante o processo (você fazer tem backups de banco de dados independente, não é?)!
Steffen Opel
@ Humant: Em relação à sua pergunta - você não precisa alterar a arquitetura do aplicativo (ou o DB) para solucionar o problema de armazenamento, apenas redimensione o disco raiz ou anexe mais volumes EBS, conforme sugerido. Se, no entanto, você deseja melhorar e desacoplar sua camada de banco de dados, o que é bom em princípio com o crescimento futuro em mente (mas vem com os respectivos custos desde o início) e, desde que você esteja executando o MySQL, o Amazon RDS seria a escolha perfeita e conveniente. O Amazon DynamoDB requer uma nova arquitetura completa de aplicativos e se aplica apenas a casos de uso específicos.
Steffen Opel
1
@Sumant: lembre-se de que a migração do seu banco de dados para uma instância m1.small RDS pode realmente exibir desempenho mais lento que o atual MySQL no EC2, que está executando o m1.large com os respectivos benefícios de desempenho de CPU e E / S - se isso se aplica, depende da sua carga de trabalho atual do banco de dados. Obviamente, você também pode usar instâncias RDS maiores para remediar isso, mas seu custo aumentará de acordo.
Steffen Opel
1

Sim, de uma maneira simples, faça o fstab e monte-o para dizer / var / www / html / files2 /

então mkdir / var / www / html / files2 / website e então ln -s -d / var / www / html / website / var / www / html / files2 / website

Daniel Chay
fonte
use o UUID para montar a partição usando o comando blkids e o fdisk diga '/ dev / vxds /' para criar a partição. Use o comandante da meia-noite para mover os arquivos com o F6 de uma pasta para a outra, certifique-se de escolher a pasta correta sob a posição de montagem e, claro, você precisará 'mount -a' depois de adicionar ao fstab
Daniel Chay
0

Hoje, ocorreu o mesmo problema, quando você cria a nova intenção ec2 por padrão, o EBS é de 8 GB. Você pode modificar o tamanho do EBS anexado sem criar novo intace ou tirar instantâneo ou desanexar o EBS. Aqui estão as três etapas que você pode seguir:

  1. Redimensionar volume EBS
  2. Redimensionar partição
  3. Redimensionar partição Para a primeira etapa, acesse o console da AWS, clique em EBS, altere o tamanho desejado e clique em modificar.

Para o restante das etapas, siga este artigo se você tiver alguma dúvida, não hesite em perguntar.

Obrigado!

Narendra Sharma
fonte