maveric
Goto Top

Serverfestplatte Voll ohne ersichtlichen Grund

Ich bin nicht sonderlich affin in Bezug auf Server Wartung. Ich wäre für verständlich und einfache Erklärungen sehr dankbar. Bin natürlich jederzeit bereit, mein Kopf mit neuem Wissen zu füllen.

Hallo,

ich habe gerade ein sehr merkwürdiges Phänomen. Ich habe hier eine Linux (Centos) Server, der einen 130GB Festplatte hat. Normalerweise ist das System zu 87% voll. Sprich eine Mysql DB 70GB, ein Solr 36GB und ein Artifactory 6GB laufen auf dem System. Dann sind über alle anderen Ordner noch ca 6-8GB belegt. Wer nachgerechnet hat, es bleiben noch 10 GB über. Das ist jetzt nicht sonderlich viel, aber es reicht. Die DB wächst nicht großartig und für den Solr und das Artifactory reicht der Platz auch noch. Jetzt auf einmal ohne ersichtlichen Grund wir es jedoch immer weniger. Ich habe also weil ich keine Ahnung habe wie es besser geht, auf jeden Ordner unter "/" ein du -sh Ordnernamen gemacht. Alles aufaddiert und es sollte wie oben schon erwähnt 10GB frei sein, da alle Ordner aufaddiert 120GB ergeben. Trotzdem ist wenn ich ein df ausführe nur noch 200MB frei. Ich habe jetzt schon ein paar Sachen verschoben aus den User Ordnern um mir etwas Luf zu verschaffen, aber das hält evtl. noch zwei Tage und ich bin mit meinem Latein am Ende.

Im ersten Anlauf habe ich vermutet das es das Mysql Slow query log ist, kann aber ausgeschlossen werden da der Ordner zum einen seit Monaten nicht wächst und das Log gar nicht aktiv ist. Solr log ist das selbe spiel, wobei das regelmäßig über einen Cron Job geleert wird.

Die Swap Partition ist übrigens 1 GB und zu zwei drittel in Nutzung. 15GB Speicher sind im Server verbaut, evtl. hilft das ja.

Mfg
Maveric

Content-ID: 191467

Url: https://administrator.de/contentid/191467

Ausgedruckt am: 26.11.2024 um 12:11 Uhr

DerWoWusste
DerWoWusste 19.09.2012 um 13:33:06 Uhr
Goto Top
Moin.
Vielleicht liefert jdiskreport (als root ausführen) schnell Aufschluss http://www.jgoodies.com/freeware/jdiskreport/ . Setzt java RE voraus.
108012
108012 19.09.2012 um 13:33:48 Uhr
Goto Top
Hallo Maveric,

also wir fangen mal ganz lansam an und schwenken dann auf die EDV, das ist bei nicht so Technik affinen
Personen besser.

Du hast ein leeres Blatt Papier (Festplatte) und nun nimmst Du ein Lineal und unterteilst das Blatt in 20 Linien mit einem gleichmäßigen Abstand (Formatieren)! Anschließend schreibst Du in die erste Zeile:
"Dies ist ein nicht mit Chlor gebleichtes Blatt Papier in der DIN A4 Größe mit 20 Linien.

Dann ist doch klar das das Blatt eigentlich zwanzig Linien hat, aber da Du nun eine benutzt hast kannst Du auch nur noch in die 19 freien Zeilen was reinschreiben!!!!!!

So nun zu Deiner Festplatte! Du sagst Du benutzt Linux, gut und schön aber wichtiger wäre es zu wissen welche Partitionen Du wie formatiert hast. Denn das für das Formatieren auch Platz bei verbraucht wird haben wir ja nun bei dem Blatt Papier bereits heraus gefunden!

Gruß
Dobby
Pjordorf
Pjordorf 19.09.2012 aktualisiert um 13:47:57 Uhr
Goto Top
Hallo D.o.b.b.y,

Zitat von @108012:
"Dies ist ein nicht mit Chlor gebleichtes Blatt Papier in der DIN A4 Größe mit 20 Linien.

Du auch nur noch in die 19 freien Zeilen was reinschreiben!!!!!!
Ääääähhhhh! Falsch. 21 leere Zeilen bei deinen 20 Linienface-smile

Warum heute so zurückhaltend mit deinen Aufsätzenface-smile

