SharedTmpfsMaintainance

Материал из ALT Linux Wiki

(Различия между версиями)
Перейти к: навигация, поиск
 
(2 промежуточные версии не показаны)
Строка 46: Строка 46:
=== Создайте единый скрипт очистки ===
=== Создайте единый скрипт очистки ===
-
Например, скрипт {{path|~/bin/CLEANUP}}
+
Например, скрипт {{path|~/bin/CLEANUP}}.
-
Впишите туда команды очистки с учетом того, как вы используете $TMP  
+
 
 +
Впишите туда команды очистки с учетом того, как вы используете $TMP.
 +
К примеру, мой скрипт:
<source lang="bash">
<source lang="bash">
#!/bin/sh
#!/bin/sh
Строка 71: Строка 73:
rm -rf $TMP/rpm-tmp.?????
rm -rf $TMP/rpm-tmp.?????
rm -rf $TMP/src-rpm-unpacked.????????
rm -rf $TMP/src-rpm-unpacked.????????
 +
</source>
 +
 +
Или мой {{path|~/bin/hsh-rmchroots}} (mike@):
 +
<source lang="bash">
 +
#!/bin/sh
 +
exec 2>/dev/null
 +
for i in $TMP/*/chroot/..; do hsh-rmchroot $i; done
 +
for i in $TMP/*/cache; do rm -rf $i; done
</source>
</source>
Строка 82: Строка 92:
  $ HUGE_BUILD -j 16; CLEANUP
  $ HUGE_BUILD -j 16; CLEANUP
чтобы память была освобождена сразу же, как сборка завершится.
чтобы память была освобождена сразу же, как сборка завершится.
 +
 +
=== pam_pegasus ===
 +
 +
на бездисковых сборочных узлах работает
 +
[http://git.altlinux.org/people/ldv/packages/?p=pam_pegasus.git pam_pegasus]

Текущая версия на 22:36, 16 декабря 2016


Содержание

Советы, как не захламлять tmpfs общего пользования

Собирайте в tmpfs; храните результаты сборки на диске.

к примеру, пусть вы используете по умолчанию $TMP/hasher.

$ cat .hasher/config 
workdir=$TMP/hasher

сделайте ~/hasher постоянным хранилищем для $TMP/hasher. Для этого впишите в ~/.bashrc, ~/.zshrc

mkdir -p $TMP/hasher; ln -sf ~/hasher/repo $TMP/hasher

теперь сборка будет происходить в $TMP/hasher. а ее результат будет сохраняться в ~/hasher/repo.

Проверяйте размер $TMP по завершении работы с удаленной машиной

Чтобы не проверять руками, впишите проверки в скрипты

~/.zlogout

clear
tmpusage=`du -sh $TMP 2>/dev/null | awk '{print $1}'`
if [ "$tmpusage" != 0 ]; then
        ls $TMP
        echo tmp usage on `hostname`:
        du -sh $TMP
fi
setopt norcs

~/.bash_logout

# ~/.bash_logout
 
clear
tmpusage=`du -sh $TMP 2>/dev/null | awk '{print $1}'`
if [ "$tmpusage" != 0 ]; then
        ls $TMP
        echo tmp usage on `hostname`:
        du -sh $TMP
fi

Создайте единый скрипт очистки

Например, скрипт ~/bin/CLEANUP.

Впишите туда команды очистки с учетом того, как вы используете $TMP. К примеру, мой скрипт:

#!/bin/sh
for hasherdir in $TMP/hasher*; do
    if [ -d "$hasherdir" ]; then
            set -x
            [ -d "$hasherdir/chroot" ] && hsh-rmchroot $hasherdir
            set +x
            rm -rf "$hasherdir"
        fi
    done
done
 
# Собирайте в tmpfs; храните результаты сборки на диске.
mkdir -p $TMP/hasher
ln -s ~/hasher/repo $TMP/hasher/
 
if [ -d ~/LP ]; then
    rm -rf ~/LP/noarch
    rm -rf ~/LP/x86_64
fi
 
rm -rf $TMP/rpm-tmp.?????
rm -rf $TMP/src-rpm-unpacked.????????

Или мой ~/bin/hsh-rmchroots (mike@):

#!/bin/sh
exec 2>/dev/null
for i in $TMP/*/chroot/..; do hsh-rmchroot $i; done
for i in $TMP/*/cache; do rm -rf $i; done

Добавляйте вызов CLEANUP в конце тяжелых вызовов

К примеру, запустить на ночь тяжелую сборку на 16 hasher'ов

$ HUGE_BUILD -j 16 

и уйти спать неправильно, так как тяжелая сборка завершится за 2 часа, а использованные папки hasher? будут захламлять tmpfs от полусуток. Правильно запускать так:

$ HUGE_BUILD -j 16; CLEANUP

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

pam_pegasus

на бездисковых сборочных узлах работает pam_pegasus

 
Личные инструменты