ext3 + fs > 2Tbyte

Vincent McIntyre Vince.McIntyre at atnf.csiro.au
Fri Nov 4 01:17:16 UTC 2005


Hi again

I unplugged the original xraid and did some tests on a non-production one,
building larger and larger filesystems, mounting, & dismounting.
I can reproduce the problem with this sequence:

* boot with xraid device plugged in, kernel 2.6.7-1-686-smp
     (packaged as 2.6.7-1.backports.org.1)
* install a gpt disklabel with parted (-1.6.24 rather than 1.6.19)
* make an ext2 filesystem as big as the disk with parted
* mount - it mounts ok
* umount
* tune2fs -j (-1.38)
* mount - it mounts ok (-2.12)
* umount (-2.12)
* reboot
* try to mount - it fails.
     (the filesystem is not mentioned in /etc/fstab, the system should
      not be attempting to mount it of fsck it at boot time)

No files were written to the filesystem during the test sequence.

I have not yet tried filesystems smaller than 2Tb across reboots.
I expect it will work, but I will try that shortly to check.


findsuper tells me there are superblocks, but fs_blk_sz changes (!?)
# /root/e2fsprogs-1.38/misc/findsuper /dev/sdb1
starting at 0, with 512 byte increments
        thisoff     block fs_blk_sz  blksz grp last_mount
          17920        17 586057719  4096    0 Thu Jan  1 10:00:00 1970
      134234624    131088 586057719  4096    1 Thu Jan  1 10:00:00 1970
      134235648    131089 586057719  4096    1 Thu Jan  1 10:00:00 1970
      209733120    204817   1023983  1024   25 Thu Jan  1 10:00:00 1970
      226510336    221201   1023983  1024   27 Thu Jan  1 10:00:00 1970
      402670080    393232 586057719  4096    3 Thu Jan  1 10:00:00 1970
      402671104    393233 586057719  4096    3 Thu Jan  1 10:00:00 1970
      411059712    401425   1023983  1024   49 Thu Jan  1 10:00:00 1970
      671105536    655376 586057719  4096    5 Thu Jan  1 10:00:00 1970
      671106560    655377 586057719  4096    5 Thu Jan  1 10:00:00 1970
      679495168    663569   1023983  1024   81 Thu Jan  1 10:00:00 1970
      939540992    917520 586057719  4096    7 Thu Jan  1 10:00:00 1970
      939542016    917521 586057719  4096    7 Thu Jan  1 10:00:00 1970
     1207976448   1179664 586057719  4096    9 Thu Jan  1 10:00:00 1970
     1207977472   1179665 586057719  4096    9 Thu Jan  1 10:00:00 1970
     3355460096   3276816 586057719  4096   25 Thu Jan  1 10:00:00 1970
     3355461120   3276817 586057719  4096   25 Thu Jan  1 10:00:00 1970
     3623895552   3538960 586057719  4096   27 Thu Jan  1 10:00:00 1970
     3623896576   3538961 586057719  4096   27 Thu Jan  1 10:00:00 1970
     6576685568   6422544 586057719  4096   49 Thu Jan  1 10:00:00 1970
     6576686592   6422545 586057719  4096   49 Thu Jan  1 10:00:00 1970
    10871652864  10616848 586057719  4096   81 Thu Jan  1 10:00:00 1970
    10871653888  10616849 586057719  4096   81 Thu Jan  1 10:00:00 1970
    16777232896  16384016 586057719  4096  125 Thu Jan  1 10:00:00 1970
    16777233920  16384017 586057719  4096  125 Thu Jan  1 10:00:00 1970
^C
This is not looking good...

Your nice od trick tells me slightly different locations for the
superblock signatures -
# od -Ax -tx4 /dev/sdb1 | \
   grep "^[0-9a-f]*30 [0-9a-f]* [0-9a-f]* 000[1-3]ef53 "
004630 436a93dd 001e0000 0001ef53 00000001
8004630 00000000 001e0000 0001ef53 00000001
c804630 00000000 001e0000 0001ef53 00000001
d804630 00000000 001e0000 0001ef53 00000001
18004630 00000000 001e0000 0001ef53 00000001
18804630 00000000 001e0000 0001ef53 00000001
28004630 00000000 001e0000 0001ef53 00000001
28804630 00000000 001e0000 0001ef53 00000001
38004630 00000000 001e0000 0001ef53 00000001
48004630 00000000 001e0000 0001ef53 00000001
c8004630 00000000 001e0000 0001ef53 00000001
d8004630 00000000 001e0000 0001ef53 00000001
88004630 00000000 001e0000 0001ef53 00000001
^C

0x004630 corresponds to byte offset 17968, 48 bytes away.
Is this explainable by the position of the superblock signature within
the disk block?
0x8004630 corresponds to 134220222, delta=14400. This is confusing me.

So I tried a few e2fsck runs. I know I'm probably being dense but none
of these worked:
e2fsck -n -b 16        -B 4096 /dev/sdb1
e2fsck -n -b 17        -B 4096 /dev/sdb1
e2fsck -n -b 18        -B 4096 /dev/sdb1
e2fsck -n -b 204816    -B 1024 /dev/sdb1
e2fsck -n -b 204817    -B 1024 /dev/sdb1
e2fsck -n -b 204818    -B 1024 /dev/sdb1
e2fsck -n -b 221200    -B 1024 /dev/sdb1
e2fsck -n -b 221201    -B 1024 /dev/sdb1
e2fsck -n -b 221202    -B 1024 /dev/sdb1
e2fsck -n -b 1179664   -B 4096 /dev/sdb1
e2fsck -n -b 1179665   -B 4096 /dev/sdb1
e2fsck -n -b 6422544   -B 4096 /dev/sdb1
e2fsck -n -b 6422545   -B 4096 /dev/sdb1
e2fsck -n -b 10616848  -B 4096 /dev/sdb1
e2fsck -n -b 10616849  -B 4096 /dev/sdb1

(The e2fsck manpage could be a tiny bit clearer in that - I think -
  it means you to use -b <blocknumber>, not -b <offset_to_superblock>)

oh, and just trying to mount does not work, as one might expect.
# mount -text2 /dev/sdb1 /tmp/a
mount: wrong fs type, bad option, bad superblock on /dev/sdb1,
        or too many mounted file systems
        (aren't you trying to mount an extended partition,
        instead of some logical partition inside?)

I did straces of the e2fsck before and after the reboot; would it help
to send those?

Thanks again
Vince




More information about the Ext3-users mailing list