web-dev-qa-db-ja.com

Errno :: ENOSPC:Ruby on Rails

Iamホスティングa Ruby on Rails 96GBストレージのLinode上のアプリケーション。私のアプリケーションのすべてのイメージはAmazonに保存され、Amazonからフェッチされます。したがって、私のlinodeには最低80 GBのストレージが必要です。

しかし、アプリケーションのlog filesが200 Mbを超えると、エラーが発生します。

Errno::ENOSPC: No space left on device

と私のウェブサイトがダウンします。

ファイル/ etc/logrotate.confの次のコードを使用して、アプリケーションのログローテーションを毎日有効にしました。

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

しかし、今は同じエラーtwicsを1日に取得し始めたので、サイズに基づいて構成設定を次のように変更しました。

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

また、logrotateファイルを/etc/cron.dailyから/etc/cron.hourlyに移動して、logrotate cronjobが1時間ごとに実行され、1Mを超える場合はログをローテーションするようにしました。 Apacheを再起動しました。

しかし、1時間後に確認したところ、ファイルサイズが1Mを超えていました。したがってlogrotate cronjobは1時間ごとに機能しませんでした。次のコマンドを使用してログを強制的にローテーションすると、

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

次に、ログファイルがローテーションされ、ファイルサイズが小さくなります。

この構成が機能しない理由を理解できません。 さらに、linodeのスペースが80 GBの場合、ログファイルが200 MBを超えた場合、どのように影響しますか。ログディレクトリにより多くのスペースを割り当てる方法は何ですか?

お勧めのように、df -ihを実行して、Iamがinodesを使い果たしていないかどうかを確認しました。私が得る次の出力:

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

したがって、私のiノードはほとんど自由です。 IAMがiノードを使い果たしていません。

df -hの出力は次のとおりです。

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

私のディスク容量は本当に少ないです。どうすればいいですか?

助けてください。多くのおかげで!

8
Swati Aggarwal

確かに、スペースがほとんど残っていません。

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

ほんの数百メガバイトで、ディスクは再び一杯になります。

あなたはこれが示すよりもはるかに多くのディスク容量があると予想していたので、何が起こっているのかを調べるためにLinodeに連絡することをお勧めします。

2
Michael Hampton

npm installを実行しようとすると、同じエラーメッセージが表示されました。

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

私のための修正は次のとおりでした:

  • Sudo rm -rf node_modules-node_modulesを削除します
  • df -hi-使用可能なディスク容量を確認します
  • Sudo apt-get update-パッケージの更新
  • Sudo apt-get autoremove-「autoremove」を使用して、不要になったパッケージを削除します
  • Sudo apt-get -f install-壊れた依存関係を修正
4
vitalbone

ここに私の2セント:

lsof | grep -i deletedの出力には、数年前のproduction.logが含まれていることがわかりました。サービスを再起動すると、すべてのスペースが解放されました。私は以下からアイデアを得ました ディスクがいっぱいです、duは別のことを教えます。さらに調査する方法は?

1
nicocesar