Автор Тема: /var на десктопе с systemd  (Прочитано 2229 раз)

Оффлайн squire

  • Завсегдатай
  • *
  • Сообщений: 1 609
/var на десктопе с systemd
« : 27.12.2014 20:36:48 »
В продолжение темы http://forum.altlinux.org/index.php/topic,77.msg243120.html#msg243120
Меня конкретно интересует выделение /var на десктопе.
Если не делать периодически apt-get clean, то размер /var на моей машине вырастал до 6 Гб. Там было отличное руководство с картинками.
Основное-то не в картинках, а в размерах отдельных ФС и в их нужности или ненужности в данной конкретной конфигурации. /var, на самом деле, не самая простая тема. Во-первых, моё мнение - /var должен быть отдельный не менее категорически, чем /home, так как там масса постоянно открытых и изменяющихся файлов, например, /var/log. Что касается переполнения, которые чистит apt-get clean, это /var/cache/apt/archives/*. Есть ещё пара каталогов /var/lib и /var/ftp, которые могут иметь, а могут и не иметь критичное значение на десктопе. То есть, во многих случаях, /var полезно ещё и дробить. На десктопе показательный пример найти сложно
Провел некоторые исследования распухания /var. Система KDesktop 7.0.3-i586. /var изначально в /.
23.12.2014
# du -a --max-depth=1 /var | sort -h
0       /var/avahi
0       /var/lock
0       /var/mail
4,0K    /var/adm
4,0K    /var/db
4,0K    /var/empty
4,0K    /var/local
4,0K    /var/nis
4,0K    /var/nobody
4,0K    /var/opt
4,0K    /var/preserve
4,0K    /var/yp
32K     /var/resolv
3,0M    /var/run
59M     /var/spool
176M    /var/lib
735M    /var/tmp
1,1G    /var/cache
1,1G    /var/log
3,1G    /var
Наибольший размер имеют /var/cache, в котором apt/archives занимает бóльшую часть
и /var/log, бóльшую часть занимает journal.
23.12.2014
# du -sb /var/log/journal
1162358784      /var/log/journal

24.12.2014
# du -sb /var/log/journal
1163145216      /var/log/journal
Увеличение на 768 кб

25.12.2014
# du -sb /var/log/journal
1163849728      /var/log/journal
Увеличение на 688 кб

26.12.2014
# du -sb /var/log/journal
1164640256      /var/log/journal
Увеличение на 772 кб
Получается, при каждой загрузке системы файл журнала увеличивается приближенно на 700 кб.
Причем начало журнала датируется 18 июля 2013 года, время установки системы.
Ну и зачем мне лог за 18 июля прошлого года?
В гугле накопал, что по умолчанию размер файла логов ограничен в 10% от размера файловой системы, где он расположен. Т.е, если /var не вынесен на отдельный раздел, а размер / при установке был определен в 20 Гб, то журнал будет пухнуть до 2 Гб.
Смотрим конфигуратор журнала.
# cat /etc/systemd/journald.conf
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# See journald.conf(5) for details

[Journal]
#Storage=auto
#Compress=yes
#Seal=yes
#SplitMode=login
#SyncIntervalSec=5m
#RateLimitInterval=10s
#RateLimitBurst=200
#SystemMaxUse=
#SystemKeepFree=
#SystemMaxFileSize=
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=
#MaxRetentionSec=
#MaxFileSec=1month
#ForwardToSyslog=yes
#ForwardToKMsg=no
#ForwardToConsole=no
#TTYPath=/dev/console
#MaxLevelStore=debug
#MaxLevelSyslog=debug
#MaxLevelKMsg=notice
#MaxLevelConsole=info
Параметр SystemMaxUse= закомментирован, значит значение по умолчанию.
Правим.
...
#RateLimitBurst=200
SystemMaxUse=50M
#SystemKeepFree=
...
После перезагрузки
# du -sb /var/log/journal
55230464        /var/log/journal
И журнал начинается с 3.12.2014
# journalctl
-- Logs begin at Ср 2014-03-12 17:55:32 YEKT, end at Пт 2014-12-26 13:37:27 YEKT. --
Наверно, можно уменьшить размер лога и до 20 Мб, лог будет приближенно за неделю.

# du -a --max-depth=1 /var | sort -h
0       /var/avahi
0       /var/lock
0       /var/mail
4,0K    /var/adm
4,0K    /var/db
4,0K    /var/empty
4,0K    /var/local
4,0K    /var/nis
4,0K    /var/nobody
4,0K    /var/opt
4,0K    /var/preserve
4,0K    /var/yp
32K     /var/resolv
3,0M    /var/run
58M     /var/log
59M     /var/spool
176M    /var/lib
735M    /var/tmp
1,2G    /var/cache
2,2G    /var
Остался /var/cache с архивом apt'a.
# du -sh /var/cache/apt/archives
1,1G    /var/cache/apt/archives

Вот за этим надо следить, потому что этот каталог может распухать до огромных размеров, если не делать периодически apt-get clean. К примеру, я устанавливал KDesktop 7 с релиз-кандидата. До сегодняшнего времени обновлений было очень много, некоторые пакеты, например, KDE или LO обновлялись несколько раз. Соответственно, /var/cache распухал на моей машине до 6 ГБ.
Как вариант, засунуть apt-get clean в cron, например в /etc/cron.monthly, чтоб он каждый месяц чистил архив apt'a?
Или засунуть /var/cache в /home, пусть там пухнет?
Отсюда вопрос об оптимальном размере /var при вынесении его на отдельный раздел при установке дистрибутива. Какие есть мнения?

Одно уже есть.
А вот тут подскажет только личный опыт, к сожалению. У меня так:
/dev/sda2       4,0G  1,6G  2,2G  43% /
/dev/sda1        69M   39M   27M  60% /boot
/dev/sda5        20G   17G  2,1G  89% /home
/dev/sda8        15G  8,6G  5,2G  63% /usr
/dev/sda6       4,9G  3,8G  796M  83% /var
/dev/sda11       69G   57G  8,5G  88% /var/ftp
/dev/sda9        29G   23G  4,9G  83% /home/asy/RPM

Кто её читает ?
Кто спрашивает. Думаешь, впервые вопрос такой ? А так хоть было бы, куда послать. В общем, может быть, в праздники начну сочинять. Надо только продумать иерархию, чтобы разделить разные мнения, так как, наверняка, будут и противоположные.

Есть предложение обсудить этот вопрос здесь, а результат — на wiki.

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
Re: /var на десктопе с systemd
« Ответ #1 : 27.12.2014 21:07:59 »
Вот за этим надо следить, потому что этот каталог может распухать до огромных размеров, если не делать периодически apt-get clean. К примеру, я устанавливал KDesktop 7 с релиз-кандидата. До сегодняшнего времени обновлений было очень много, некоторые пакеты, например, KDE или LO обновлялись несколько раз. Соответственно, /var/cache распухал на моей машине до 6 ГБ.
Соглашусь.
Хотя сам периодически делаю вручную apt-get clean.
Но полагаю, что не каждый так делает, неплохо бы вообще штатно что-то придумать, чтоб следило за размером кэша apt.

Про логи systemd, меня пока не коснулась проблема, но 1-2 Гб это сильно...
Сноси Винду, переходи на Линукс ! :)

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 246
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: /var на десктопе с systemd
« Ответ #2 : 28.12.2014 09:35:52 »
Наверное лучше
apt-get autoclean
что-бы в случае чего лиший раз не качать текущие пакеты из интернета.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: /var на десктопе с systemd
« Ответ #3 : 29.12.2014 09:12:17 »
У меня /var на kdesktop6 заполнен на 2086Mb, а enp'овый XFCE с sysv на 1424Mb (/var/cache - 1229Mb).
/var/log на sysv копеечный: что-то около 33Mb.
Правда тут надо ещё про /var/cache/pepperflash не забывать: каждое обновление перечного флеша будет откусывать у /var ~57Mb, - пакет гугл-хромового браузера.
« Последнее редактирование: 29.12.2014 09:35:06 от Speccyfighter »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: /var на десктопе с systemd
« Ответ #4 : 30.12.2014 05:28:38 »
...
Если не делать периодически apt-get clean, то размер /var на моей машине вырастал до 6 Гб.
...
этот каталог может распухать до огромных размеров, если не делать периодически apt-get clean.
...
Как вариант, засунуть apt-get clean в cron, например в /etc/cron.monthly, чтоб он каждый месяц чистил архив apt'a?
...

Добавлю в эту кучу вариантов:

Выполнение условия:
- если /var/cache/apt/ более  2Gb, - выполнить 'apt-get clean'
- иначе выполнять 'apt-get autoclean'
# CACHE_APT_SIZE=$(du -smx /var/cache/apt/| \
> echo -e $(printf $(cut -d ' ' -f1))) && \
>   if (( $CACHE_APT_SIZE < 2048 )); \
>     then echo -e "/var/cache/apt/ менее 2Gb\nвыполнить\napt-get autoclean"; \
>     else echo -e "/var/cache/apt/ более 2Gb\nвыполнить\napt-get clean"; fi
/var/cache/apt/ менее 2Gb
выполнить
apt-get autoclean
В смысле:
#!/bin/bash
#
# full clean /var/cache/apt
# if size > 2Gb
# else 'apt-get autoclean'

CACHE_APT_SIZE=$(du -smx /var/cache/apt/|echo -e $(printf $(cut -d ' ' -f1)))

if (( $CACHE_APT_SIZE > 2048 ))
then apt-get clean
else apt-get autoclean
fi


Как вариант:
# alias apt-get='apt-get update && apt-get autoclean && echo && apt-get '


Основное-то не в картинках, а в размерах отдельных ФС и в их нужности или ненужности в данной конкретной конфигурации. /var, на самом деле, не самая простая тема. Во-первых, моё мнение - /var должен быть отдельный не менее категорически, чем /home, так как там масса постоянно открытых и изменяющихся файлов, например, /var/log. Что касается переполнения, которые чистит apt-get clean, это /var/cache/apt/archives/*. Есть ещё пара каталогов /var/lib и /var/ftp, которые могут иметь, а могут и не иметь критичное значение на десктопе. То есть, во многих случаях, /var полезно ещё и дробить. На десктопе показательный пример найти сложно

True
И всё зависит от конкретной ситуации.


И еще:

Выборка для 'rm -f' для удаления всех старых google-chrome*.rpm из кеша, кроме нового,
# ls -1t /var/cache/pepperflash/*.rpm| \
> tail -n $(( $(ls -1t /var/cache/pepperflash/*.rpm|wc -l)-1 ))

/var/cache/pepperflash/google-chrome-stable-39.0.2171.65-1.i386.rpm
/var/cache/pepperflash/google-chrome-stable-38.0.2125.104-1.i386.rpm
из всех
# ls -1t /var/cache/pepperflash/*.rpm

/var/cache/pepperflash/google-chrome-stable-39.0.2171.95-1.i386.rpm
/var/cache/pepperflash/google-chrome-stable-39.0.2171.65-1.i386.rpm
/var/cache/pepperflash/google-chrome-stable-38.0.2125.104-1.i386.rpm
где вот это
ls -1t /var/cache/pepperflash/*.rpm
напрашивается на переменную.
Выполнение должна предварять проверка:
если в листинге больше одного rpm, то выполнение продолжить
иначе - exit
# PEP_NUMBER=$(ls -1t /var/cache/pepperflash/*.rpm|wc -l) && \
   if (( $PEP_NUMBER > 1 )); \
     then echo "google-chrome-stable-*.rpm в кеше больше одного"; fi

google-chrome-stable-*.rpm в кеше больше одного
которую должна предварять ещё одна проверка:
# if [ -d /var/cache/pepperflash ]; \
 then echo "directory present: continue execution"; \
 else echo "directory not present: exit"; \
 fi

directory present
если каталог существует, продолжить выполнение;
иначе выход.

Это только заготовки и смахивает на огромную мусорку из полуфабрикатов.
В смысле подпереть скриптами и пусть чисткой кеша на автомате занимается сама система.
« Последнее редактирование: 30.12.2014 05:49:02 от Speccyfighter »

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 908
    • Домашняя страница
    • Email
Re: /var на десктопе с systemd
« Ответ #5 : 30.12.2014 07:19:02 »
Может, посмотреть в сторону BleachBit?
Андрей Черепанов (cas@)