GNU/Linux >> Tutoriels Linux >  >> Linux

Comment puis-je déplacer le répertoire /var/log

Solution 1 :

Conception appropriée

Je suppose que vous ne pouvez pas simplement étendre le système de fichiers en question (en utilisant lvextend && ext2online ), car vous n'utilisez pas LVM ou utilisez un type de système de fichiers incorrect.

Votre approche

Ce que vous avez proposé pourrait fonctionnent si vous signalez les démons avec SIGHUP (kill -1 pid). Évidemment, vous devrez plus tard "mount -o bind / /somewhere" et nettoyer ce qui reste sous /var/log monté. Mais ça sent mauvais pour moi, surtout pour la production.

Éviter les temps d'arrêt, avoir un résultat propre (mais compliqué à faire)

Oubliez l'idée "mount -o bind", créez un nouveau LV/partition, mais ne le montez pas encore.

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

Pour chaque démon qui a un fichier ouvert (j'attendrais au moins syslog, inetd, sshd) :

  • reconfigurer le démon no pour se connecter à /var/log
  • actualiser le démon (kill -1 ou /etc/init.d/script reload )
  • confirmer avec lsof | grep /var/log ce démon a fermé ses fichiers

Montez sur /var/log. Restaurez les anciennes configurations, SIGHUP/rechargez à nouveau les démons.

Manière simple (temps d'arrêt)

Créez une nouvelle LV/partition et montez-la correctement sur /var ou /var/log. Le moyen le plus simple consiste à mettre le serveur en mode maintenance (mode mono-utilisateur) et à utiliser la console réelle (pas ssh) pour l'opération.

Solution 2 :

Les réponses de tous les autres sont excellentes et correctes, et vous devriez certainement les lire en premier.

J'ai juste pensé que je partagerais ceci parce que cela facilite le copier-coller, si votre cas s'avère assez simple comme le mien :

Arrêtez le syslog et copiez les journaux actuels :

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

puis, montez votre nouvel emplacement sur /var/log . Disons qu'il s'agit d'un nouvel appareil appelé /dev/sdb

mount /dev/sdb /var/log

vous pouvez maintenant recopier les fichiers et redémarrer le syslog :

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

En supposant que tout cela se produise assez tôt dans la vie de votre machine, rsyslog est probablement le seul démon en cours d'exécution. YMMV !

PS - vous voudrez l'ajouter à votre fstab aussi probablement. Voici une façon de procéder, en supposant à nouveau une monture très simple :

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

(cf https://serverfault.com/a/267610/80606 à propos du catting mtab vers fstab)

Solution 3 :

Une autre chose que vous pourriez faire est :

  • Arrêtez les processus qui ont des fichiers ouverts sur /var/log
  • Vérifiez qu'il n'y a aucun processus avec des fichiers ouverts sur /var/log (en utilisant lsof comme suggéré par kubanskamac)
  • Déplacez votre /var/log vers une autre partition avec suffisamment d'espace libre (suivant votre exemple, ce serait /home/log )
  • Créer un lien symbolique de /var/log vers /home/log (ln -s /home/log /var/log )
  • Redémarrez les processus que vous avez arrêtés à la première étape

Veuillez noter que c'est loin d'être ce que je considérerais comme une bonne pratique. C'est juste une solution de contournement pour que vous n'ayez pas à arrêter le serveur. La bonne solution serait de créer un nouveau /var ou /var/log partition avec suffisamment d'espace (ou étendre celle en cours),


Linux
  1. Comment changer les points de montage ?

  2. Différence entre /var/log/messages, /var/log/syslog et /var/log/kern.log ?

  3. CentOS / RHEL :Comment faire pivoter les fichiers /var/log/wtmp et /var/log/btmp à l'aide de logrotate

  4. Comment déplacer /usr et /var vers une autre partition ou un autre disque

  5. Comment déplacer /var sur un disque séparé en tant que point de montage séparé (en ligne)

Comment changer le répertoire de journal par défaut (/var/log) dans Rsyslog pour CentOS/RHEL 6,7

Comment changer le chemin du fichier journal auditd /var/log/audit/audit.log

Comment tronquer le fichier /var/log/lastlog

Comment puis-je vérifier si un répertoire existe ?

Django static_root dans /var/www/... - aucune autorisation pour collectstatic

Les sites Web doivent-ils vivre dans /var/ ou /usr/ selon l'utilisation recommandée ?