Startseite : Infos : Infotexte : Usenet : INN wiederherstellen

Wiederherstellung des INN

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.

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/*

Hinweise

Es sollte damit gerechnet werden, daß ein Absturz einige Dateien in Mitleidenschaft ziehen kann, die 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, daß man nach vielen Stunden makehistory immer noch nicht weiter ist als zu Anfang ...