8.1-RELEASE: ZFS data errors

Mike Carlson carlson39 at llnl.gov
Tue Nov 9 17:42:46 UTC 2010


On 11/09/2010 09:37 AM, Mike Carlson wrote:
> 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://BLOCKEDBLOCKEDlists.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?
> _______________________________________________
> 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"
>
Oh, I almost forgot, here is the ZFS version of that gstripe array:

    write# zpool create test01 /dev/stripe/data
    write# cp /tmp/random.dat.1 /test01/
    write# cp /test01/random.dat.1 /test01/random.dat.2
    write# cp /test01/random.dat.1 /test01/random.dat.3
    write# cp /test01/random.dat.1 /test01/random.dat.4
    write# cp /test01/random.dat.1 /test01/random.dat.5
    write# cp /test01/random.dat.1 /test01/random.dat.6
    write# md5 /test01/*
    MD5 (/test01/random.dat.1) = f795fa09e1b0975c0da0ec6e49544a36
    MD5 (/test01/random.dat.2) = f795fa09e1b0975c0da0ec6e49544a36
    MD5 (/test01/random.dat.3) = f795fa09e1b0975c0da0ec6e49544a36
    MD5 (/test01/random.dat.4) = f795fa09e1b0975c0da0ec6e49544a36
    MD5 (/test01/random.dat.5) = f795fa09e1b0975c0da0ec6e49544a36
    MD5 (/test01/random.dat.6) = f795fa09e1b0975c0da0ec6e49544a36
    write# zpool scrub
    write# zpool status
       pool: test01
      state: ONLINE
      scrub: scrub completed after 0h0m with 0 errors on Tue Nov  9
    09:41:34 2010
    config:

         NAME           STATE     READ WRITE CKSUM
         test01         ONLINE       0     0     0
           stripe/data  ONLINE       0     0     0

    errors: No known data errors

Again, no errors.


More information about the freebsd-fs mailing list