Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Oct 2012 20:39:36 +0300
From:      Heikki Suonsivu <heikki@suonsivu.net>
To:        FS@freebsd.org
Subject:   ZFS raidz2, errors in file?
Message-ID:  <507EED58.80409@suonsivu.net>

next in thread | raw e-mail | index | archive | help
Summary:  This could indicate that in some situations ZFS or FreeBSD 
ignore disk errors in some situations, or disks do not pass them to 
FreeBSD.

There are three SCSI timeouts all on different disks reported, though it 
seems unlikely they hit all three redundancies of a single block of 
single file, so the more likely scenario would be that there are other 
errors causing this, which are not reported or are ignored.  Also, 
timeouts should trigger retries.

SMART data indicates problems on two other disks, but no indication of 
those are seen in logs (the disks work, but SMART information indicates 
problems).  The fs is 8*3T pool on raidz2.

Further data below:

------------------------------------------------------------------------
zpool status -v
   pool: raid6
  state: ONLINE
status: One or more devices has experienced an error resulting in data
         corruption.  Applications may be affected.
action: Restore the file in question if possible.  Otherwise restore the
         entire pool from backup.
    see: http://www.sun.com/msg/ZFS-8000-8A
  scan: none requested
config:

         NAME        STATE     READ WRITE CKSUM
         raid6       ONLINE       0     0     0
           raidz2-0  ONLINE       0     0     0
             da0     ONLINE       0     0     0
             da1     ONLINE       0     0     0
             da2     ONLINE       0     0     0
             da3     ONLINE       0     0     0
             da4     ONLINE       0     0     0
             da5     ONLINE       0     0     0
             da6     ONLINE       0     0     0
             da7     ONLINE       0     0     0

errors: Permanent errors have been detected in the following files:

         /raid6/backup/rsnapshot/daily.1/foobar.net/users/mail/foo
------------------------------------------------------------------------

All disks online, so this is kind of odd.

One disk indeed has pending sector, not unusual and should be survivable:

------------------------------------------------------------------------
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE 
UPDATED  WHEN_FAILED RAW_VALUE
   1 Raw_Read_Error_Rate     0x002f   200   200   051    Pre-fail 
Always       -       0
   3 Spin_Up_Time            0x0027   162   154   021    Pre-fail 
Always       -       8891
   4 Start_Stop_Count        0x0032   100   100   000    Old_age 
Always       -       46
   5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail 
Always       -       0
   7 Seek_Error_Rate         0x002e   100   253   000    Old_age 
Always       -       0
   9 Power_On_Hours          0x0032   094   094   000    Old_age 
Always       -       4776
  10 Spin_Retry_Count        0x0032   100   253   000    Old_age 
Always       -       0
  11 Calibration_Retry_Count 0x0032   100   253   000    Old_age 
Always       -       0
  12 Power_Cycle_Count       0x0032   100   100   000    Old_age 
Always       -       43
192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always 
       -       40
193 Load_Cycle_Count        0x0032   196   196   000    Old_age   Always 
       -       13595
194 Temperature_Celsius     0x0022   119   106   000    Old_age   Always 
       -       33
196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always 
       -       0
197 Current_Pending_Sector  0x0032   200   200   000    Old_age   Always 
       -       1
198 Offline_Uncorrectable   0x0030   200   200   000    Old_age 
Offline      -       1
199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always 
       -       0
200 Multi_Zone_Error_Rate   0x0008   200   200   000    Old_age 
Offline      -       1

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
No self-tests have been logged.  [To run self-tests, use: smartctl -t]
------------------------------------------------------------------------

But there is no corresponding read error in /var/log/messages, which 
would indicate that FreeBSD never saw the error, or ignored it.

In addition, there seems to be ICRC DMA errors on da0.  Looks nasty, but 
only show up in SMART log, not in /var/log/messages.

