ext3 et rpmdb

Top Page

Reply to this message
Author: Yves Martin
Date:  
To: guilde
Subject: ext3 et rpmdb
Bonjour,

Je suis confronté à un bug avec Mandriva (2008.1 x86_64 actuellement)
https://qa.mandriva.com/show_bug.cgi?id=32547 qui est particulière ardu.

Pour résumer, un système de fichiers ext3 créé en 2007 par l'installateur de
Mandriva 2007.0 avec un block size de 1024 et les options par défaut de l'époque
contient tout mon système / sauf /home et notamment /var/lib/rpm

Dans cette configuration, il suffit de faire les opérations suivantes pour
corrompre la base RPM:
# rm -f /var/lib/rpm/__db*
# rpm --rebuilddb
# rpm --verify --all
# rpm --verifydb
rpmdb: Page 159: bad page number 493
rpmdb: /var/lib/rpm/Sha1header: DB_VERIFY_BAD: Database verification failed
error: db4 error(-30975) from db->verify: DB_VERIFY_BAD: Database verification
failed
[ ... idem avec les autres fichiers ... ]

Les commandes rpm corrompent les fichiers (en mmap ?) et nécessite une
reconstruction des bases pour être à nouveau utilisable (très peu de temps...)

J'ai fait un reboot avec /forcefsck hier et je constate déjà sur mon système
"live" (certes après un suspend/resume):

# fsck.ext3 -n -f /dev/sda6
e2fsck 1.40.8 (13-Mar-2008)
Warning! /dev/sda6 is mounted.
Warning: skipping journal recovery because doing a read-only filesystem check.
Pass 1: Checking inodes, blocks, and sizes
Deleted inode 665617 has zero dtime. Fix? no
Inodes that were part of a corrupted orphan linked list found. Fix? no
Inode 848964 was part of the orphaned inode list. IGNORED.
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences: -(6795275--6795277) -(6795281--6795287) -6795299
-(6795301--6795302) -6795305 -6795313 -(6795693--6795707)
Fix? no
Inode bitmap differences: -665617 -848964
Fix? no
ROOT: ********** WARNING: Filesystem still has errors **********
ROOT: 271155/1222656 files (5.1% non-contiguous), 8009015/9775520 blocks

La version de rpm utilisé est (rpm-4.4.2.3-0.rc1.7mnb1.x86_64.rpm):
# rpm --version
RPM version 4.4.2.3-rc1

Évidemment les solutions proposées ne m'intéresse pas vraiment: réinstaller /
avec la dernière Mandriva qui utilise un block size de 4096, ext3 en loopback
sur /var/lib/rpm (qui fonctionne bien mais qui pose des problèmes lors des
upgrade)

Mes questions:
- est-ce normal de voir s'accumuler des "block/inode bitmap differences" sur un
ext3 ?
- est-ce un problème RPM ou ext3 ? quel outil/cas test mettre en oeuvre pour
cibler le problème ?

Mon objectif étant vraiment de réparer (patch dans rpm ou tune2fs)...

Merci d'avance pour votre aide
--
Yves Martin