Нет файла /var/log/syslog после перемещения / var / log в tmpfs

Чтобы избежать бесполезной записи в мой SSD я переехал /var/log (а также /tmp) в ОЗУ через /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

Но с тех пор у меня нет /var/log/syslog файл.

Я думал, что это потому, что /var/log еще не установлен, когда rsyslogd запускается, но все равно не работает при ручном перезапуске службы (когда я уверен, /var/log установлен).

Я использую:

  • Ubuntu 14.04.2
  • Ядро 3.13.0-45
  • rsyslog 7.4.4-1ubuntu2.5

2 ответа

Перемещение чего-либо в /var для tmpfs это плохая идея на данный момент, потому что ни Ubuntu, ни какой-либо другой крупный дистрибутив Linux не поддерживают его в данный момент. Он также имеет недостаток, заключающийся в том, что он занимает основную память и теряет все предыдущие файлы журналов, что затрудняет диагностику проблемы. Диски SSD на самом деле не настолько деликатны, когда речь идет о циклах записи, и несколько файлов журнала не приводят к достаточному количеству данных и операций записи, что значительно сокращает срок службы SSD. Очень немногие SSD выходят из строя из-за исчерпания цикла записи.

Я подозреваю что /var/log/syslog все еще существует, но только в корневой файловой системе, потому что rsyslog начинается раньше /var/log установлен. Когда вы монтируете другую файловую систему в /var/log, его предыдущий контент скрыт под.

В качестве обходного пути вы можете связать свою корневую файловую систему где-нибудь еще, что позволит вам проверять ее содержимое без тени других точек монтирования:

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

Теперь вы должны увидеть другой контент в /mnt/root/var/log,

PS: Если у вас есть внутренний жесткий диск в вашей машине в дополнение к SSD, вы можете смонтировать /var оттуда. Это то, что я и многие другие люди делаем, и не в основном из-за проблем с циклами записи. Основной причиной всегда было то, что неисправная программа может случайно записать кучу (лог) данных в /var и никто не заметит, пока файловая система не будет заполнена, и в этот момент будет трудно облегчить ситуацию, если /var был частью /,

Вы должны создать эти файлы в /etc/rc.local файл так:

# 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

Вышеуказанный скрипт идет перед строкой:

exit 0

Этот скрипт создает необходимые каталоги и файлы при запуске системы. Вы также можете дополнительно синхронизировать эти каталоги, используя rsync при выключении, если вам нужно, чтобы они были постоянными между перезагрузками системы.

Другие вопросы по тегам