------------------------------------------------------------------------
smartctl 5.43 2012-06-30 r3573 [FreeBSD 9.0-RELEASE-p3 amd64] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF INFORMATION SECTION ===
Model Family:     Hitachi Deskstar 7K3000
Device Model:     Hitachi HDS723030ALA640
Serial Number:    MK0331YHGVDK6A
LU WWN Device Id: 5 000cca 225cc00c7
Firmware Version: MKAOA5C0
User Capacity:    3,000,592,982,016 bytes [3.00 TB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   8
ATA Standard is:  ATA-8-ACS revision 4
Local Time is:    Wed Oct 17 20:03:05 2012 EEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x84) Offline data collection activity
                                         was suspended by an 
interrupting command from host.
                                         Auto Offline Data Collection: 
Enabled.
Self-test execution status:      (   0) The previous self-test routine 
completed
                                         without error or no self-test 
has ever
                                         been run.
Total time to complete Offline
data collection:                (29509) seconds.
Offline data collection
capabilities:                    (0x5b) SMART execute Offline immediate.
                                         Auto Offline data collection 
on/off support.
                                         Suspend Offline collection upon new
                                         command.
                                         Offline surface scan supported.
                                         Self-test supported.
                                         No Conveyance Self-test supported.
                                         Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                                         power-saving mode.
                                         Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                                         General Purpose Logging supported.
Short self-test routine
recommended polling time:        (   1) minutes.
Extended self-test routine
recommended polling time:        ( 492) minutes.
SCT capabilities:              (0x003d) SCT Status supported.
                                         SCT Error Recovery Control 
supported.
                                         SCT Feature Control supported.
                                         SCT Data Table supported.

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE 
UPDATED  WHEN_FAILED RAW_VALUE
   1 Raw_Read_Error_Rate     0x000b   100   100   016    Pre-fail 
Always       -       0
   2 Throughput_Performance  0x0005   136   136   054    Pre-fail 
Offline      -       83
   3 Spin_Up_Time            0x0007   125   125   024    Pre-fail 
Always       -       617 (Average 617)
   4 Start_Stop_Count        0x0012   100   100   000    Old_age 
Always       -       62
   5 Reallocated_Sector_Ct   0x0033   100   100   005    Pre-fail 
Always       -       0
   7 Seek_Error_Rate         0x000b   100   100   067    Pre-fail 
Always       -       0
   8 Seek_Time_Performance   0x0005   135   135   020    Pre-fail 
Offline      -       26
   9 Power_On_Hours          0x0012   100   100   000    Old_age 
Always       -       4570
  10 Spin_Retry_Count        0x0013   100   100   060    Pre-fail 
Always       -       0
  12 Power_Cycle_Count       0x0032   100   100   000    Old_age 
Always       -       30
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always 
       -       129
193 Load_Cycle_Count        0x0012   100   100   000    Old_age   Always 
       -       129
194 Temperature_Celsius     0x0002   166   166   000    Old_age   Always 
       -       36 (Min/Max 25/50)
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always 
       -       0
197 Current_Pending_Sector  0x0022   100   100   000    Old_age   Always 
       -       0
198 Offline_Uncorrectable   0x0008   100   100   000    Old_age 
Offline      -       0
199 UDMA_CRC_Error_Count    0x000a   200   200   000    Old_age   Always 
       -       112

SMART Error Log Version: 1
ATA Error Count: 112 (device log contains only the most recent five errors)
         CR = Command Register [HEX]
         FR = Features Register [HEX]
         SC = Sector Count Register [HEX]
         SN = Sector Number Register [HEX]
         CL = Cylinder Low Register [HEX]
         CH = Cylinder High Register [HEX]
         DH = Device/Head Register [HEX]
         DC = Device Command Register [HEX]
         ER = Error register [HEX]
         ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.

Error 112 occurred at disk power-on lifetime: 52 hours (2 days + 4 hours)
   When the command that caused the error occurred, the device was 
active or idle.

   After command completion occurred, registers were:
   ER ST SC SN CL CH DH
   -- -- -- -- -- -- --
   84 51 20 28 c5 ae 06  Error: ICRC, ABRT 32 sectors at LBA = 
