Neuerstellen der Struktur der reiserfs-Partition ohne freien Speicherplatz

675
Vi.
$ dd if=/dev/zero of=qqq bs=1M count=40 $ mkfs.reiserfs -f qqq ReiserFS is successfully created on qqq. $ mountlo-0.6 qqq ~/mnt/tmp $ cat /dev/frandom > ~/mnt/tmp/qqq cat: write error: No space left on device $ df ~/mnt/tmp/ Filesystem 1K-blocks Used Available Use% Mounted on mountlo#qqq 40952 40952 0 100% /home/vi/mnt/tmp $ killall mountlo-0.6  $ reiserfsck --rebuild-tree qqq ####### Pass 1 ####### Looking for allocable blocks .. finished 0%....20%....40%....60%.Not enough allocable blocks, checking bitmap...there are 1 allocable blocks, btw  out of disk space Aborted 

Wie kann ich das Dateisystem jetzt wiederherstellen? Um den Baum wieder aufzubauen, muss ich die Partition vergrößern. Um die Partition zu vergrößern, muss ich sie sauber machen. Um sauber zu machen, muss ich reiserfsck verwenden; und schließlich bietet reiserfsck an, den Baum neu aufzubauen.

Wie kann man den Baum auf einem anderen Gerät wiederherstellen (oder einfach alle Daten auf einer anderen Partition speichern)?

1

1 Antwort auf die Frage

2
epicDistortion

Sie brauchen mehr Platz zum Arbeiten. Im Fall Ihrer qqq-Datei können Sie sie mit dd anhängen. Sobald Sie mehr Speicherplatz zur Verfügung haben, können Sie den Superblock des Dateisystems neu erstellen, der erkennt, dass die Blockanzahl des Dateisystems falsch ist. Mit dem neuen Superblock können Sie den Baum neu erstellen. Angenommen, Ihre Datei ist noch nicht bereitgestellt:

$ dd if=/dev/zero bs=1M count=10 >> qqq $ reiserfsck --rebuild-sb qqq # ... snip Did you use resizer(y/n)[n]: n rebuild-sb: wrong block count occured (10240), fixed (12800) rebuild-sb: wrong tree height occured (65535), zeroed Reiserfs super block in block 16 on 0x0 of format 3.6 with standard journal Count of blocks on the device: 12800 # ... snip Fs state field: 0xfa03: FATAL corruptions exist. some corruptions exist. sb_version: 2 inode generation number: 7 UUID: 04993a54-22cc-4bb3-a367-53986e94a6e0 LABEL: Set flags in SB: ATTRIBUTES CLEAN Is this ok ? (y/n)[n]: y The fs may still be unconsistent. Run reiserfsck --check.  $ reiserfsck --rebuild-tree qqq # ... snip Pass 0: ####### Pass 0 ####### Loading on-disk bitmap .. ok, 12800 blocks marked used Skipping 8211 blocks (super block, journal, bitmaps) 4589 blocks will be read 0%....20%....40%....60%....80%....100% left 0, 4589 /sec 2 directory entries were hashed with "r5" hash. "r5" hash is selected Flushing..finished Read blocks (but not data blocks) 4589 Leaves among those 3 Objectids found 4  Pass 1 (will try to insert 3 leaves): ####### Pass 1 ####### Looking for allocable blocks .. finished 0%....20%....40%....60%....80%....100% left 0, 0 /sec Flushing..finished 3 leaves read 3 inserted ####### Pass 2 ####### Flushing..finished Pass 3 (semantic): ####### Pass 3 ######### Flushing..finished Files found: 1 Directories found: 3 Pass 3a (looking for lost dir/files): ####### Pass 3a (lost+found pass) ######### Looking for lost directories: Flushing..finishede 3, 0 /sec  Pass 4 - finished done 3, 0 /sec Flushing..finished Syncing..finished ########### reiserfsck finished at Thu Sep 4 13:02:07 2014 ########### $  

Ich habe dies auf einem alten RedHat EL4-System (modifizierter Kernel zur Unterstützung von Reiserfs) getestet, und das Endergebnis war, dass die qqq-Datei bereitstellbar war und den freien Speicherplatz zeigte.

$ sudo mount -o loop -t reiserfs qqq mnt $ df -h # ... snip /home/areid/qqq 50M 40M 10M 81% /home/areid/mnt 
`--Rebuild-sb` /` --rebuld-tree` kann also auch Dateisysteme wachsen lassen? Vi. vor 9 Jahren 0
Es scheint die einzige Möglichkeit zu sein, nach einem fehlgeschlagenen --rebuild-tree zu wachsen. resize_reiserfs überprüft, ob das Dateisystem sauber ist, und geht nicht weiter, wenn der Wiederherstellungsbaum fehlgeschlagen ist. epicDistortion vor 9 Jahren 0