Errno :: ENOSPC: In Ruby on Rails ist kein Speicherplatz mehr auf dem Gerät vorhanden


8

Ich hoste eine Ruby on Rails-Anwendung auf einem Linode mit 96 GB Speicher. Alle Bilder meiner Anwendung werden auf Amazon gespeichert und von Amazon abgerufen. Daher sollte mein Linode mindestens 80 GB freien Speicher haben.

Wenn die Protokolldateien der Anwendung jedoch 200 MB überschreiten, wird folgende Fehlermeldung angezeigt:

Errno::ENOSPC: No space left on device

und meine Website geht runter.

Ich habe die Protokollrotation für meine Anwendung täglich mit dem folgenden Code in der Datei /etc/logrotate.conf aktiviert :

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

Aber jetzt habe ich angefangen, die gleichen Fehler zweimal am Tag zu bekommen, also habe ich meine Konfigurationseinstellungen basierend auf der Größe geändert als:

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

Ich habe auch die logrotate-Datei von /etc/cron.daily nach /etc/cron.hourly verschoben, sodass der logrotate-Cronjob jede Stunde ausgeführt wird und das Protokoll gedreht wird, wenn es 1 MB überschreitet. Ich habe den Apache neu gestartet.

Aber als ich nach einer Stunde nachgesehen habe, waren meine Dateien größer als 1 Million. Daher funktionierte der logrotate Cronjob nicht nach jeder Stunde . Wenn ich das Protokoll mit dem folgenden Befehl gewaltsam drehe:

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

Dann werden die Protokolldateien gedreht und die Dateigröße verringert.

Ich kann nicht herausfinden, warum diese Konfiguration nicht funktioniert. Außerdem , wenn der Raum auf linode 80 GB ist wie funktioniert es beeinflussen , wenn Protokolldateien mehr als 200 Mb . Wie kann dem Protokollverzeichnis mehr Speicherplatz zugewiesen werden?

Wie vorgeschlagen, lief ich df -ih, um zu überprüfen, ob mir die Inodes ausgehen . Die folgende Ausgabe bekomme ich:

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

Somit sind meine Inodes fast frei. Mir gehen nicht die Inodes aus.

Die Ausgabe von df -hist wie folgt:

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

Mein Speicherplatz ist wirklich weniger. Wie soll ich vorgehen?

Bitte helfen Sie. Vielen Dank!


Möglicherweise gehen Ihnen die Inodes aus. Überprüfen Sie df -hund df -hi.
David Schwartz

@DavidSchwartz Ich habe den Befehl wie vorgeschlagen ausgeführt und die betreffende Ausgabe hinzugefügt. Bitte überprüfen und vorschlagen.
Swati Aggarwal

1
Nun, Ihnen gehen nicht die Inodes aus.
David Schwartz

@ DavidSchwartz Was kann dann das Problem sein?
Swati Aggarwal

Also, was ist die Ausgabe von df -h?
Michael Hampton

Antworten:


2

Es ist wahr, Sie haben nur noch sehr wenig Platz.

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

Nur ein paar hundert Megabyte, und Ihre Festplatte ist wieder voll.

Sie sagten, Sie hätten erwartet, dass viel mehr Speicherplatz zur Verfügung steht, als dies zeigt. Ich würde Ihnen daher empfehlen, sich an Linode zu wenden, um herauszufinden, was los ist.


Ja. Ich habe gerade ausgecheckt. Meine ältere Version hat den gesamten Speicherplatz auf der Festplatte belegt. Ich habe sie gelöscht und das Problem behoben. Danke für die Hilfe.
Swati Aggarwal

4

Ich hatte die gleiche Fehlermeldung beim Versuch, eine auszuführen npm install.

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

Die Lösung für mich war die folgende:

  • sudo rm -rf node_modules - Entfernen Sie node_modules
  • df -hi - Überprüfen Sie den verfügbaren Speicherplatz
  • sudo apt-get update - Pakete aktualisieren
  • sudo apt-get autoremove - Verwenden Sie 'autoremove', um nicht mehr benötigte Pakete zu entfernen
  • sudo apt-get -f install - Korrigieren Sie defekte Abhängigkeiten

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.