0x06aec528 = 112117032

   Commands leading to the command that caused the error were:
   CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
   -- -- -- -- -- -- -- --  ----------------  --------------------
   35 03 f0 58 c4 ae 40 00   2d+04:00:39.416  WRITE DMA EXT
   35 03 20 38 c4 ae 40 00   2d+04:00:39.409  WRITE DMA EXT
   35 03 f0 48 c3 ae 40 00   2d+04:00:39.402  WRITE DMA EXT
   35 03 f0 58 c2 ae 40 00   2d+04:00:39.394  WRITE DMA EXT
   35 03 60 f8 c1 ae 40 00   2d+04:00:39.388  WRITE DMA EXT

Error 111 occurred at disk power-on lifetime: 52 hours (2 days + 4 hours)
   When the command that caused the error occurred, the device was 
active or idle.

   After command completion occurred, registers were:
   ER ST SC SN CL CH DH
   -- -- -- -- -- -- --
   84 51 30 08 c4 90 06  Error: ICRC, ABRT 48 sectors at LBA = 
0x0690c408 = 110150664

   Commands leading to the command that caused the error were:
   CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
   -- -- -- -- -- -- -- --  ----------------  --------------------
   35 03 f0 48 c3 90 40 00   2d+03:59:29.925  WRITE DMA EXT
   35 03 f0 58 c2 90 40 00   2d+03:59:29.917  WRITE DMA EXT
   35 03 60 f8 c1 90 40 00   2d+03:59:29.910  WRITE DMA EXT
   35 03 b0 48 c1 90 40 00   2d+03:59:29.907  WRITE DMA EXT
   35 03 f0 58 c0 90 40 00   2d+03:59:29.899  WRITE DMA EXT

Error 110 occurred at disk power-on lifetime: 52 hours (2 days + 4 hours)
   When the command that caused the error occurred, the device was 
active or idle.

   After command completion occurred, registers were:
   ER ST SC SN CL CH DH
   -- -- -- -- -- -- --
   84 51 20 28 47 90 05  Error: ICRC, ABRT 32 sectors at LBA = 
0x05904728 = 93341480

   Commands leading to the command that caused the error were:
   CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
   -- -- -- -- -- -- -- --  ----------------  --------------------
   35 da f0 58 46 90 40 00   2d+03:49:28.919  WRITE DMA EXT
   35 da 20 38 46 90 40 00   2d+03:49:28.917  WRITE DMA EXT
   35 da f0 48 45 90 40 00   2d+03:49:28.909  WRITE DMA EXT
   35 da f0 58 44 90 40 00   2d+03:49:28.901  WRITE DMA EXT
   35 da 20 38 44 90 40 00   2d+03:49:28.899  WRITE DMA EXT

Error 109 occurred at disk power-on lifetime: 52 hours (2 days + 4 hours)
   When the command that caused the error occurred, the device was 
active or idle.

   After command completion occurred, registers were:
   ER ST SC SN CL CH DH
   -- -- -- -- -- -- --
   84 51 10 38 e7 41 05  Error: ICRC, ABRT 16 sectors at LBA = 
0x0541e738 = 88205112

   Commands leading to the command that caused the error were:
   CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
   -- -- -- -- -- -- -- --  ----------------  --------------------
   35 03 f0 58 e6 41 40 00   2d+03:46:20.939  WRITE DMA EXT
   35 03 20 38 e6 41 40 00   2d+03:46:20.933  WRITE DMA EXT
   35 03 f0 48 e5 41 40 00   2d+03:46:20.926  WRITE DMA EXT
   35 03 f0 58 e4 41 40 00   2d+03:46:20.921  WRITE DMA EXT
   35 03 20 38 e4 41 40 00   2d+03:46:20.916  WRITE DMA EXT

Error 108 occurred at disk power-on lifetime: 52 hours (2 days + 4 hours)
   When the command that caused the error occurred, the device was 
active or idle.

   After command completion occurred, registers were:
   ER ST SC SN CL CH DH
   -- -- -- -- -- -- --
   84 51 10 28 0a 2f 05  Error: ICRC, ABRT 16 sectors at LBA = 
