[NCLUG] (LONG) Superblocks (WAS Re: Hard disk failure)
BluKnight
mec at dotorg.org
Wed May 16 09:58:07 MDT 2001
Actually, there are multiple backup superblocks on a disk (scattered
roughly every inode group)... [1] You might try some of the others.
Fortunately, mke2fs does support the -n flag like Solaris does[2], so you
can simulate creating the filesystem and use that to show you where the bad
blocks are... However.... The following was run on one of my spare hard
drives: (sysinfo: PIII running Debian/Unstable, kernel 2.4.4)
alexis:/export# mke2fs /dev/hdf1
mke2fs 1.19, 13-Jul-2000 for EXT2 FS 0.5b, 95/08/09
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
2448000 inodes, 4887784 blocks
244389 blocks (5.00%) reserved for the super user
First data block=0
150 block groups
32768 blocks per group, 32768 fragments per group
16320 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632,
2654208,
4096000
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
This included the sparse superblock option. If I run it with no sparse
superblocks (-O none) I get:
alexis:/export# mke2fs -O none /dev/hdf1
mke2fs 1.19, 13-Jul-2000 for EXT2 FS 0.5b, 95/08/09
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
2448000 inodes, 4887784 blocks
244389 blocks (5.00%) reserved for the super user
First data block=0
150 block groups
32768 blocks per group, 32768 fragments per group
16320 inodes per group
Superblock backups stored on blocks:
32768, 65536, 98304, 131072, 163840, 196608, 229376, 262144, 294912,
327680, 360448, 393216, 425984, 458752, 491520, 524288, 557056,
589824,
622592, 655360, 688128, 720896, 753664, 786432, 819200, 851968,
884736,
917504, 950272, 983040, 1015808, 1048576, 1081344, 1114112, 1146880,
1179648, 1212416, 1245184, 1277952, 1310720, 1343488, 1376256,
1409024,
1441792, 1474560, 1507328, 1540096, 1572864, 1605632, 1638400,
1671168,
1703936, 1736704, 1769472, 1802240, 1835008, 1867776, 1900544,
1933312,
1966080, 1998848, 2031616, 2064384, 2097152, 2129920, 2162688,
2195456,
2228224, 2260992, 2293760, 2326528, 2359296, 2392064, 2424832,
2457600,
2490368, 2523136, 2555904, 2588672, 2621440, 2654208, 2686976,
2719744,
2752512, 2785280, 2818048, 2850816, 2883584, 2916352, 2949120,
2981888,
3014656, 3047424, 3080192, 3112960, 3145728, 3178496, 3211264,
3244032,
3276800, 3309568, 3342336, 3375104, 3407872, 3440640, 3473408,
3506176,
3538944, 3571712, 3604480, 3637248, 3670016, 3702784, 3735552,
3768320,
3801088, 3833856, 3866624, 3899392, 3932160, 3964928, 3997696,
4030464,
4063232, 4096000, 4128768, 4161536, 4194304, 4227072, 4259840,
4292608,
4325376, 4358144, 4390912, 4423680, 4456448, 4489216, 4521984,
4554752,
4587520, 4620288, 4653056, 4685824, 4718592, 4751360, 4784128,
4816896,
4849664, 4882432
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
Hmm. I wonder where I got that 8193 number from... Maybe it's stuck in my
mind from a really old filesys I created... Lemme tinker around... Ah,
here it is: the -b flag, specifies the block size:
alexis:/export# mke2fs -b 1024 -m 0 -O none /dev/hdf1
mke2fs 1.19, 13-Jul-2000 for EXT2 FS 0.5b, 95/08/09
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
2444288 inodes, 19551136 blocks
0 blocks (0.00%) reserved for the super user
First data block=1
2387 block groups
8192 blocks per group, 8192 fragments per group
1024 inodes per group
Superblock backups stored on blocks:
8193, 16385, 24577, 32769, 40961, 49153, 57345, 65537, 73729, 81921,
90113, 98305, 106497, 114689, 122881, 131073, 139265, 147457,
155649,
163841, 172033, 180225, 188417, 196609, 204801, 212993, 221185,
229377, 237569, 245761, 253953, 262145, 270337, 278529, 286721,
294913, 303105, 311297, 319489, 327681, 335873, 344065, 352257,
360449, 368641, 376833, 385025, 393217, 401409, 409601, 417793,
425985, 434177, 442369, 450561, 458753, 466945, 475137, 483329,
491521, 499713, 507905, 516097, 524289, 532481, 540673, 548865,
557057, 565249, 573441, 581633, 589825, 598017, 606209, 614401,
622593, 630785, 638977, 647169, 655361, 663553, 671745, 679937,
688129, 696321, 704513, 712705, 720897, 729089, 737281, 745473,
753665, 761857, 770049, 778241, 786433, 794625, 802817, 811009, 819201,
827393, 835585, 843777, 851969, 860161, 868353, 876545, 884737, 892929,
901121, 909313, 917505, 925697, 933889, 942081, 950273, 958465,
966657, 974849, 983041, 991233, 999425, 1007617, 1015809, 1024001,
1032193,
....
19357697, 19365889, 19374081, 19382273, 19390465, 19398657,
19406849,
19415041, 19423233, 19431425, 19439617, 19447809, 19456001,
19464193,
19472385, 19480577, 19488769, 19496961, 19505153, 19513345,
19521537,
19529729, 19537921, 19546113
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
Hmm, that helped... It would help even more if you wrote down the flags
used to create the filesystem (yeah, I know, it's hard to find without
switching consoles, but in cases like this, it helps.)[3]
Also, if you can, look at the dumpe2fs man page -- you might get some clues
from there. Normal block sizes are 1024, 2048, and 4096 bytes. Most
likely, your inode group size hasn't changed, so if you can find the proper
block size and do a mke2fs -n, you're in business.
I'm willing to lend more of a hand, if you really need to recover the
drive... Otherwise, you did have recent backups, didn't you? ;)
--mec
[1] Heh -- I just learned all I ever wanted to know (and some stuff I
didn't) about filesystems last week -- my company is paying for me to take
Solaris Sysadmin classes at Sun. Lotsa interesting stuff, even if a lot is
review... I learned buttloads, however... Let's see how much I forget. :P
[2] Actually, the flag in Solaris is -N. Really damned nice to have,
however.
[3] Recording the flags is something that's highly reccomended in that
class. Yes, disks are cheap, and if it's damaged, it's probably cheaper to
buy a new disk... However, is it cheap to try and restore data from tape
and/or floppy? Most likely, if you can recover a superblock, you can at
least recover SOME data... Requires some knowledge of how a filesystem
works, however... Hmm, may be a good talk for the next NCLUG.
More information about the NCLUG
mailing list