En nuestro servidor de producción hay una unidad pequeña para el punto de montaje raíz /
,
/var/log
está ocupando demasiado espacio y tengo que eliminar manualmente algunos archivos. ¿Cómo puedo pasar /var/log/
a digamos /home/log
SIN REINICIAR?
Aquí está lo que pensé:
$ mkdir /home/log
$ rsync -a /var/log /home/log
$ mount --bind /home/log /var/log
$ /etc/init.d/rsyslof restart
Pero sé que algunos servicios usan descriptores de archivo, por lo que continuarán usando /var/log
inodos o inodos.
linux
debian
log-files
disk-space-utilization
Razique
fuente
fuente
Respuestas:
Diseño adecuado
Supongo que no puede simplemente extender el sistema de archivos en cuestión (usando
lvextend && ext2online
), porque no usa LVM o usa un tipo de sistema de archivos incorrecto.Su enfoque
Lo que ha propuesto podría funcionar si señala a los demonios con SIGHUP (kill -1 pid). Obviamente, necesitaría más adelante "montar -o enlazar / / en algún lugar" y limpiar lo que quedó debajo de montado / var / log. Pero tiene un mal olor para mí, especialmente para la producción.
Evite el tiempo de inactividad, tenga un resultado limpio (pero complicado de hacer)
Olvídate de la idea "mount -o bind", crea una nueva partición / LV, pero no la montes todavía.
Para cada demonio que tenga algún archivo abierto (esperaría al menos syslog, inetd, sshd):
kill -1
o/etc/init.d/script reload
)lsof | grep /var/log
que el demonio ha cerrado sus archivosMontar sobre / var / log. Restaurar configuraciones antiguas, SIGHUP / recargar demonios nuevamente.
Manera fácil (tiempo de inactividad)
Cree una nueva partición / LV y móntela correctamente sobre / var o / var / log. La manera fácil es llevar el servidor al modo de mantenimiento (modo de usuario único) y usar la consola real (no ssh) para la operación.
fuente
Las respuestas de todos los demás son excelentes y correctas, y definitivamente debes leerlas primero.
Solo pensé en compartir esto porque facilita copiar y pegar, si su caso resulta ser bastante simple como el mío fue:
Detenga el registro del sistema y copie los registros actuales:
luego, monte su nueva ubicación
/var/log
. Digamos que es un nuevo dispositivo llamado/dev/sdb
ahora puede volver a copiar archivos y reiniciar el syslog:
Suponiendo que todo esto suceda bastante temprano en la vida de su máquina,
rsyslog
es probable que sea el único demonio en ejecución. YMMV!PD: probablemente querrás agregarlo a tu
fstab
también. Aquí hay una forma de hacerlo, asumiendo nuevamente un montaje muy sencillo:(cf /server//a/267610/80606 sobre la captura de mtab a fstab)
fuente
cp -r
consudo tar cpf
ysudo tar xpf
para preservar la propiedad de los archivos y permisos en la remota posibilidad de que hay registros creados por un usuario distinto de root.Otra cosa que puedes hacer es:
/var/log
/var/log
(utilizandolsof
como se sugiere kubanskamac)/var/log
a otra partición con suficiente espacio libre (siguiendo su ejemplo, eso sería/home/log
)ln -s /home/log /var/log
)Tenga en cuenta que esto está lejos de lo que consideraría una buena práctica. Es solo una solución alternativa para que no tenga que apagar el servidor. La solución correcta sería crear una nueva
/var
o/var/log
partición con suficiente espacio (o expandir la actual),fuente
Otra solución basada en @hwjp, si no puede usar otro volumen de unidad para moverlos, puede crear un volumen de unidad virtual en otro volumen que tenga más espacio disponible (ese es mi caso):
Crear volumen virtual:
A) hacer:
sudo dd if=/dev/zero of=VHD-log.img bs=1M count=1200
B) do:
sudo mkfs -t ext4 /thevolumeofyourchoice/VHD-log.img
formatee el tipo de sistema de archivos EXT4 en el archivo de imagen de registro VHD con la utilidad mkfs.C) hacer:
sudo mkdir /thevolumeofyourchoice/vlog
montar el registro VHD en un directorio (punto de montaje)D) hacer:
sudo mount -t auto -o loop /thevolumeofyourchoice/VHD-log.img /thevolumeofyourchoice/vlog
D1) Para montar el registro VHD al inicio del sistema en el directorio final, agregue esta entrada en el archivo / etc / fstab.
Mover archivos de registro antiguos:
E) hacer:
service rsyslog stop
lsof | grep /var/log
para enumerar los archivos abiertos en / var / log y apagar el demonio necesario (apach2, freshclam en mi caso)cp -rp /var/log/* /thevolumeofyourchoice/vlog
(cp -p igual que --preserve = modo, propiedad, marcas de tiempo)F) hacer:
sudo umount /thevolumeofyourchoice/vlog
sudo mv /var/log /var/log-old
sudo mkdir /var/log
sudo chgrp syslog /var/log
sudo mount -t auto -o loop /thevolumeofyourchoice/VHD-log.img /var/log
G) hacer:
service rsyslog start
y reiniciar otros servicios que detuvoFinalmente doble chequeo:
Puede hacer una
lsof | grep /var/log
lista de archivos abiertos en / var / log y verificar que apuntan a / var / log y no a / var / log-oldPuede mv, hacer una copia de seguridad o eliminar / var / log-old después de que todo esté bien.
fuente
Yo solo:
fuente
/var/log
montado/home/log
como está? Supongo que toda esta pregunta no es para administradores experimentados.