Auf unserem Produktionsserver befindet sich ein kleines Laufwerk für den Root-Mount-Punkt /
,
/var/log
das zu viel Speicherplatz beansprucht und ich muss einige Dateien manuell löschen. Wie kann ich mich bewegen /var/log/
, um /home/log
OHNE NEUBOOT zu sagen ?
Folgendes habe ich mir gedacht:
$ mkdir /home/log
$ rsync -a /var/log /home/log
$ mount --bind /home/log /var/log
$ /etc/init.d/rsyslof restart
Ich weiß jedoch, dass einige Dienste Dateideskriptoren verwenden, sodass sie weiterhin /var/log
Inodes verwenden.
linux
debian
log-files
disk-space-utilization
Razique
quelle
quelle
Antworten:
Richtiges Design
Ich
lvextend && ext2online
gehe davon aus , dass Sie das betreffende Dateisystem nicht einfach erweitern können (mithilfe von ), da Sie kein LVM oder keinen falschen Dateisystemtyp verwenden.Ihr Ansatz
Was Sie vorgeschlagen haben, könnte funktionieren, wenn Sie die Dämonen mit SIGHUP (kill -1 pid) signalisieren. Offensichtlich müssten Sie später "mount -o bind / / somewhere" und bereinigen, was unter mount / var / log übrig geblieben ist. Aber es hat einen schlechten Geruch für mich, besonders für die Produktion.
Ausfallzeiten vermeiden, ein sauberes Ergebnis erzielen (aber kompliziert zu machen)
Vergessen Sie die Idee "mount -o bind", erstellen Sie eine neue LV / Partition, aber mounten Sie sie noch nicht.
Für jeden Daemon, der eine offene Datei hat (ich würde mindestens syslog, inetd, sshd erwarten):
kill -1
oder/etc/init.d/script reload
)lsof | grep /var/log
dass der Daemon seine Dateien geschlossen hatMount über / var / log. Stellen Sie alte Konfigurationen wieder her und laden Sie die Daemons erneut.
Einfache Möglichkeit (Ausfallzeit)
Erstellen Sie eine neue LV / -Partition und hängen Sie sie ordnungsgemäß über / var oder / var / log an. Die einfache Möglichkeit besteht darin, den Server in den Wartungsmodus (Einzelbenutzermodus) zu versetzen und die eigentliche Konsole (nicht ssh) für den Vorgang zu verwenden.
quelle
Die Antworten aller anderen sind hervorragend und korrekt, und Sie sollten sie unbedingt zuerst lesen.
Ich dachte nur, ich würde das teilen, weil es das Kopieren und Einfügen erleichtert, wenn sich herausstellt, dass Ihr Fall ganz einfach ist wie der meine:
Stoppen Sie das Syslog und kopieren Sie die aktuellen Logs:
dann montieren Sie Ihren neuen Standort über
/var/log
. Angenommen, es handelt sich um ein neues Gerät namens/dev/sdb
Jetzt können Sie Dateien zurückkopieren und das Syslog neu starten:
Vorausgesetzt, dies alles geschieht ziemlich früh im Leben Ihrer Maschine,
rsyslog
ist dies wahrscheinlich der einzige laufende Daemon. YMMV!PS - Sie werden es
fstab
wahrscheinlich auch zu Ihrem hinzufügen wollen . Hier ist eine Möglichkeit, dies zu tun, unter der Annahme, dass die Montage sehr einfach ist:( Siehe /server//a/267610/80606 zum Catten von MTAB in FSTAB)
quelle
cp -r
durchsudo tar cpf
undsudo tar xpf
um den Dateieigentum und die Berechtigungen für den Fall beizubehalten, dass keine Protokolle von einem anderen Benutzer als root erstellt werden.Eine andere Sache, die Sie tun könnten, ist:
/var/log
/var/log
(Verwendunglsof
wie von Kubanskamac empfohlen)./var/log
auf eine andere Partition mit genügend freiem Speicherplatz (das wäre nach Ihrem Beispiel/home/log
)ln -s /home/log /var/log
)Bitte beachten Sie, dass dies alles andere als eine gute Praxis ist. Es ist nur eine Problemumgehung, damit Sie den Server nicht herunterfahren müssen. Die richtige Lösung wäre, eine neue
/var
oder/var/log
Partition mit genügend Speicherplatz zu erstellen (oder die aktuelle zu erweitern).quelle
Ich würde nur:
quelle
/var/log
montiert zu lassen ,/home/log
wie es ist? Ich nehme an, diese ganze Frage ist nicht für erfahrene Admins gedacht.