Leider kommt es immer mal wieder dazu, dass nach einem Crash o.ä. die history und/oder overview database vom Newsserver dahin ist. Das äussert sich dann z.B. in Fehlermeldungen wie diesen:
innd: tradspool: could not open [...] File exists
innd: SERVER cant store article: File exists
Dann sollte man die Datenbanken neu aufbauen. Die Erfahrung hat gezeigt, dass es sinnvoll ist, die Datenbanken komplett neu aufbauen zu lassen, da sonst weitere Inkonsistenzen möglich sind. Dazu verwende ich das nachfolgende Verfahren, auch wenn dies vielleicht overkill ist. Ich übernehme natürlich keine Garantie für die Funktionalität (bei mir hat's bisher immer geklappt) oder dass es nicht schon Tools gibt, die das einfacher erledigen.
Das hier gesagte gilt für den Newsserver 'inn' unter Linux. Achtung: im makehistory
bzw. makedbz
vom inn 2.3.2 sind bugs; Nutzern dieser Version empfehle ich ein update auf Version 2.3.4 (Version 2.3.3 hat einen Bug in Verbindung mit PERL)!
Desweiteren gehe ich davon aus, dass alle notwendigen Dateien zum Newsserver im home-Verzeichnis des Users 'news' liegen (also ~news) - gegebenenfalls muss man halt etwas anpassen.
Hier also jetzt meine Vorgehensweise - möge dieses HOWTO anderen Nerven und Zeit sparen:
/etc/init.d/inn stop
oder su -c "rc.news stop" news
badblocks -sv /dev/$DRIVE
fsck /dev/$VOLUME
(ggf. mit -C0 oder -f oder weiterer Parameter) bzw. xfs_check /dev/$VOLUME
. Achtung: Das Volume muss dazu natürlich unmounted und danach remounted werden!su - news
(falls man remote administriert, empfiehlt sich, das in einer "screen"-session zu machen)mv ~/spool/overview ~/spool/overview.`date -I`
mkdir ~/spool/overview
~/db/history
und ~/db/history.*
)cd ~/db && touch history && makedbz -i
mv history.n.dir history.dir && mv history.n.index history.index
sowie mv history.n.hash history.hash
oder mv history.n.pag history.pag
makehistory && makedbz
- das kann schnell mal eine halbe Stunde oder länger dauern!Duplicate message-id "[...]" in history text
untersuchen]mv history.n.dir history.dir && mv history.n.index history.index
sowie mv history.n.hash history.hash
oder mv history.n.pag history.pag
makehistory -O -x
(grosses "O" wie "Omega"!) - auch hier ist wieder Geduld angesagt ... ca. doppelt so lange wie Punkt 11rc.news
for NEWSGROUP in `cat ~/db/active | cut -f 1 -d " "`; do ctlinnd renumber $NEWSGROUP; done
~/receive.$SERVERNAME
. Erkennbar sind die Dateien daran, dass es je eine pro NewsGroup gibt, sie auch so heisst wie die Gruppe, ca. 34 Byte gross ist und einen Inhalt ähnlich "got 0 offered 0 sent 0 rejected 0
" haben sollte. Die Zeit des "last fetched" entspricht einfach dem Datum der Datei selber, so dass man dies einfach mit touch
ändern kann. In o.g. Beispiel wäre das also im Superverzeichnis der receive's möglich mit folgendem (statt "*" kann man auch einen entsprechende Gruppenmaske einsetzen - z.B. tui-net.*):for NEWSSERVER in `ls receive.* -1d`; do touch -t 197001010000 $NEWSSERVER/*; done
expire.ctl
).news.err
im Auge behalten: tail -f ~/log/news.err
news.daily
ausfüren: news.daily delayrm expireover lowmark
(bitte hier die eigenen Parameter verwenden!)
If you have a problem, call your system-administrator. If you are the system-administrator, you have a problem. |
last update: 2005-09-22 by Martin 'Funny' Heise |