0x052f0a28 = 86968872

   Commands leading to the command that caused the error were:
   CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
   -- -- -- -- -- -- -- --  ----------------  --------------------
   35 03 f0 48 09 2f 40 00   2d+03:45:06.250  WRITE DMA EXT
   35 03 f0 58 08 2f 40 00   2d+03:45:06.242  WRITE DMA EXT
   35 03 20 38 08 2f 40 00   2d+03:45:06.238  WRITE DMA EXT
   35 03 f0 48 07 2f 40 00   2d+03:45:06.231  WRITE DMA EXT
   35 03 08 40 bc 25 40 00   2d+03:45:06.225  WRITE DMA EXT

SMART Self-test log structure revision number 1
No self-tests have been logged.  [To run self-tests, use: smartctl -t]


SMART Selective self-test log data structure revision number 1
  SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
     1        0        0  Not_testing
     2        0        0  Not_testing
     3        0        0  Not_testing
     4        0        0  Not_testing
     5        0        0  Not_testing
Selective self-test flags (0x0):
   After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
------------------------------------------------------------------------

These only show up in disk's SMART log, not as errors in other logs 
(logs exists for all the history of the system).  These do not seem to 
have passed to the FreeBSD, or FreeBSD has ignored the errors.

 From logs, I can find da3, da4, da6 all have reported scsi timeout once 
