GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo puedo mover el directorio /var/log?

Solución 1:

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.

Tu enfoque

Lo que has propuesto podría funciona si señalas a los demonios con SIGHUP (kill -1 pid). Obviamente, más adelante necesitaría "mount -o bind //somewhere" y limpiar lo que quedó debajo de /var/log montado. Pero me huele mal, sobre todo para producción.

Evite el tiempo de inactividad, tenga un resultado limpio (pero complicado de hacer)

Olvídese de la idea de "mount -o bind", cree un nuevo LV/partición, pero no lo monte todavía.

lsof | grep /var/log             # lists open files in /var/log

Para cada demonio que tiene un archivo abierto (esperaría al menos syslog, inetd, sshd):

  • reconfigure el daemon no para iniciar sesión en /var/log
  • actualizar el demonio (kill -1 o /etc/init.d/script reload )
  • confirmar con lsof | grep /var/log ese demonio ha cerrado sus archivos

Montar sobre /var/log.Restaurar configuraciones antiguas, SIGHUP/recargar demonios de nuevo.

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 poner el servidor en modo de mantenimiento (modo de usuario único) y usar la consola real (no ssh) para la operación.

Solución 2:

Las respuestas de todos los demás son excelentes y correctas, y definitivamente deberías leerlas primero.

Solo pensé en compartir esto porque facilita copiar y pegar, si su caso resulta ser bastante simple como el mío:

Detenga el syslog y copie los registros actuales:

service rsyslog stop
mkdir -p /tmp/varlog
cp -r /var/log/* /tmp/varlog

luego, monte su nueva ubicación sobre /var/log . Digamos que es un nuevo dispositivo llamado /dev/sdb

mount /dev/sdb /var/log

ahora puede volver a copiar los archivos y reiniciar el syslog:

cp -r /tmp/varlog/* /var/log
rm -rf /tmp/varlog
service rsyslog start

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:querrás agregarlo a tu fstab también probablemente. Aquí hay una forma de hacerlo, suponiendo nuevamente un montaje muy sencillo:

cat /etc/mtab |grep /var/log >>/etc/fstab

(cf https://serverfault.com/a/267610/80606 acerca de convertir mtab en fstab)

Solución 3:

Otra cosa que podrías hacer es:

  • Detener los procesos que tienen archivos abiertos en /var/log
  • Verifique que no haya ningún proceso con archivos abiertos en /var/log (usando lsof como sugirió kubanskamac)
  • Mueva su /var/log a otra partición con suficiente espacio libre (siguiendo tu ejemplo, sería /home/log )
  • Cree un enlace simbólico desde /var/log a /home/log (ln -s /home/log /var/log )
  • Reinicia los procesos que detuviste en el primer paso

Tenga en cuenta que esto está lejos de lo que consideraría como 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 un nuevo /var o /var/log partición con suficiente espacio (o expandir la actual),


Linux
  1. ¿Diferencia entre /var/log/messages, /var/log/syslog y /var/log/kern.log?

  2. Cómo cambiar la ruta del archivo de registro auditd /var/log/audit/audit.log

  3. CentOS / RHEL:Cómo rotar el archivo /var/log/wtmp y /var/log/btmp usando logrotate

  4. Cómo mover /usr y /var a otra partición o disco

  5. Cómo mover /var en un disco separado como un punto de montaje separado (en línea)

Linux:¿cómo monitorear la E/S del disco en un directorio en particular?

¿Cómo cambiar los puntos de montaje?

20 archivos de registro de Linux que se encuentran en el directorio /var/log

Cómo cambiar el directorio de registro predeterminado (/var/log) en Rsyslog para CentOS/RHEL 6,7

Cómo truncar el archivo /var/log/lastlog

¿Cómo puedo excluir un directorio del comando ls?