LINUX.ORG.RU

Debian переходит к использованию tmpfs в /tmp и к очистке /tmp и /var/tmp по таймеру

 , , , ,


1

5

Разработчик Debian Лука Боккасси анонсировал переход Debian к использованию tmpfs в /tmp и к очистке /tmp и /var/tmp по таймеру по умолчанию, начиная с Debian 13 “Trixie”.

В новых системах файлы в /tmp будут либо исчезать вместе с прежним экземпляром tmpfs в памяти после рестарта, либо будут удаляться ежедневно по таймеру, если они старше 10 дней, а файлы в /var/tmp будут удаляться только ежедневно по таймеру, если они старше 30 дней. Пакеты openssh и tmux были модифицированы с целью сохранения своих временных файлов в /var/tmp в качестве исключения. В системах, которые будут обновляться до Debian 13 “Trixie”, старое поведение /var/tmp сохранится.

В то время, как в большинстве других дистрибутивов давно перешли на использование tmpfs в /tmp, в Debian не спешили этого делать. Сейчас разработчики Debian (Michael Biebl и Luca Boccassi) возобновили одну из таких дискуссий 2020 года, в которой разработчик из Canonical (Eric Desrochers) пожаловался на проблему несоответствия тогдашней реализации /var/tmp в Debian тому, как работает systemd, несмотря на то, что патч был опубликован ещё в 2012 году. Таким образом, было принято решение привести поведение системы при работе с этими директориями к общепринятому в systemd и в большинстве других дистрибутивов.

>>> Подробности



Проверено: hobbit ()
Последнее исправление: Virtuos86 (всего исправлений: 7)

А я думал уже все дистры давно так делают.

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

Давно монтирую все что можно и не можно в tmpfs. Все временные директори, кэши, логи и прочее.
Сборка софта вся происходит целиком в памяти. Даже зависимости на время сборки ставятся на временный оверлей. Или вообще сборка происходит в clean chroot с образом целой системы тоже прямо в рамдиске.
Свопа нет вообще последние лет 10, так как имеющиеся машины имеют от 16 ГБ оперативы.

Благодаря этому:

  • Повышается производительность системы и скорость сборок.
  • Износ диска снижается на порядки.
  • Перезагрузка чистит весь мусор автоматически.
greedyskoof
()
Последнее исправление: greedyskoof (всего исправлений: 1)
Ответ на: комментарий от lenin386

Ты сейчас серьезно? Или троллить так пытаешься? Вода мокрая, огонь печет) ОС не даст удалить файл с открытым дескриптором, просто заблокирует этот процесс.

З.Ы. Есть нюансы, но я их специально упускаю, чтобы не уходить в дебри. Сути это просто не меняет.

noc101
()
Ответ на: комментарий от noc101

Я не представляю операцию которая длится месяцами

И что теперь? Раньше люди не представляли, что земля вертится вокруг солнца, намёк понятен?

u5er
()
Ответ на: комментарий от noc101

Клоунаду не начинай. То, что ты не можешь себе представить подобных задач, это не значит, что их нет.

u5er
()
Ответ на: комментарий от lenin386

А если «операция» длится допустим секунду, но как раз в эту самую секунду сработал таймер и вот НИПАВИЗЛО, панимаишь.

Никогда не думал, что Ленин не умеет читать программы партии и правительства. По таймеру удаляются лишь старые файлы, которым больше 10-и или 30-и дней, в зависимости от tmp. Если операция длится секунду, час или даже неделю, ничего с файлами этой операции ни в одном из tmp не случится, за исключением /tmp после ребута.

zg
() автор топика
Последнее исправление: zg (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

У меня OOM в основном убивает самые жручие процессы, а не вообще всё.

Я знаю всего 2 исключения, когда процесс из Топ-10 по жирности не нужен/не критичен: а) это kwin_x11 (kde5), растекающийся на 1гб разделяемой памяти в сутки и б) это бенчмарк на перегрузку оперативной памяти.

А если мы гипотетически предположим, что оомд прицельно поубивает только неактивные вкладки браузера и это каким то чудом решит проблему и не навернёт браузера, то у меня есть резонный вопрос: А нахрена, ведь вкладки браузера это одна из самых лёгких штук для zram/zswap и свопа вообще, причём в век ССД быстрее сбросить и поднять обратно чем перезагрузить страницу. Так ещё юзеру снова листать, логиниться, вводить данные...

Так ты же покупаешь самые дерьмовые SSD на рынке.

