Nenhum arquivo / var / log / syslog depois de mover / var / log para tmpfs

4

Para evitar gravação inútil em meu SSD, movi /var/log (e /tmp ) para 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

Mas desde então eu não tenho nenhum arquivo /var/log/syslog .

Eu pensei que era porque /var/log ainda não está montado quando rsyslogd é iniciado, mas ainda não funciona quando manualmente reiniciando o serviço (quando eu tenho certeza que /var/log está montado).

Estou usando:

  • Ubuntu 14.04.2
  • Kernel 3.13.0-45
  • rsyslog 7.4.4-1ubuntu2.5
por CDuv 04.03.2015 / 11:04

2 respostas

3

Mover qualquer coisa em /var para um tmpfs é uma má ideia neste momento, porque nem o Ubuntu nem qualquer outra distribuição Linux principal o suporta no momento. Também tem a desvantagem de ocupar a memória principal e perder todos os arquivos de log anteriores, o que dificulta o diagnóstico de problemas. Drives SSD realmente não são tão delicados quando se trata de escrever ciclos e alguns arquivos de log não resultam em dados suficientes e operações de gravação para reduzir significativamente o tempo de vida de um SSD. Muito poucos SSDs falham por causa do esgotamento do ciclo de gravação.

Eu suspeito que /var/log/syslog ainda exista, mas apenas no sistema de arquivos raiz, porque rsyslog começa antes de /var/log ser montado. Quando você monta outro sistema de arquivos em /var/log , seu conteúdo anterior fica oculto por baixo.

Como solução alternativa, você pode vincular seu sistema de arquivos raiz em outro local, o que permitiria que você inspecionasse seu conteúdo sem sombra de outros pontos de montagem:

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

Agora você deve ver outro conteúdo em /mnt/root/var/log .

P.S .: Se você tiver uma unidade de disco rígido interna em sua máquina, além de um SSD, poderá montar /var a partir dela. Isso é o que eu e muitas outras pessoas fazemos e não principalmente por causa de preocupações com os ciclos de gravação. A principal razão sempre foi que um programa defeituoso pode gravar acidentalmente montes de dados (log) em /var e ninguém notaria até que o sistema de arquivos estivesse cheio, ponto no qual seria difícil aliviar a situação, se /var fazia parte de / .

    
por David Foerster 04.03.2015 / 11:24
0

Você deve criar esses arquivos em /etc/rc.local arquivo assim:

# 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

O script acima vai antes da linha:

exit 0

Este script cria os diretórios e arquivos necessários no início do sistema. Você também pode, opcionalmente, sincronizar esses diretórios usando rsync no encerramento, se precisar que eles sejam persistentes entre as reinicializações do sistema.

    
por Елин Й. 24.11.2015 / 18:44