web-dev-qa-db-fra.com

Aucun fichier / var / log / syslog après le déplacement de / var / log vers tmpfs

Pour éviter toute écriture inutile sur mon SSD, j'ai déplacé /var/log (et /tmp) vers RAM via /etc/fstab:

cat >> /etc/fstab <<'EOT'
tmpfs    /tmp        tmpfs    defaults,size=1g                                0    0
tmpfs    /var/log    tmpfs    defaults,nosuid,nodev,noatime,mode=0755,size=5% 0    0
EOT

Mais depuis lors, je n'ai plus de fichier /var/log/syslog.

Je pensais que c'était parce que /var/log n'est pas encore monté lorsque rsyslogd démarre mais il ne fonctionne toujours pas lors du redémarrage manuel du service (quand je suis sûr que /var/log est monté).

J'utilise:

  • Ubuntu 14.04.2
  • Noyau 3.13.0-45
  • rsyslog 7.4.4-1ubuntu2.5
4
CDuv

Déplacer quelque chose dans /var vers un fichier tmpfs est une mauvaise idée à ce stade, car ni Ubuntu ni aucune autre distribution Linux majeure ne le supporte pour le moment. Il a également pour inconvénient d’occuper la mémoire principale et de perdre tous les fichiers de log précédents, ce qui entrave le diagnostic du problème. Les disques SSD ne sont pas vraiment délicats en termes de cycles d’écriture et quelques fichiers journaux ne donnent pas suffisamment de données et d’opérations d’écriture pour réduire considérablement la durée de vie d’un disque SSD. Très peu de disques SSD échouent à cause de l'épuisement du cycle d'écriture.

Je soupçonne que /var/log/syslog existe toujours, mais uniquement sur le système de fichiers racine, car rsyslog démarre avant que /var/log ne soit monté. Lorsque vous montez un autre système de fichiers sur /var/log, son contenu précédent est masqué en dessous.

En guise de solution de contournement, vous pouvez lier votre système de fichiers racine ailleurs, ce qui vous permettrait d'inspecter son contenu sans occulter les autres points de montage:

Sudo mkdir -p /mnt/root
Sudo mount --bind / /mnt/root

Vous devriez maintenant voir un autre contenu dans /mnt/root/var/log.

P.S .: Si vous avez un lecteur de disque dur interne dans votre machine en plus d’un SSD, vous pouvez monter /var à partir de là. C’est ce que moi-même et beaucoup d’autres personnes faisons et pas principalement en raison de préoccupations liées aux cycles d’écriture. La raison principale a toujours été qu'un programme défectueux pouvait écrire accidentellement des tas de données (journaux) dans /var et personne ne s'en rendrait compte avant que le système de fichiers ne soit saturé. À ce stade, il serait difficile d'améliorer la situation, si /var faisait partie de /.

3
David Foerster

Vous devriez créer ces fichiers dans le fichier /etc/rc.local comme ceci:

# Restore tmpfs directories for logs. 
# Extend the following directories to your needs according to installed packages
for dir in apparmor apt cups dist-upgrade fsck gdm installer samba unattended-upgrades upstart ;
do
  if [ ! -e /var/log/$dir ] ; then
    mkdir /var/log/$dir
  fi
done

# Restore syslog files
for file in debug mail.err mail.log mail.warn syslog ;
  if [ ! -f /var/log/$file ] ; then
    touch /var/log/$file
    chown syslog:adm /var/log/#file
  fi
done

# Set owners for the newly created log directories
chown root:adm /var/log/samba

Le script ci-dessus va avant la ligne:

exit 0

Ce script crée ces répertoires et fichiers nécessaires au démarrage du système. Vous pouvez également éventuellement synchroniser ces répertoires à l'aide de rsync à l'arrêt, si vous avez besoin qu'ils soient persistants entre les redémarrages du système.

0
Елин Й.