Вот только он умер не от того, что я компилировал генту или там жал бэкапы, паралельно сбрасывая по 10-15гб в tmpfs (у линукса своп-раздел был 20гб), всё это на протяжении 5-и лет. Он умер за 2 недели игры в Дисхоноред2 и Прототип2 под вин7, которые загружали 8,5-9гб оперативки из 7,2 доступной. Очень странное совпадение с вероятностью 1:130.

А то что мои ссд довольно дерьмовые - ну так это крайне оправданно по деньгам. Бэкапы то я делать умею.

kirill_rrr ★★★★★
()
Ответ на: комментарий от u5er

реализовать файлы, которые автоматически удаляются по завершению/падению создавшего их процесса или что-то в этом роде

Так оно уже сейчас так. Прога создаёт файл, ждём секунду, удаляем его. Всё, он существует до тех пор, пока прога не завершится. Потом файловый дескриптор высвободится и файл исчезнет на самом деле. Там даже есть не очень сложный способ обратиться к недоудалённому файлу другой программой, которая теоретически его не должна видеть.

kirill_rrr ★★★★★
()
Ответ на: комментарий от noc101

https://github.com/systemd/systemd/blob/main/tmpfiles.d/systemd-tmp.conf#L10-L18

Самое смешное во всей этой истории то, что они сами отстрелили себе ногу аж по пах.
Ну и в заглавии темы упомянуты

Пакеты openssh и tmux были модифицированы с целью сохранения своих временных файлов в /var/tmp в качестве исключения.

urxvt ★★★★★
()
Ответ на: комментарий от CrX

Возможно. У меня такого нет. Вообще у меня ~/.cache в tmpfs смонтирован.

А, ну так это практически то же самое. Только я не люблю портянки в mount, так что tmpfs у меня одна большая, а всякие кеши засунуты туда симлинками.

kirill_rrr ★★★★★
()
Ответ на: комментарий от kirill_rrr

Всё, он существует до тех пор, пока прога не завершится.

Позволю себе небольшую поправку: файл будет существовать до тех пор, пока существует хотя бы один дескриптор, указывающий на него. Файл будет удалён тогда, когда все программы, в которых он был открыт, закроют его.

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

u5er
()
Ответ на: комментарий от Gentooshnik

Но по тексту выходит что данные могут быть удалены и во время работы программы.

Это конкретно придумка дебиана. Тут говорили что ещё Солярис так делал, когда то давно, но я что то не помню кто ещё себе такую хрень позволяет.

intelfx вот утверждает, что программа обязана быть готовой что из под неё прямо во время работы потрут кеши... Но я что то пока не дочитал чтобы тут вспомнили про то, что юниксы не блокируют удаление открытого файла! А это даёт автоматическую защиту этих самых потёртых кешей с точки зрения запущенной программы без каких либо действий с её стороны. Так что фактически никакой софт в юниксах в принципе не готовится к «из под меня могут потереть кеши».

kirill_rrr ★★★★★
()
Ответ на: комментарий от noc101

Если программа хранит в тмп файлы месяцами, то от такой программы стоит избавится.

У меня там хранятся миниатюры картинок для файлменеджера. Итогда действительно месяцами, если с аптаймом повезёт. Избавляться от файлменеджеров с поддержкой миниатюр?

А ещё...

ls /tmp
...
 fontconfig
 icon-cache.kcache
'ksycoca5_ru_LSvJadJhp4c4502HadNTCW4d3ZE='
'ksycoca5_ru_QViOGJCHc3QoyZYZfBDDpRIorwA='
 kwin
 lxqt-runner.history
 plasma-svgelements
 plasma_theme_default_v5.78.0.kcache
 qtsingleapp-qBitto-2fa5-3e8-lockfile
 sddm-:0-TxRcBz
 sddm-auth39e88d06-5b09-48c6-bee3-c64d3e32047b
 systemd-private-f9ab4579fbda4bcaaa2b57a24b885624-systemd-logind.service-zaMqsi
 systemd-private-f9ab4579fbda4bcaaa2b57a24b885624-systemd-timesyncd.service-a2JsWe
 systemd-private-f9ab4579fbda4bcaaa2b57a24b885624-upower.service-2Ytgci
 xauth-1000-_0
...
kirill_rrr ★★★★★
()
Последнее исправление: kirill_rrr (всего исправлений: 1)
Ответ на: комментарий от kirill_rrr

это бенчмарк на перегрузку оперативной памяти.

А так всегда и бывает лол. Кто-то начинает течь, ядро его убивает.

