GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso spostare la directory /var/log

Soluzione 1:

Design corretto

Presumo che tu non sia in grado di estendere semplicemente il filesystem in questione (usando lvextend && ext2online ), perché non usi LVM o usi un tipo di filesystem sbagliato.

Il tuo approccio

Quello che hai proposto potrebbe funziona se segnali i demoni con SIGHUP (kill -1 pid). Ovviamente dovresti in seguito "mount -o bind / /somewhere" e ripulire ciò che è stato lasciato sotto montato /var/log. Ma ha un cattivo odore per me, soprattutto per la produzione.

Evita i tempi di inattività, ottieni un risultato pulito (ma complicato da fare)

Dimentica l'idea "mount -o bind", crea un nuovo LV/partizione, ma non montarlo ancora.

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

Per ogni demone che ha un file aperto (mi aspetterei almeno syslog, inetd, sshd):

  • riconfigurare il demone no per accedere a /var/log
  • aggiorna il demone (kill -1 o /etc/init.d/script reload )
  • confermare con lsof | grep /var/log quel demone ha chiuso i suoi file

Monta su /var/log. Ripristina le vecchie configurazioni, SIGHUP/ricarica di nuovo i demoni.

Modo semplice (tempo di inattività)

Crea una nuova LV/partizione e montala correttamente su /var o /var/log. Il modo più semplice è portare il server in modalità di manutenzione (modalità utente singolo) e utilizzare la console effettiva (non ssh) per l'operazione.

Soluzione 2:

Le risposte di tutti gli altri sono eccellenti e corrette e dovresti assolutamente leggerle prima.

Ho solo pensato di condividerlo perché semplifica il copia e incolla, se il tuo caso si rivela abbastanza semplice come il mio:

Arresta il syslog e copia i log correnti:

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

quindi, monta la tua nuova posizione su /var/log . Supponiamo che sia un nuovo dispositivo chiamato /dev/sdb

mount /dev/sdb /var/log

ora puoi copiare nuovamente i file e riavviare il syslog:

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

Supponendo che tutto questo avvenga abbastanza presto nella vita della tua macchina, rsyslog è probabile che sia l'unico demone in esecuzione. YMMV!

PS:vorrai aggiungerlo al tuo fstab pure probabilmente. Ecco un modo per farlo, assumendo ancora una volta una montatura molto semplice:

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

(vedi https://serverfault.com/a/267610/80606 su catting da mtab a fstab)

Soluzione 3:

Un'altra cosa che potresti fare è:

  • Arresta i processi che hanno file aperti su /var/log
  • Verifica che non ci siano processi con file aperti su /var/log (usando lsof come suggerito da kubanskamac)
  • Sposta il tuo /var/log in un'altra partizione con spazio libero sufficiente (seguendo il tuo esempio, sarebbe /home/log )
  • Crea un collegamento simbolico da /var/log a /home/log (ln -s /home/log /var/log )
  • Riavvia i processi che hai interrotto nel primo passaggio

Tieni presente che questo è tutt'altro che ciò che considererei una buona pratica. È solo una soluzione alternativa in modo da non dover arrestare il server. La soluzione giusta sarebbe creare un nuovo /var o /var/log partizione con spazio sufficiente (o espandere quella corrente),


Linux
  1. Come modificare i punti di montaggio?

  2. Come modificare il percorso del file di registro auditd /var/log/audit/audit.log

  3. CentOS / RHEL:come ruotare i file /var/log/wtmp e /var/log/btmp usando logrotate

  4. Come troncare il file /var/log/lastlog

  5. Come posso verificare se esiste una directory?

Come posso escludere una directory dal comando ls

Come posso montare un'immagine disco?

Come posso ripristinare un chmod nella directory etc?

I siti web dovrebbero vivere in /var/ o /usr/ in base all'utilizzo consigliato?

Elimina tutto /var/log?

I log di sistema sono vuoti (/var/log/messages; /var/log/secure; ecc.)