Sur notre serveur de production, il y a un petit lecteur pour le point de montage racine /
,
/var/log
prend trop de place et je dois supprimer manuellement certains fichiers. Comment puis-je passer /var/log/
à disons /home/log
SANS REDÉMARRAGE?
Voici ce que je pensais:
$ mkdir /home/log
$ rsync -a /var/log /home/log
$ mount --bind /home/log /var/log
$ /etc/init.d/rsyslof restart
Mais je sais que certains services utilisent des descripteurs de fichiers, ils continueront donc à utiliser /var/log
ou des inodes.
Réponses:
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 fonctionner si vous signalez les démons avec SIGHUP (kill -1 pid). Évidemment, vous devrez plus tard "monter -o bind / / quelque part" et nettoyer ce qui a été laissé sous / var / log monté. Mais ça a une mauvaise odeur pour moi, surtout pour la production.
Évitez les temps d'arrêt, obtenez un résultat propre (mais compliqué à faire)
Oubliez l'idée de "monter -o bind", créez une nouvelle partition LV /, mais ne la montez pas encore.
Pour chaque démon qui a un fichier ouvert (je m'attendrais au moins à syslog, inetd, sshd):
kill -1
ou/etc/init.d/script reload
)lsof | grep /var/log
ce démon qu'il a fermé ses fichiersMontez sur / var / log. Restaurer les anciennes configurations, les démons SIGHUP / recharger à nouveau.
Moyen simple (temps d'arrêt)
Créez une nouvelle partition LV / et montez-la correctement sur / var ou / var / log. Le moyen le plus simple est de mettre le serveur en mode maintenance (mode mono-utilisateur) et d'utiliser la console réelle (pas ssh) pour l'opération.
la source
Les réponses de tous les autres sont excellentes et correctes, et vous devriez certainement les lire en premier.
Je pensais juste partager cela parce que cela facilite le copier-coller, si votre cas s'avère assez simple comme le mien:
Arrêtez le journal système et copiez les journaux actuels:
puis montez votre nouvel emplacement
/var/log
. Disons que c'est un nouvel appareil appelé/dev/sdb
vous pouvez maintenant recopier des fichiers et redémarrer le syslog:
En supposant que tout cela se produit assez tôt dans la vie de votre machine, il
rsyslog
est probable que ce soit le seul démon en cours d'exécution. YMMV!PS - vous voudrez probablement l'ajouter à votre
fstab
aussi. Voici une façon de le faire, en supposant encore une fois un montage très simple:(cf /server//a/267610/80606 sur la conversion de mtab en fstab)
la source
cp -r
parsudo tar cpf
etsudo tar xpf
de préserver la propriété des fichiers et les autorisations au cas où il y aurait des journaux créés par un utilisateur autre que root.Une autre chose que vous pourriez faire est:
/var/log
/var/log
(en utilisantlsof
comme suggéré par kubanskamac)/var/log
vers une autre partition avec suffisamment d'espace libre (suivant votre exemple, ce serait/home/log
)ln -s /home/log /var/log
)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 une nouvelle partition
/var
ou une/var/log
partition avec suffisamment d'espace (ou d'étendre la partition actuelle),la source
Une autre solution basée sur @hwjp, si vous ne pouvez pas utiliser un autre volume de lecteur pour les déplacer, vous pouvez créer un volume de lecteur virtuel dans un autre volume qui a plus d'espace disponible (c'est mon cas):
Créer un volume virtuel:
A) faire:
sudo dd if=/dev/zero of=VHD-log.img bs=1M count=1200
B) À faire:
sudo mkfs -t ext4 /thevolumeofyourchoice/VHD-log.img
formatez le type de système de fichiers EXT4 dans le fichier image du journal VHD avec l'utilitaire mkfs.C) Faire:
sudo mkdir /thevolumeofyourchoice/vlog
Monter le journal VHD dans un répertoire (point de montage)D) faire:
sudo mount -t auto -o loop /thevolumeofyourchoice/VHD-log.img /thevolumeofyourchoice/vlog
D1) Pour monter le journal VHD au démarrage du système dans le répertoire final, ajoutez cette entrée dans le fichier / etc / fstab.
Déplacer les anciens fichiers journaux:
E) faire:
service rsyslog stop
lsof | grep /var/log
pour lister les fichiers ouverts dans / var / log et désactiver le démon nécessaire (apach2, freshclam dans mon cas)cp -rp /var/log/* /thevolumeofyourchoice/vlog
(cp -p identique à --preserve = mode, propriété, horodatage)F) faire:
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) Faites:
service rsyslog start
et redémarrez les autres services que vous avez arrêtésEnfin, revérifiez:
Vous pouvez faire un -
lsof | grep /var/log
pour lister les fichiers ouverts dans / var / log et vérifier qu'ils pointent vers / var / log et non / var / log-oldVous pouvez mv, sauvegarder ou supprimer / var / log-old après tout est ok.
la source
Je voudrais juste:
la source
/var/log
monté/home/log
tel quel? Toute cette question n'est pas pour les administrateurs chevronnés, je présume.