Нет файла /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
при выключении, если вам нужно, чтобы они были постоянными между перезагрузками системы.