mysqld startet nicht, da der Speicherplatz voll ist:
101221 14:06:50 [ERROR] /usr/libexec/mysqld: Error writing file '/var/run/mysqld/mysqld.pid' (Errcode: 28)
101221 14:06:50 [ERROR] Can't start server: can't create PID file: No space left on device
läuft df -h
:
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 16G 3.2G 12G 23% /
/dev/sda5 4.8G 4.6G 0 100% /var
/dev/sda3 430G 855M 407G 1% /home
/dev/sda1 76M 24M 49M 33% /boot
tmpfs 956M 0 956M 0% /dev/shm
du -sh *
In /var
:
12K account
56M cache
24K db
32K empty
8.0K games
1.5G lib
8.0K local
32K lock
221M log
16K lost+found
0 mail
24K named
8.0K nis
8.0K opt
8.0K preserve
8.0K racoon
292K run
70M spool
8.0K tmp
76K webmin
2.6G www
20K yp
in /dev/sda5
, es gibt Website-Dateien in /var/www
.
weil dies das erste Mal ist, habe ich keine Ahnung, welche Dateien ich entfernen soll, außer sie /var/www
auf eine andere Partition zu verschieben
Und noch eine Frage: Was ist die richtige Methode zum Entfernen von Protokolldateien, Verlauf usw. /dev/sda5
?
Antwort1
Schnell und einfach: Verschieben Sie Ihr /var/www
nach /home/www
und erstellen Sie dann einen symbolischen Link:
rsync -a /var/www /home &&
rm -r /var/www &&
ln -s /home/www /var/www
Längerfristig: Vielleicht legen Sie Ihre /var/www
und /var/log
Verzeichnisse in eigene dedizierte Partitionen. Sie könnten /home
den frei gewordenen Speicherplatz wahrscheinlich verkleinern und verwenden, um geeignete Partitionen zu erstellen.
Antwort2
- Ich würde
mv /var/log/*gz /var/log/*.0 /home/backup/var/log
yum clean packages
oder apt-get clean, um Inhalte aus /var/cache zu entfernen- Ja, verschiebe /var/www zB nach /home
- Entfernen Sie möglicherweise die /var-Partition.
Antwort3
Wie sieht die Aufteilung aus /var/lib
? Wenn es wie bei meinem System ist, wird der Großteil (sagen wir 500 MB) von belegt /var/lib/mysql
?
Die anderen Zahlen sehen alle ziemlich normal und vernünftig aus, sind also bewegend /var/lib/mysql
und /var/www
stellen die einzigen realistischen langfristigen Lösungen dar.
Werden Ihre Protokolle zum Entfernen alter Protokolldateien rotiert, d. h. haben Sie /var/log/messages
, /var/log/messages.1
, /var/log/messages.2.gz
, usw. oder vielleicht /var/log/messages-20101221
, /var/log/messages-20101220.gz
, usw.?
Der offensichtlichste Weg, diese zu entfernen, ist nach Alter, z. B.
# find /var/log -type f -mtime +14 -print
# find /var/log -type f -mtime +14 -exec rm '{}' \;
Überprüfen Sie außerdem, ob Ihre Logrotate-Einstellungen /etc/logrotate.conf
Ihren Wünschen entsprechen. Ich würde sagen, Sie sollten sie nicht ändern, da sie nicht Ihr Hauptproblem sind, aber vielleicht möchten Sie nur die Protokolle einer Woche behalten. In diesem Fall versuchen Sie es mit etwas wie diesem:
daily
rotate 7
create
compress
include /etc/logrotate.d
Dann gibt es Dateien für jeden Dienst, z. B. Syslog, MySQL, Apache usw., um die Protokollrotation für jeden dieser Dienste zu konfigurieren. Auf Debian- und Red Hat-Systemen sollte dies bereits für Sie eingerichtet sein.
Wenn Sie logrotate noch nicht haben, ist es etwas schwieriger. Ich würde versuchen, grep oder tail zu verwenden, um die letzten Einträge zu speichern, dann die Datei zu löschen und syslogd neu zu starten (z. B. service syslogd restart
oder pkill -HUP syslogd
).
Und schließlich gibt es hier ein Skript, das ich genau für diese Situation geschrieben habe diskuse
:
# test -d ~/bin || mkdir ~/bin
# svn cat http://svn.mikelward.com/svn/scripts/diskuse > ~/bin/diskuse
# chmod +x ~/bin/diskuse
# ~/bin/diskuse -A /var > ~/biggest-files-in-var.txt
# head ~/biggest-files-in-var.txt
# ~/bin/diskuse -T -A /var > ~/biggest-dirs-in-var.txt
# head ~/biggest-dirs-in-var.txt
# ~/bin/diskuse -a 1d /var > ~/biggest-files-in-var-that-changed-today.txt
# head ~/biggest-files-in-var-that-changed-today.txt