Вот только он умер не от того, что я компилировал генту или там жал бэкапы, паралельно сбрасывая по 10-15гб в tmpfs (у линукса своп-раздел был 20гб), всё это на протяжении 5-и лет. Он умер за 2 недели игры в Дисхоноред2 и Прототип2 под вин7, которые загружали 8,5-9гб оперативки из 7,2 доступной. Очень странное совпадение с вероятностью 1:130.

Ты ещё и вероятность считать не умеешь. Потрясающе! Для начала, шанс что диск сдохнет в первую неделю жизни или в какую-то неделю через 5 лет очень сильно отличается.

Плюс, ты играешь в полное говно. Я бы на месте твоего компа вообще в окно вылетел.

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от u5er

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

urxvt ★★★★★
()
Ответ на: комментарий от noc101

Ну прямо же из текста новости: запущенный системд, openssh, tmux

kirill_rrr ★★★★★
()

Не только /tmp и /var/tmp очень полезно упихать в tmpfs, а и /var/backups, /var/cache, /var/crash, /www/cache, /var/log, /run .

Ну ладно, согласен, с некоторыми каталогами я веду себя нагло и варварски, но /var/cache и /run абсолютно точно не надо на диске держать.

piyavking ★★★★★
()
Ответ на: комментарий от hateyoufeel

А так всегда и бывает лол. Кто-то начинает течь, ядро его убивает.

«кто то» бывает у бэта-тестеров. Обычно течёт какой то хорошо известный оригинал, один на 3 компа и 2 дистрибутива. Причём кто вообще сказал, что течная хрень не нужна и её можно просто так убивать не нажав Ctrl-S пальцами пользователя?

шанс что диск сдохнет

Ну так а почему он не сдох через 5 лет на очередной запаковке бэкапа (а у меня там были очень упоротые алгоритмы с запковкой в .7z в /tmp с последующей отправкой на малину через ssh) при одновременной пересборке мира, когда на соседнем столе я забыл закрыть десяток окон с книжками, сайтами и документиками, а сам рубился в каких нибудь героев в виртуалке?

Именно в линуксе я гонял своп в хвост и гриву, но убила диск настолько откровенно винда, что у меня даже нет сомнений, что нехрен утюжить кусочек в 2% забитого под завязку диска.

kirill_rrr ★★★★★
()
Ответ на: комментарий от kirill_rrr

«кто то» бывает у бэта-тестеров.

Да не, у меня вот как-то раз емакс сожрал 40 гигов из 64. Типичная ситуация в лялексе.

Причём кто вообще сказал, что течная хрень не нужна и её можно просто так убивать не нажав Ctrl-S пальцами пользователя?

Ну, ты выключи у себя OOM и он не будет ничего убивать. Просто при попытке записать страницу следующая прога получит sigsegv лол.

Хотя мне вот интересно. А какой у тебя план-то, если какая-то прога сожрёт память и своп в придачу, заодно долбя диском как будто она диджей на спидах, вызывая у тебя чудовищный 12309?

Ну так а почему он не сдох через 5 лет на очередной запаковке бэкапа (а у меня там были очень упоротые алгоритмы с запковкой в .7z в /tmp с последующей отправкой на малину через ssh) при одновременной пересборке мира, когда на соседнем столе я забыл закрыть десяток окон с книжками, сайтами и документиками, а сам рубился в каких нибудь героев в виртуалке?

Потому что он сдох когда ты играл в говноигру. Ты пытаешься делать какие-то выводы, имея sample size 1. Так не делают, чувак. Я вот так могу сказать, что все пользователи ЛОРа по имени Кирилл напрочь тупые, потому что ты тут даже не пытаешься отличиться интеллектом. Но это ведь неправда, так?*

  • На самом деле, я тут знаю пару нормальных Кириллов. Но своего ребёнка я Кириллом не назову. Так себе имя.
hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от u5er

Наверное в /var/run… не ну ты можешь в тмп еще базы данных хранить, ключ от биткоин кошелька, это твое личное право совершать глупости.

noc101
()
Ответ на: комментарий от urxvt

Нет, в традиционном смысле, файлом не считается. ФС множество множеств и есть наверное исключения. Но если говорить про EXT4 то нет, это не будет файлом. Но это может быть какимто ресурсом, сокетом и тп.

noc101
()
Ответ на: комментарий от noc101

Ты вот опять пытаешься развести клоунаду. Пид файл - это как раз то, что отлично попадает под понятие временный файл. Он хранит полезную информацию только на время работы, а ключ от кошелька всё же предполагает долгосрочное хранение.

