Yousuf wrote:
> sco cannot mount one of my (critical) filesystems.
> running fsck -ofull yields the following:
> Phase 1 - Check Blocks and Sizes
> DANGER: Filesystem being checked is larger than the device in which
> it is stored (/dev/ru2). The filesystem is 18311029K while the
> device is 18303814K. Backup filesystem and recreate as soon as ossible.
> ** Phase 2 - Check Pathnames
> ** Phase 3 - Check Connectivity
> ** Phase 4 - Check Reference Counts
> ** Phase 5 - Check Synchronous Write Log
> ** Phase 6 - Check Free List Bitmap
> CANNOT READ: BLK 36615806
> CONTINUE? [yn] n
The block number it's complaining about is in 1/2K blocks. In 1K units,
it's at 18307903K into the division. Since the size of the division is
18303814K, naturally `fsck` cannot read data at offset 18307903K.
> any tips on how i can recover it?
Do what it says: back up the filesystem, recreate it, and restore. To
back it up you will need to mount it read-only:

mount -r /dev/u2 /u2

Once you've made a verified backup, recreate the filesystem. First make
sure it is unmounted. Then run:

divvy /dev/u2

Use the "c[reate]" command to remake the filesystem. Then mount it and
restore the backup.

You may have lost up to about 7MB of files (the difference between the
size of the division and the filesystem structure within it). Likely
much less, because the filesystem will have started behaving weirdly as
soon as you hit the edge of reality.

The only way I know of for a filesystem to get misshapen like this is if
someone manually ran:

mkfs /dev/u2 36622058 # don't do this!

This would complain about the size mismatch, unless you also used the
"-y" flag to force it. Forcing `mkfs -y` with a miscalculated size is a
self-inflicted injury...