@Maveric
was sagt ein df -h oder ein df -m aus? Was das bedeutet? Schaust du hier http://de.wikibooks.org/wiki/Linux-Kompendium:_df nach. (-h = für Menschen lesbar, -m = Angaben in Megabyte). Und gerade vergessen. Im Link ganz unten ist ein beispiel wie du mit einem
du -s /* | sort -rn | head -n 10
als root user dir anzeigen lassen kannst wieviel Platz wo verschwendet face-smile wurde (die ersten 10).


Gruß,
Peter
Lochkartenstanzer
Lochkartenstanzer 19.09.2012 aktualisiert um 14:50:32 Uhr
Goto Top
Moin

ein df -vh wäre sehr hilfreich gewesen.

meine kristallkugel sagt aber trotzdem /var oder /tmp ist Dir vollgelaufen.

Und: Das System reserviert sich Platz für den root, damit, wenn die Platte mal volläuft (alles auf 100% Belegung), trotzdem noch ein klein bischen Platz ist, damit Dein System nicht abkackt. Da dürfen dann halt nur noch Prozesse, die root-rechte haben draufschreiben, alle andere sind nicht wichtig genug.

Aber irgendwann ist da auch die Kacke am dampfen, also solltest Du schleunigst Platz machen, wenn euch euer Produktivsystem nicht abschmieren soll.

10G sind zwar relativ viel, aber wenn ein wildlaufender Prozeß euch /var/spool /var/log oder /tmp vollseiert, ist der Platz inenrhalb von Minuten aufgebraucht und das System steht.

lks
Maveric
Maveric 19.09.2012 um 15:00:16 Uhr
Goto Top
"df -h" ergibt folgendes sowie zwei von extern gemountete Laufwerke. Gleich vorweg, ich habe noch weitern Platz freigelegt, nur deshalb sind 3,4G hier als frei deklariert.
/dev/sda1 131G 128G 3,4G 98%
/tmpfs 7,9G 0 7,9G 0% /dev/shm

du -s /* | sort -rn | head -n 10, habe ich jetzt noch nicht gemacht, weil ich gerne wüsste was passiert wenn ich unter /mnt noch von extern gemountete Laufwerke haben. Rechnet er sich dann "kaputt" oder ignoriert du gemountete Verzeichnisse?

@108012, ich sagte ich bin nicht so affin was die Server-Wartung angeht, hier ergänzend im speziellen Linux "unerfahren". Ich gehe einfach mal davon aus du hast es nett gemeint und die Erklärung sollte nicht herablassend wirken. Ahnung von Hardware habe ich hingegen sehr viel, hier kann gern viel Wissen bezogen auf eure Erklärungen für mich vorausgesetzt werden.

Grüße
Maveric
Maveric
Maveric 19.09.2012 um 15:05:05 Uhr
Goto Top
Zitat von @Lochkartenstanzer:
Moin

ein df -vh wäre sehr hilfreich gewesen.

meine kristallkugel sagt aber trotzdem /var oder /tmp ist Dir vollgelaufen.

Und: Das System reserviert sich Platz für den root, damit, wenn die Platte mal volläuft (alles auf 100% Belegung),
trotzdem noch ein klein bischen Platz ist, damit Dein System nicht abkackt. Da dürfen dann halt nur noch Prozesse, die
root-rechte haben draufschreiben, alle andere sind nicht wichtig genug.

Aber irgendwann ist da auch die Kacke am dampfen, also solltest Du schleunigst Platz machen, wenn euch euer Produktivsystem nicht
abschmieren soll.

10G sind zwar relativ viel, aber wenn ein wildlaufender Prozeß euch /var/spool /var/log oder /tmp vollseiert, ist der Platz
inenrhalb von Minuten aufgebraucht und das System steht.

lks

Das ist der Grund warum ich so besorgt bin. Ich habe leider vor einer Woche genau das was du beschrieben hast gehabt. Ich habe mich schon gewundert warum das System nicht früher den Geist aufgegeben hat, weil es gut 20 Std schon "Voll" war bis es dann letztendlich stehen geblieben ist und eine Menge mit sich gerissen hat. Dort war das Problem, das ein Cron Job amok gelaufen ist und wärend ein Mountpunkt nicht erreichbar war. Damit wurden die Daten Lokal abgelegt. /tmp sind 200MB /var ist 71GB, davon 70 die DB.
Lochkartenstanzer
Lochkartenstanzer 19.09.2012 um 15:12:16 Uhr
Goto Top
Zitat von @Maveric:
/dev/sda1 131G 128G 3,4G 98%

Böser Fehler.

Man sollte sinnvollerweise var und tmp und ggf noch Daten in getrennte Partitionen packen, um problemen aus dem weg zu gehen, wenn mal ein wildgewordener Prozess ein Filesystem vollmüllt.

Natürlich kann man auch alles in ein Filesetem packen, aber dann muß man sich bewußt sein, daß da ggf Notfallmaßnahmen ergriffen werden müssen.

Aber das sind Diskussionen deren für und wieder schon an anderer Stelle noch nicht abschließend ausdiskutiert wurde.


du -s /* | sort -rn | head -n 10, habe ich jetzt noch nicht gemacht, weil ich gerne wüsste was passiert wenn ich unter /mnt
noch von extern gemountete Laufwerke haben. Rechnet er sich dann "kaputt" oder ignoriert du gemountete Verzeichnisse?

Nur wenn du es ihm sagts.

Mach doch stattdessen einfach:

ls -d /* | grep -v /mnt | xargs du -s | sort -rn | head -n 10

lks

PS: Wenn Du nicht "server-affin" bist, hol Dir schleunigst jemanden, der sich damit auskennt, bevor Dir das Ding um die Ohren fliegt.
Lochkartenstanzer
Lochkartenstanzer 19.09.2012 um 15:21:28 Uhr
Goto Top
Zitat von @Maveric:
Ich habe leider vor einer Woche genau das was du beschrieben hast gehabt. Ich habe
mich schon gewundert warum das System nicht früher den Geist aufgegeben hat, weil es gut 20 Std schon "Voll" war
bis es dann letztendlich stehen geblieben ist und eine Menge mit sich gerissen hat.

Wenn das Sytsme meldet Filesystem voll, ist es dringend angeraten, Abhilfe zu schaffen, beovr etwas schlimmeres passiert. Also: Wenn das ein wichtiges Produktivsystem ist, hol Dir einen kompetenten Menschen, der das geradebiegt. Und heutzutage ist Plattenplatz billig. Jedenfalls deutlich billiger als eine Stunde vergeudete zeit eines Mitarbieters, geschweige denn von einem ganzen Betrieb.

Dort war das Problem, das ein Cron Job amok
gelaufen ist und wärend ein Mountpunkt nicht erreichbar war.
Damit wurden die Daten Lokal abgelegt.

Deswegen hat jede bessere Programmier udn Skriptsprache die if-Anweisung drin, mit der man bestimmte Bedingungen abfragen kann, z.B. ob überhaupt an einem Mountpoint ein device üebrhaupt vorhanden ist. hau dem Cronjobprogrammierer mal auf die Finger.

Übrigens: Laß mich raten - Ihr mach Eure Datensicherung auf diese Art auf USB-Festplatten? face-smile

/tmp sind 200MB /var ist
71GB, davon 70 die DB.

Nachdem Du nur ein einziges Filesystem hast kann es jedes beliebige Verzeichnis sein, das den Fehler verursacht. Du könntest jetzt regelmäßig mit du die verzeichnisbelegung nachschauen und dann den Änderungen nachgehen. Oder Du sorgst erstmal für mehr Platz, indem Du da noch weitere (oder größere) Festplatten reinhaust udn damit Dir erstmal Luft verschaffst.

lks
Maveric
Maveric 19.09.2012 um 15:23:42 Uhr
Goto Top
Zitat von @Lochkartenstanzer:
> Zitat von @Maveric:
> ----
> /dev/sda1 131G 128G 3,4G 98%

Böser Fehler.

Man sollte sinnvollerweise var und tmp und ggf noch Daten in getrennte Partitionen packen, um problemen aus dem weg zu gehen, wenn
mal ein wildgewordener Prozess ein Filesystem vollmüllt.

Natürlich kann man auch alles in ein Filesetem packen, aber dann muß man sich bewußt sein, daß da ggf
Notfallmaßnahmen ergriffen werden müssen.

Aber das sind Diskussionen deren für und wieder schon an anderer Stelle noch nicht abschließend ausdiskutiert wurde.


> du -s /* | sort -rn | head -n 10, habe ich jetzt noch nicht gemacht, weil ich gerne wüsste was passiert wenn ich unter
/mnt
> noch von extern gemountete Laufwerke haben. Rechnet er sich dann "kaputt" oder ignoriert du gemountete
Verzeichnisse?

Nur wenn du es ihm sagts.

Mach doch stattdessen einfach:

> ls -d /* | grep -v /mnt | xargs du -s | sort -rn | head -n 10
> 

lks

PS: Wenn Du nicht "server-affin" bist, hol Dir schleunigst jemanden, der sich damit auskennt, bevor Dir das Ding um die
Ohren fliegt.

Klar hast du Recht, was die Partitionierung angeht. Ich hab es nicht eingerichtet sondern muss grad einfach damit klar kommen. Es gibt keinen den ich mir ranholen kann und externe sind auch ausgeschlossen, nehmts so wie ich es sage, die schöne Welt, gibt es hier nicht. Wenn ich bis heute Abend keine Lösung finde, werde ich fürs "Erste" das artifactory verschieben, auf einen anderen server und schauen das ich dann eine Lösung finde.

Hier mal die Ausgabe deines Statements:
72056108 /var
47208976 /usr
2424184 /home
314300 /lib
275336 /opt
172956 /tmp
97544 /etc
32996 /boot
32364 /sbin
20316 /lib64
Lochkartenstanzer
Lochkartenstanzer 19.09.2012 aktualisiert um 15:49:59 Uhr
Goto Top
Zitat von @Maveric:
Hier mal die Ausgabe deines Statements:
72056108 /var
47208976 /usr
2424184 /home
314300 /lib
275336 /opt
172956 /tmp
97544 /etc
32996 /boot
32364 /sbin
20316 /lib64

das machst Du noch ein oder zweimal im Abstand von einer halbe Stunde und dann siehst Du, wo es noch weiter volläuft (vermutlich /var oder /usr) dort suchst Du dann genauer. du könntest Dir aber auch direkt /var und die unterverzeichnisse davon anscheuen, ob da auffälligkeiten sind.

Nachtrag: Du könntest mit iotop mal schauen, ob da besonders auffällige Prozese sind und dementsprechend schauen, ob die irgendwas vollmüllen.

lks
DerWoWusste
DerWoWusste 19.09.2012 um 16:21:38 Uhr
Goto Top
Du hast 130 GB. Das sind etwas weniger als 121 GiBi. Deine Werte zusammenaddiert lassen auf den ersten Blick also die Vermutung zu, dass wirklich nur 200 MB frei sind, Du also vor vollendeten Tatsachen stehst: die Platte ist voll. Klon sie doch bitte auf eine neue. Willst Du nämlich wirklich aufräumen, dann musst Du schon vollständig etwas davon verstehen, was einsparbar ist und was nicht. Allenfalls hätte jdiskreport für Übersicht sorgen können...
Maveric
Maveric 19.09.2012 um 16:44:36 Uhr
Goto Top
Puh, ich danke schon mal für die ganzen sehr hilfreichen Kommentare. Ich habe den nötigen Platz gefunden. Es gab noch ein slow.log für die DB was leider mal wieder nicht am "normlen" Ort lag und auch nicht das Problem löst aber es gibt 25GB Platz frei. Es sieht so aus als wenn das log mal rotiert wurde, aber der Job dafür ist nicht mehr aktiv also =) gelöscht und freigegeben.

Des weiteren hat eine kleine Recherche ergeben, das man anscheinend Dateien löschen kann, diese aber vom System auf freigegeben werden müssen. Wie ich das verstanden habe, hat wohl wer den Link auf alte Dateien gelöscht, man findet sie jetzt nicht mehr aber der Platz ist noch belegt. Wenn jmd. einen Befehl weis womit ich sowas freigeben kann immer her damit. Die alternative wäre eine Neustart, also eigentlich keine richtige Alternative.

Das eigentliche Problem wird jetzt über die nächsten zwei Tage eruiert werden müssen aber ich denke ich bin auf einem guten Weg.
Pjordorf
Pjordorf 19.09.2012 um 17:20:18 Uhr
Goto Top
Hallo,

Zitat von @Maveric:
und auch nicht das Problem löst aber
Neu eine größere Festplatte (unter 100 EUR) lösst dein problem sowie dir fachwissen einzukaufen was aber bei auch noch nicht mal in betracht gezogen werden darf.

das man anscheinend Dateien löschen kann
Ja, das geht auch bei Linux:-9

, diese aber vom System auf freigegeben werden müssen
?!? Du meinst doch sicherlich nicht das diese Dateien welche gelöscht werden sollen noch durch andere Benutzer in Benutzung sind?

man findet sie jetzt nicht mehr aber der Platz ist noch belegt.
Das gibt es in jedem OS welches Links erlaubt. Sogar Windows macht das so. Das ist kein Problem oder fehler sonden by Design und somit auch gewollt.

Wenn jmd. einen Befehl weis womit ich sowas freigeben kann immer her damit.
Redest du hier wirklich von Dateien welche in Benutzung sind oder von Dateien wo auch Links existieren können welche auf diese Datei verweist?

aber ich denke ich bin auf einem guten Weg.
Wie mans nimmtface-smile Wenns das war, dann mach doch Bitte noch ein Wie kann ich einen Beitrag als gelöst markieren? dran.

Gruß,
Peter
Lochkartenstanzer
Lochkartenstanzer 19.09.2012 aktualisiert um 22:32:23 Uhr
Goto Top
Zitat von @Maveric:
Wenn jmd. einen Befehl weis womit ich sowas freigeben kann immer her damit.

Das schafft Dir sehr viel Platz:

#rm -rfv /

Aber Vorsicht mach vorher lieber ein Backup

lks

PS: Du solltest das mit der Platte und jemandem der sich damit auskennt wirklich in erwägugn ziehen.
Maveric
Maveric 20.09.2012 um 08:29:34 Uhr
Goto Top
Ich scheine mich etwas missverständlich ausgedrückt zu haben. Ein kleines Beispiel:

Ich lege eine Datei an die sagen wir mal 2GB groß ist und lösche darauf folgend nur den Zeiger auf diese Datei, dann gibt das OS, selbst wenn es der letzte Zeiger auf diese Datei war, den Speicher hierfür nicht zwangsläufig frei. Wenn ich also einen neuen Zeiger auf diese Datei erstellen würde, könne ich wieder auf sie zugreifen.

Also bezog sich meine Frage darauf ob man solche Dateien, auf die keine Zeiger mehr existiert manuell freigegeben werden können.

Mir ist durchaus bewusst, das Windows das genau so macht, das wenn ich Dateien lösche, lediglich der Zeiger gelöscht wird und die entsprechenden Bereiche vom System wieder als frei markiert werden.

Und zu guter letzt, löst man ein Problem nicht, indem man wie hier eine größere Festplatte kauft. Das Problem war zu lösen nicht zu umgehen.
Maveric
Maveric 20.09.2012 um 08:31:20 Uhr
Goto Top
Zitat von @Lochkartenstanzer:
> Zitat von @Maveric:
> ----
> Wenn jmd. einen Befehl weis womit ich sowas freigeben kann immer her damit.

Das schafft Dir sehr viel Platz:

> #rm -rfv /
> 

Aber Vorsicht mach vorher lieber ein Backup

lks

PS: Du solltest das mit der Platte und jemandem der sich damit auskennt wirklich in erwägugn ziehen.

Sy, aber bis jetzt waren deine Kommentare sehr hilfreich, den hier hättest du dir getrost sparen können.
Maveric
Maveric 20.09.2012 um 08:36:03 Uhr
Goto Top
Ich habe das Problem jetzt lösen können. Es gab Dateien, die von Prozessen oder Usern gelöscht wurden, vom System aber nicht endgültig freigegeben wurden. Ich habe sichergestellt, das mit einem Reboot keine Einstellungen oder Mounts verloren gehen und das System neu gestartet sowie einen Festplattencheck machen lassen. Die fehlenden 10GB+ sind jetzt wieder verfügbar und das System wächst nur noch im normalen Rahmen.
Lochkartenstanzer
Lochkartenstanzer 20.09.2012 um 09:26:07 Uhr
Goto Top
Zitat von @Maveric:
Also bezog sich meine Frage darauf ob man solche Dateien, auf die keine Zeiger mehr existiert manuell freigegeben werden
können.

Moin,

Du verwechselst da was.

Man kann Dateien löschen, aber solange noch "locks" drauf sind werden die nicht gelöscht/freigegeben, Wenn da keine "Zeiger" mehr drauf wären, würden die schon über den Jordan geschmissen.

Man muß also z.B.- mit lsof oder anderen tools nachschauen, welche Prozesse nock locks auf die Dateien haben. Wenn Du also Dateien löschst und der Platz nicht freigegeben wird, heißt das, daß Du Prozesse hast, die die Datei noch benutzen Solceh Eateien zu löschen ist i.d.R. keine gute Idee.

Die Holzhammer-methdoe ist, nach dem Löschen eine reboot zu machen. Dann sind alle Prozesse weg, die eine lock haben könnte und der Platz wird freigegeben.

lks
Lochkartenstanzer
Lochkartenstanzer 20.09.2012 um 09:29:59 Uhr
Goto Top
Zitat von @Maveric:
Sy, aber bis jetzt waren deine Kommentare sehr hilfreich, den hier hättest du dir getrost sparen können.

Wieso?

Du hast mir so eine Steilvorlage geliefert, da konnte ich nicht anders. Und da ich davon ausgegangen bin, daß Du zumindest weißt, was es macht, konnte es auch keine Schaden anrichten. Und daß ich jetzt jedesmal Ironietags dazumalen muß sollte in so einem Forum nicht notwendig sein.

lks
Maveric
Maveric 20.09.2012 um 09:41:07 Uhr
Goto Top
Zitat von @Lochkartenstanzer:
> Zitat von @Maveric:
> ----
> Also bezog sich meine Frage darauf ob man solche Dateien, auf die keine Zeiger mehr existiert manuell freigegeben werden
> können.

Moin,

Du verwechselst da was.

Man kann Dateien löschen, aber solange noch "locks" drauf sind werden die nicht gelöscht/freigegeben, Wenn da
keine "Zeiger" mehr drauf wären, würden die schon über den Jordan geschmissen.

Man muß also z.B.- mit lsof oder anderen tools nachschauen, welche Prozesse nock locks auf die Dateien haben. Wenn Du also
Dateien löschst und der Platz nicht freigegeben wird, heißt das, daß Du Prozesse hast, die die Datei noch
benutzen Solceh Eateien zu löschen ist i.d.R. keine gute Idee.

Die Holzhammer-methdoe ist, nach dem Löschen eine reboot zu machen. Dann sind alle Prozesse weg, die eine lock haben
könnte und der Platz wird freigegeben.

lks

Hast Recht, ich habe auch ermitteln können worum es sich hierbei gehandelt hat. Die DB hat anstatt in das oben erwähnte Slow log, welches ich schon gelöscht/geleert habe, in ein "altes" slow log geschrieben. Auf diese hat es keine Zeiger mehr gegeben. Nur noch der Prozess konnte die Datei ansprechen, vermutlich weil es den von dir erwähnten lock darauf hatte, schon bevor die Datei irgendwann mal gelöscht wurde. Nach dem Reboot schreibt der Prozess in das für ihn vorgesehene Log, welches ich auch sehen kann.
Lochkartenstanzer
Lochkartenstanzer 21.09.2012 um 09:20:44 Uhr
Goto Top
Zitat von @Maveric:
Die DB hat anstatt in das oben erwähnte
Slow log, welches ich schon gelöscht/geleert habe, in ein "altes" slow log geschrieben. Auf diese hat es keine
Zeiger mehr gegeben. Nur noch der Prozess konnte die Datei ansprechen, vermutlich weil es den von dir erwähnten lock darauf
hatte, schon bevor die Datei irgendwann mal gelöscht wurde. Nach dem Reboot schreibt der Prozess in das für ihn
vorgesehene Log, welches ich auch sehen kann.

Das kann man i.d.R. auch einfacher haben, indem man die Logdatei, sofern man sie wirklich nicht mehr braucht mit

cat /dev/mull >logdatei

auf die Länge 0 zurechtstutzt. Das gibt den Platz sofort frei. (Achtung gefährlich!)

Funktioniert allerdings nur, wenn der Prozess die Datei nicht exklusiv zum schreiben geöffnet hat.

lks