Leider erweisen sich die 2.x-Versionen des INN unterhalb von 2.4.x als deutlich empfindlicher gegenüber Abstürzen, ja geradezu als Mimosen, die nach einer ungeplanten Beendigung oder einem Crash des Servers nach umfangreicheren Aufräumarbeiten verlangen, namentlich einer Neuerstellung der History und einem renumber.
Aktuelle Versionen hingegen - INN 2.4.0 wurde 2003 released - sind von diesem Problem nicht mehr betroffen. Dennoch: wenn ein INN mal crashed, ist es vielleicht gut, passende Scripts zur Hand zu haben.
Scripts
Matthias Andree hat dafür eine fertige
Scriptlösung,
die als Benutzer news
ausgeführt werden sollte:
#! /bin/sh
set -e
if test "x`id -un`" != xnews ; then
echo >&2 "$0 must be executed as user news"
exit 1
fi
eval `innconfval -s`
set -x
cd $PATHDB
ctlinnd throttle 'fixup' || :
ctlinnd reject 'fixup' || :
ctlinnd reload '' ''
if [ x"$OVMETHOD" = x"buffindexed" ] ; then
awk -F: '
/^[0-9]+:/ {
printf "dd if=/dev/zero bs=1024 of=\"%s\" count=%d\n", $2, $3
}' $PATHETC/buffindexed.conf \
| sh -x
fi
makehistory -b -e -f history.n -O -l 30000
awk 'NF == 2 { print }' < history >> history.n
makedbz -s `wc -l < history` -f history.n
for i in history.n* ; do
mv $i history${i##history.n}
done
ctlinnd reload all fixup
ctlinnd go fixup
ctlinnd renumber ''
echo "done."
Alternativ die
Lösung
von Sebastian Bork, die das Vorhandensein von sudo
und eine
entsprechende Konfiguration von /etc/sudoers
voraussetzt:
#!/bin/sh
/usr/local/news/bin/ctlinnd throttle Rebuilding databases.
sleep 5
rm -rf /var/spool/news/overview/*
rm -rf /var/spool/news/tradspool.map
/usr/local/news/bin/makehistory -b -f history.n -O -l 30000
cd /usr/local/news/db
awk 'NF == 2 { print }' < history >> history.n
/usr/local/news/bin/makedbz -s `wc -l < history` -f history.n
mv history.n history
mv history.n.dir history.dir
mv history.n.hash history.hash
mv history.n.index history.index
/usr/local/news/bin/ctlinnd reload all rebuild-newsspool
/usr/local/news/bin/ctlinnd go Rebuilding databases.
sleep 2
sudo /etc/init.d/inn2 restart
sleep 2
/usr/local/news/bin/ctlinnd renumber ''
mv /var/spool/news/incoming/bad/* /var/spool/news/incoming/
rm /var/spool/news/incoming/tmp/*
Bei dieser Lösung müssen ggf. die Pfade angepasst werden (bspw.
/usr/lib/news/bin/
statt wie hier /usr/local/news/bin/
).
Hinweise
Es sollte damit gerechnet werden, dass ein richtiger Absturz, ggf. im Zusammenhang mit einem Hardwareschaden, manche Dateien so in Mitleidenschaft ziehen kann, dass sie sich nicht mehr einlesen lassen, sondern dann ggf. gelöscht (oder zunächst einmal umbenannt) bzw. wiederhergestellt werden müssen.
Daher ist es nicht verkehrt, am Anfang den Lauf bspw. von makehistory
mittels strace
oder einem ähnlichen Tool zu verfolgen, um festzustellen,
ob es überhaupt arbeitet oder bereits beim Start hängenbleibt. Das
verhindert, dass man nach vielen Stunden makehistory
immer noch nicht
weiter ist als zu Anfang …
Lizenz
Dieser Inhalt ist unter der Creative Commons-Lizenz BY-NC-SA 4.0 DE lizenziert; er darf unter Namensnennung des Autors nicht-kommerziell weitergegeben und auch bearbeitet werden, soweit das neue Werk gleichfalls wieder dieser Creative-Commons-Lizenz unterliegt. Die Einzelheiten ergeben sich aus dem Lizenzvertrag.