В любом случае, пример я тебе привёл.

u5er
()
Ответ на: комментарий от kirill_rrr

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

noc101
()

tmpfs еще ладно, но удалять файлы по таймеру - бред.

voltmod ★★
()
Ответ на: комментарий от u5er

Я пытаюсь указать, что ты глупости говоришь. PID файлы следует хранить в run каталоге, в tmp ему нечего делать. run и так является tmpfs, которая специально выделена для хранения Хранить PID файлы вне каталога run небезопасно и не рекомендуется.

Твой пример это просто глупость. Все программы, написанные руками программистов, хранят PID в run.

noc101
()
Ответ на: комментарий от noc101

Все программы, написанные руками программистов, хранят PID в run.

4.2

$ ls -la /tmp/1000-runtime-dir
итого 4
drwx------ 7 u5er u5er 160 июн  6 13:06 .
drwxrwxrwt 9 root root 340 июн  7 00:06 ..
drwx------ 2 u5er u5er  60 июн  6 13:06 at-spi
drwx------ 3 u5er u5er  60 июн  6 13:06 dbus-1
drwx------ 2 u5er u5er  40 июн  6 13:07 geany
drwx------ 2 u5er u5er 100 июн  6 11:40 i3
drwx------ 2 u5er u5er  40 июн  6 11:40 pulse
-rw------- 1 u5er u5er   4 июн  6 11:40 rofi.pid

u5er
()
Последнее исправление: u5er (всего исправлений: 1)
Ответ на: комментарий от piyavking

Ох…

# du -sh /var/cache                 
10.9G	/var/cache

Понимаю, что это не совсем стандартный случай (большая часть это /var/cache/pbuilder), но всё же «точно не надо на диске держать» это слишком категоричное утверждение.

TeopeTuK ★★★★★
()
Последнее исправление: TeopeTuK (всего исправлений: 1)
Ответ на: комментарий от urxvt

четко обозначено когда файлы пропадают.

Я бы не сказал что «на усмотрение админа, рекомендуется при перезагрузке» - это чётко.

Gentooshnik ★★★★★
()
Ответ на: комментарий от kirill_rrr

Да, если речь о временных файлах, то скорее всего программа его закрывать не будет, и он останется как минимум в кэшах в оперативке, даже если файл unlink’нется уборщиком /tmp.

А кэши (которые софт может закрывать и которые должны переживать перезагрузку) надо хранить в /var/cache/ за уборку которого отвечает сам софт.

ИХМО самый большой бред который intelfx пытается протолкнуть в этом треде - что временные файлы - это тоже кэш.

Gentooshnik ★★★★★
()
Ответ на: комментарий от piyavking

Не только /tmp и /var/tmp очень полезно упихать в tmpfs, а и /var/backups…

Вы, случайно, не в СДЕК работаете?

Gentooshnik ★★★★★
()
Последнее исправление: Gentooshnik (всего исправлений: 1)
Ответ на: комментарий от Gentooshnik

Я бы не сказал что «на усмотрение админа, рекомендуется при перезагрузке» - это чётко.

Где ты там нашел «на усмотрение админа»? Я четко вижу — в момент завершения программы. В смысле, не раньше. Можно позже. Можно и никогда.

urxvt ★★★★★
()
Ответ на: комментарий от u5er

Ну такие же как и ты пишут программы. ТМП не для Пидов и точка. Если ты туда скинешь ключ от кошелька, это значит, что Темпы станут хранилищем ключей. Почитай ты уже наконецто где надо хранить Пиды, ну хватит тебе позорится.

noc101
()

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

bernd ★★★★★
()
Последнее исправление: bernd (всего исправлений: 1)
Ответ на: комментарий от urxvt

А в каких еще дистрах такое есть?

В редхатофедорах давно уже есть. Я даже удивился, что в дебиане не было.

ivanov17
()
Ответ на: комментарий от PPP328

systemd срет ...

можно подумать что ей привыкать это делать?! :о)

sunjob ★★★★
()
Последнее исправление: sunjob (всего исправлений: 1)

вот теперь будет извращаться с тем куда и где хронить временные данные! а чЁ, молотцы?! си-де рулит!

пожаловался на проблему несоответствия тогдашней реализации /var/tmp в Debian тому, как работает systemd

ну бред же?! :о)

sunjob ★★★★
()
Ответ на: комментарий от intelfx

для них уже сделано исключение

а давайте еще исключение для исключений сделаем! а потом подумаем, может накинем еще парочку рекурсий?! :о)

sunjob ★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.