(different times, within one month in July.

They all look like this, one case for each of the disks:

------------------------------------------------------------------------
Jul 24 12:16:55 tila kernel: (da6:mps0:0:6:0): SCSI command timeout on 
device handle 0x000d SMID 699
Jul 24 12:16:55 tila kernel: (da6:mps0:0:6:0): SCSI command timeout on 
device handle 0x000d SMID 419
Jul 24 12:16:55 tila kernel: (da6:mps0:0:6:0): SCSI command timeout on 
device handle 0x000d SMID 359
Jul 24 12:16:55 tila kernel: (da6:mps0:0:6:0): SCSI command timeout on 
device handle 0x000d SMID 472
Jul 24 12:16:55 tila kernel: (da6:mps0:0:6:0): SCSI command timeout on 
device handle 0x000d SMID 124
Jul 24 12:16:55 tila kernel: (da6:mps0:0:6:0): SCSI command timeout on 
device handle 0x000d SMID 762
Jul 24 12:16:55 tila kernel: (da6:mps0:0:6:0): SCSI command timeout on 
device handle 0x000d SMID 243
Jul 24 12:16:55 tila kernel: (da6:mps0:0:6:0): SCSI command timeout on 
device handle 0x000d SMID 890
Jul 24 12:16:55 tila kernel: (da6:mps0:0:6:0): SCSI command timeout on 
device handle 0x000d SMID 204
Jul 24 12:16:55 tila kernel: (da6:mps0:0:6:0): SCSI command timeout on 
device handle 0x000d SMID 2
Jul 24 12:16:55 tila kernel: (da6:mps0:0:6:0): SCSI command timeout on 
device handle 0x000d SMID 291
Jul 24 12:16:55 tila kernel: mps0: (0:6:0) terminated ioc 804b scsi 0 
state c xfer 0
Jul 24 12:16:55 tila kernel: mps0: mpssas_abort_complete: abort request 
on handle 0x0d SMID 699 complete
Jul 24 12:16:55 tila kernel: mps0: mpssas_complete_tm_request: sending 
deferred task management request for handle 0x0d SMID 419
Jul 24 12:16:55 tila kernel: mps0: mpssas_abort_complete: abort request 
on handle 0x0d SMID 419 complete
Jul 24 12:16:55 tila kernel: mps0: mpssas_complete_tm_request: sending 
deferred task management request for handle 0x0d SMID 359
Jul 24 12:16:55 tila kernel: mps0: mpssas_abort_complete: abort request 
on handle 0x0d SMID 359 complete
Jul 24 12:16:55 tila kernel: mps0: mpssas_complete_tm_request: sending 
deferred task management request for handle 0x0d SMID 472
Jul 24 12:16:55 tila kernel: mps0: mpssas_abort_complete: abort request 
on handle 0x0d SMID 472 complete
Jul 24 12:16:55 tila kernel: mps0: mpssas_complete_tm_request: sending 
deferred task management request for handle 0x0d SMID 124
Jul 24 12:16:55 tila kernel: mps0: mpssas_abort_complete: abort request 
on handle 0x0d SMID 124 complete
Jul 24 12:16:55 tila kernel: mps0: mpssas_complete_tm_request: sending 
deferred task management request for handle 0x0d SMID 762
Jul 24 12:16:55 tila kernel: mps0: mpssas_abort_complete: abort request 
on handle 0x0d SMID 762 complete
Jul 24 12:16:55 tila kernel: mps0: mpssas_complete_tm_request: sending 
deferred task management request for handle 0x0d SMID 243
Jul 24 12:16:55 tila kernel: mps0: mpssas_abort_complete: abort request 
on handle 0x0d SMID 243 complete
Jul 24 12:16:55 tila kernel: mps0: mpssas_complete_tm_request: sending 
deferred task management request for handle 0x0d SMID 890
Jul 24 12:16:55 tila kernel: mps0: mpssas_abort_complete: abort request 
on handle 0x0d SMID 890 complete
Jul 24 12:16:55 tila kernel: mps0: mpssas_complete_tm_request: sending 
deferred task management request for handle 0x0d SMID 204
Jul 24 12:16:55 tila kernel: mps0: mpssas_abort_complete: abort request 
on handle 0x0d SMID 204 complete
Jul 24 12:16:55 tila kernel: mps0: mpssas_complete_tm_request: sending 
deferred task management request for handle 0x0d SMID 2
Jul 24 12:16:55 tila kernel: mps0: mpssas_abort_complete: abort request 
on handle 0x0d SMID 2 complete
Jul 24 12:16:55 tila kernel: mps0: mpssas_complete_tm_request: sending 
deferred task management request for handle 0x0d SMID 291
Jul 24 12:16:55 tila kernel: mps0: mpssas_abort_complete: abort request 
on handle 0x0d SMID 291 complete
Jul 24 12:16:55 tila kernel: (da6:mps0:0:6:0): WRITE(16). CDB: 8a 0 0 0 
0 1 4a 17 dc 5e 0 0 0 57 0 0
Jul 24 12:16:55 tila kernel: (da6:mps0:0:6:0): CAM status: SCSI Status Error
Jul 24 12:16:55 tila kernel: (da6:mps0:0:6:0): SCSI status: Check Condition
Jul 24 12:16:55 tila kernel: (da6:mps0:0:6:0): SCSI sense: UNIT 
ATTENTION asc:29,0 (Power on, reset, or bus device reset occurred)
Jul 24 12:16:56 tila kernel: (da6:mps0:0:6:0): WRITE(10). CDB: 2a 0 28 0 
85 fb 0 0 1 0
Jul 24 12:16:56 tila kernel: (da6:mps0:0:6:0): CAM status: SCSI Status Error
Jul 24 12:16:56 tila kernel: (da6:mps0:0:6:0): SCSI status: Check Condition
Jul 24 12:16:56 tila kernel: (da6:mps0:0:6:0): SCSI sense: UNIT 
ATTENTION asc:29,0 (Power on, reset, or bus device reset occurred)
------------------------------------------------------------------------

If the da0 ICRC errors would have been seen by ZFS, it should have made 
a) note of that in some log?  b) retried write?  c) Something else?  If 
we assume that the disk firmware is broken and does not report these to 
OS, so da0 might be corrupt.  But that should still be ok with raidz2.

We do have 3 random SCSI timeouts, which were seen by FreeBSD, and thus 
should have prompted ZFS do handle the errors, and one read error on 
data, which is not reported as read error in any log, other than disk's 
SMART info says so.

Is it possible to get more information, which block of the file is 
corrupt, on which disks the offending blocks reside, and similar 
information?








Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?507EED58.80409>