Восстановление дерева раздела reiserfs без свободного места

633
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 

Как восстановить файловую систему сейчас? Для того, чтобы восстановить дерево, мне нужно увеличить раздел. Для увеличения раздела мне нужно сделать его чистым. Для очистки мне нужно использовать reiserfsck; и, наконец, reiserfsck предлагает восстановить дерево.

Как перестроить дерево на другое устройство (или просто сохранить все данные в другом разделе)?

1

1 ответ на вопрос

2
epicDistortion

Вам нужно больше места для работы. В случае вашего файла qqq вы можете добавить к нему dd. Как только у вас будет больше свободного места для работы, перестройте суперблок файловой системы, который обнаружит, что количество блоков файловой системы неверно. С новым написанным суперблоком вы можете восстановить дерево. Предполагая, что ваш файл все еще не смонтирован:

$ 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 ########### $  

Я проверил это на старой системе RedHat EL4 (модифицированное ядро ​​для поддержки reiserfs), и в результате я установил файл qqq и показал свободное место.

$ 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` также может развивать файловые системы? Vi. 9 лет назад 0
Кажется, это единственный способ вырастить его после неудачного --rebuild-tree. resize_reiserfs проверяет, что файловая система чиста и не будет двигаться вперед, если дерево перестроения не удалось. epicDistortion 9 лет назад 0

Похожие вопросы