| mechanical |
|
|
Темы:
16
Сообщения:
663
Участник с: 11 октября 2008
|
кто б еще придумал для этого способа с tmpfs фичу, чтоб после отработки пакмана в случае изменения базы, она сжималась и копировалась на винт в фоне |
| sunstroke |
|
|
Темы:
3
Сообщения:
625
Участник с: 17 сентября 2009
|
mechanicalТакое тоже возможно. Используется взаимодействие с демоном gamin (средством мониторинга изменений файловой системы). Испытаю на себе. Если все получится, как задумано, выложу новый вариант скрипта. |
| zookeeper |
|
|
Темы:
37
Сообщения:
193
Участник с: 21 ноября 2010
|
угу точно, забыл совсем, спасибо, теперь спокойно в демоны добавлю |
| sunstroke |
|
|
Темы:
3
Сообщения:
625
Участник с: 17 сентября 2009
|
Работа на ошибками. :) Обнаружил некритичную ошибку в логике работы скрипта. Суть в следующем: Если вы использовали скрипт какое-то время. Затем на какое-то время отключили его и сделали, чтобы все было “классически”. Затем стали опять использовать, то происходит следующее - база в папке пакмана изменилась, а архив базы, созданный скриптом, остался старый. Скрипт же при инициализации монтирует базу пакмана в память именно из архива. Поэтому может случиться, что архив серьезно устарел и система будет предлагать вам обновить то, что вы и так уже обновили. В принципе, если вы используете скрипт постоянно, то такой проблемы не случится (архив всегда будет свежий). В остальных случаях вам нужно будет использовать другой вариант скрипта: #!/bin/bash
# sourcing our current rc.conf requires this to be a bash script
. /etc/rc.conf
. /etc/rc.d/functions
tmpfs_size=100m
pacman_archive=/var/lib/pacman.tar.gz
# Проверяем наличие папки и если нет, создаем
[ -d /var/lib/pacman ] || mkdir /var/lib/pacman
# Проверяем смонтирована ли уже папка
mounted=$(grep -c /var/lib/pacman /proc/mounts)
case "$1" in
stop)
stat_busy "Flushing pacman database to disk"
# Если уже размонтирована, выходим
if [ $mounted = 0 ] ; then
stat_fail
else
mv -f $pacman_archive /var/lib/pacman.tar.gz.1 && \
tar -C / -czf $pacman_archive var/lib/pacman/ && \
umount /var/lib/pacman && \
rm -rf /var/lib/pacman && \
tar -C / -xzf $pacman_archive && \
rm_daemon pacman-tmpfs
stat_done
fi
;;
start)
stat_busy "Mounting pacman database to tmpfs"
# Если уже смонтирована, выходим
if [ $mounted -gt 0 ] ; then
stat_fail
else
tar -C / -czf $pacman_archive var/lib/pacman/ && \
mount -t tmpfs tmpfs -o nodev,nosuid,size=$tmpfs_size /var/lib/pacman && \
tar -C / -xzf $pacman_archive && \
add_daemon pacman-tmpfs
stat_done
fi
;;
restart)
$0 stop
sleep 10
$0 start
;;
*)
echo "usage: $0 {start|stop|restart}"
esac |
| vadik |
|
|
Темы:
55
Сообщения:
5395
Участник с: 17 августа 2009
|
SunStroke, предлагаю один из вариантов, как сделать первый скрипт более быстрым и более правильным. В каталоге /var/lib/pacman находятся индексы репозиториев имя_репозитория.db.tar.gz, можно при первом запуске скрипта посчитать контрольные суммы этих файлов и добавить эти суммы, например, в архив /var/lib/pacman.tar.gz. При всех последующих запусках просто проверять md5 файлов из /var/lib/pacman и сравнивать их с md5-суммами одноименных индексов в архиве. При несовпадении - обновлять архив (можно даже не полностью). |
| sunstroke |
|
|
Темы:
3
Сообщения:
625
Участник с: 17 сентября 2009
|
vadikUPD. Удалил прежние свои размышления в этом посте (показалось много бреда). Сорри. :) Итак, первое что приходит на ум при вопросе оптимизации, это делать как можно больше операций в оперативке. Без использования винта. Понятно, что умная дисковая подсистема может закэшировать процесс работы и потом все скинуть на диск. Но это не гарантировано. К тому же, думаю, что напрямую работать в оперативке все равно быстрее. Вообщем есть над чем подумать/потрудиться. :) Ну и плюс, как обещал выше попробую прикрутить мониторинг изменения базы в памяти и автоматическое создание архива на диске. Тогда становятся не страшны аварийные выключения питания - вероятность того что в архиве будет актуальная база (и она будет соответствовать состоянию системы) приблизится к 100 процентам. Хотя это и сейчас не вызывает больших неудобств - pacman -Syuf после аварии с питанием приводит базу (и систему, если ставились обновления) в норму. |
| mechanical |
|
|
Темы:
16
Сообщения:
663
Участник с: 11 октября 2008
|
а таки новый пакман шустрее |
| vdemin |
|
Темы:
54
Сообщения:
1615
Участник с: 24 января 2009
|
Ага, просто реактивный |
| anthonio |
|
|
Темы:
18
Сообщения:
378
Участник с: 11 августа 2009
|
бывает, помогает просто:pacman -Syy |