Errno :: ENOSPC: Não há espaço disponível no dispositivo em Ruby on Rails

7

Eu estou hospedando um aplicativo Ruby on Rails em um Linode com 96 GB de armazenamento. Todas as imagens da minha aplicação são armazenadas na amazon e são obtidas da amazon. Assim, meu linode deve ter no mínimo 80 GB de armazenamento livre.

Mas quando os arquivos de log do aplicativo excedem 200 Mb, recebo o erro:

Errno::ENOSPC: No space left on device

e meu site cai.

Ativei a rotação de log do meu aplicativo diariamente com o seguinte código no arquivo /etc/logrotate.conf :

path/to/application/log/*.log {
  daily
  missingok
  rotate 1
  compress
  delaycompress
  notifempty
  copytruncate
}

Mas agora eu comecei a receber as mesmas irregularidades de erro por dia, então mudei minhas configurações com base no tamanho como:

path/to/application/log/*.log {
  size 1M
  missingok
  rotate 1
  compress
  delaycompress
  notifempty
  copytruncate
}

Eu também movi o arquivo logrotate de /etc/cron.daily para /etc/cron.hourly para que o cronjob logrotate seja executado a cada hora e gire o log se ele exceder 1M. Eu reiniciei o apache.

Mas quando eu chequei depois de uma hora, os tamanhos dos meus arquivos eram maiores que 1M. Assim, o logrotate cronjob não funcionava após cada hora . Quando eu forço a rotação do log usando o comando:

 sudo /usr/sbin/logrotate -f /etc/logrotate.conf

os arquivos de log são rotacionados e o tamanho dos arquivos diminui.

Não consigo descobrir por que essa configuração não funciona. Além disso, quando o espaço no linode é de 80 GB, como isso afeta se os arquivos de log excederem 200 Mb . Qual é a maneira de alocar mais espaço para o diretório de log?

Como sugerido, corri df -ih para verificar se estou ficando sem inodes . A saída seguinte eu recebo:

Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/xvda               2.2M    263K    2.0M   12% /
devtmpfs                174K    2.0K    172K    2% /dev
none                    174K       1    174K    1% /dev/shm
none                    174K      33    174K    1% /var/run
none                    174K       2    174K    1% /var/lock
none                    174K       1    174K    1% /lib/init/rw

Assim meus inodes estão quase livres. Eu não estou ficando sem inodes.

A saída de df -h é como:

Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda             9.5G  8.7G  325M  97% /
devtmpfs             1010M  112K 1010M   1% /dev
none                 1010M     0 1010M   0% /dev/shm
none                 1010M   52K 1010M   1% /var/run
none                 1010M     0 1010M   0% /var/lock
none                 1010M     0 1010M   0% /lib/init/rw

Meu espaço em disco é muito menor. Como devo proceder?

Por favor, ajude.Muitos Obrigado!

    
por Swati Aggarwal 16.01.2013 / 11:33

3 respostas

2

É verdade que você tem muito pouco espaço.

Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda             9.5G  8.7G  325M  97% /

Apenas algumas centenas de megabytes e seu disco estará cheio novamente.

Você disse que esperava ter muito mais espaço em disco do que isso, então recomendo que você entre em contato com a Linode para descobrir o que está acontecendo.

    
por 17.01.2013 / 18:11
4

Eu tive a mesma mensagem de erro ao tentar executar um npm install .

npm ERR! nospc ENOSPC: no space left on device, open /{dir}/...

A correção para mim foi a seguinte:

  • sudo rm -rf node_modules - Remover node_modules
  • df -hi - Verifique o espaço disponível em disco
  • sudo apt-get update - Atualizar pacotes
  • sudo apt-get autoremove - Use 'autoremove' para remover pacotes que não são mais necessários
  • sudo apt-get -f install - Corrigir dependências quebradas
por 11.05.2016 / 08:42
1

meus 2 centavos aqui:

Descobri que a saída de lsof | grep -i deleted estava tendo production.log de várias idades atrás. Que uma reinicialização do serviço liberou todo o espaço. Eu tive a idéia de: Disco cheio, du diz diferente. Como investigar mais?

    
por 16.02.2016 / 16:41