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:
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 /
.
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.