8.1-RELEASE: ZFS data errors

Mike Carlson carlson39 at llnl.gov
Tue Nov 9 17:37:32 UTC 2010


On 11/09/2010 03:23 AM, Ivan Voras wrote:
> On 11/08/10 19:32, Mike Carlson wrote:
>
>> As soon as I create the volume and write data to it, it is reported as
>> being corrupted:
>>
>>     write# zpool create filevol001 da2 da3 da4 da5 da6 da7 da8
>> However, if I create a 'raidz' volume, no errors occur:
> A very interesting problem. Can you check with some other kind of volume
> manager that striping the data doesn't cause some unusual hardware
> interaction? Can you try, as an experiment, striping them all with
> gstripe (but you'll have to use a small stripe size like 16 KiB or 8 KiB)?
>
> _______________________________________________
> freebsd-fs at freebsd.org mailing list
> http://BLOCKEDlists.freebsd.org/mailman/listinfo/freebsd-fs
> To unsubscribe, send any mail to "freebsd-fs-unsubscribe at freebsd.org"
>
Sure:

    write# gstripe label -v -s 16384  data /dev/da2 /dev/da3 /dev/da4
    /dev/da5 /dev/da6 /dev/da7 /dev/da8
    Metadata value stored on /dev/da2.
    Metadata value stored on /dev/da3.
    Metadata value stored on /dev/da4.
    Metadata value stored on /dev/da5.
    Metadata value stored on /dev/da6.
    Metadata value stored on /dev/da7.
    Metadata value stored on /dev/da8.
    Done.
    write# newfs -O2 -U /dev/stripe/data
    /dev/stripe/data: 133522760.0MB (273454612256 sectors) block size
    16384, fragment size 2048
         using 627697 cylinder groups of 212.72MB, 13614 blks, 6848 inodes.
         with soft updates
    super-block backups (for fsck -b #) at:
    ...
    write# mount /dev/stripe/data /mnt
    write# df -h
    Filesystem            Size    Used   Avail Capacity  Mounted on
    /dev/da0s1a           1.7T     22G    1.6T     1%    /
    devfs                 1.0K    1.0K      0B   100%    /dev
    /dev/stripe/data      126T    4.0K    116T     0%    /mnt
    write# cd /tmp
    write# md5 /tmp/random.dat.1
    MD5 (/tmp/random.dat.1) = f795fa09e1b0975c0da0ec6e49544a36
    write# cp random.dat.1 /mnt/
    write# cp /mnt/random.dat.1 /mnt/random.dat.2
    write# cp /mnt/random.dat.1 /mnt/random.dat.3
    write# cp /mnt/random.dat.1 /mnt/random.dat.4
    write# cp /mnt/random.dat.1 /mnt/random.dat.5
    write# cp /mnt/random.dat.1 /mnt/random.dat.6
    write# md5 /mnt/*
    MD5 (/mnt/random.dat.1) = f795fa09e1b0975c0da0ec6e49544a36
    MD5 (/mnt/random.dat.2) = f795fa09e1b0975c0da0ec6e49544a36
    MD5 (/mnt/random.dat.3) = f795fa09e1b0975c0da0ec6e49544a36
    MD5 (/mnt/random.dat.4) = f795fa09e1b0975c0da0ec6e49544a36
    MD5 (/mnt/random.dat.5) = f795fa09e1b0975c0da0ec6e49544a36
    MD5 (/mnt/random.dat.6) = f795fa09e1b0975c0da0ec6e49544a36
    write# fsck /mnt
    fsck: Could not determine filesystem type
    write# fsck_ufs  /mnt
    ** /dev/stripe/data (NO WRITE)
    ** Last Mounted on /mnt
    ** Phase 1 - Check Blocks and Sizes
    Segmentation fault

So, the data appears to be okay, I wanted to run through a FSCK just to 
do it but that seg faulted. Otherwise, that data looks good.

Question, why did you recommend using a smaller stripe size? Is that to 
ensure a sample 1GB test file gets written across ALL disk members?


More information about the freebsd-fs mailing list