INT 21h

Select language

Linux: systemd хранит /tmp в tmpfs и рандомно очищает, чем вызывает проблемы с ПО

№ 12523 В разделе Sysadmin от June 7th, 2024,
В подшивках: ,

В новых дистрибутивах несмотря на стандарты создатели systemd продолжают ломать Linux. Дело в том, что во многих дистрибутивах /tmp начали располагать мало того, что в tmpfs, так еще и очищают через какой-то промежуток времени, вызывая серьезные сбои в программах и внезапные пропажи файлов.

Выводим размеры волюмов и замечаем вот такое безобразие.

 $> df -h
tmpfs           3.8G   17M  3.7G   1% /tmp

А теперь представьте как вы запускаете mc и заходите посмотреть содержимое архива на 10 гигов. Есть архивы, которые mc может обработать просто прочитав его заголовки (типа zip), а есть непрерывные архивы (например, tar.gz), которые бабахнут не просто 10 гигов, а распакуют в /tmp все содержимое архива, а там и все 50-100 гигов может быть. Это означает, что в /tmp резко закончится место и операция просмотра архива завершится с ошибкой. Ладно, допустим вы таки зашли в архив и все хорошо, работаете, смотрите файлы и тут бац, новая ошибка, неизвесно как, но распакованные файлы ПРОПАЛИ! Там же в /tmp располагаются файлы Libreoffice, ssh, ssh-agent и кучи другого системного софта. Представляете какие спецэффекты вас будут ждать, если затянете с ними работу более, чем на сутки?

А всему виной еще одно западло, которое приготовили нам создатели systemd:

Чтобы отключить монтирование /tmp как tmpfs нужно в systemd выключить tmp.mount:

sudo systemctl mask tmp.mount

Теперь все временные файлы в /tmp будут располагаться на диске как в любом нормальном linux.

Отключение любых очисток с костылями

systemctl mask systemd-tmpfiles-clean.timer

Также можно изменять поведение, если отредактировать конфиги в /usr/lib/tmpfiles.d или создать новые в /etc/tmpfiles.d.

Например, модифицировать /usr/lib/tmpfiles.d/fs-tmp.conf для очищения разово при загрузке, как описано в документации:

D! /tmp 1777 root root -

А еще меня больше всего вымораживает вот это правило: /usr/lib/tmpfiles.d/fs-usr-local.conf

d /usr/local/bin 0755 root root -
d /usr/local/include 0755 root root -
d /usr/local/lib 0755 root root -
d /usr/local/libexec 0755 root root -
d /usr/local/man 0755 root root -
d /usr/local/man/man1 0755 root root -
d /usr/local/man/man2 0755 root root -
d /usr/local/man/man3 0755 root root -
d /usr/local/man/man4 0755 root root -
d /usr/local/man/man5 0755 root root -
d /usr/local/man/man6 0755 root root -
d /usr/local/man/man7 0755 root root -
d /usr/local/man/man8 0755 root root -
d /usr/local/man/man9 0755 root root -
d /usr/local/man/mann 0755 root root -
d /usr/local/sbin 0755 root root -
d /usr/local/share 0755 root root -
d /usr/local/src 0755 root root -
d /usr/local/lib64 0755 root root -

Программ в /usr/local просто хренова гора установлена обычно.

Нет комментариев »

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Облачная платформа
Яндекс.Метрика

Fortune cookie: "Never before have I encountered such corrupt and foul-minded perversity! Have you ever considered a career in the Church?" [Black Adder II]