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
私のディスク容量は本当に少ないです。どうすればいいですか?
助けてください。多くのおかげで!
確かに、スペースがほとんど残っていません。
Filesystem Size Used Avail Use% Mounted on
/dev/xvda 9.5G 8.7G 325M 97% /
ほんの数百メガバイトで、ディスクは再び一杯になります。
あなたはこれが示すよりもはるかに多くのディスク容量があると予想していたので、何が起こっているのかを調べるためにLinodeに連絡することをお勧めします。
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
-壊れた依存関係を修正ここに私の2セント:
lsof | grep -i deleted
の出力には、数年前のproduction.logが含まれていることがわかりました。サービスを再起動すると、すべてのスペースが解放されました。私は以下からアイデアを得ました ディスクがいっぱいです、duは別のことを教えます。さらに調査する方法は?