Message ID: ZFS-8000-K4

ZFS intent log read failure

Type:

Error

Severity:

Major

Description:

A ZFS intent log device could not be read.

Automated Response:

No automated response will be taken.

Impact:

The intent log(s) cannot be replayed.

Suggested Action for System Administrator

A ZFS intent log record could not be read due to an error. This may be due to a missing or broken log device, or a device within the pool may be experiencing I/O errors. The pool itself is not corrupt but is missing some pool changes that happened shortly before a power loss or system failure. These are pool changes that applications had requested to be written synchronously but had not been committed in the pool. This transaction group commit currently occurs every five seconds, and so typically at most five seconds worth of synchronous writes have been lost. ZFS itself cannot determine if the pool changes lost are critical to those applications running at the time of the system failure. This is a decision the administrator must make. You may want to consider mirroring log devices. First determine which pool is in error:

# zpool status -x
  pool: test
 state: FAULTED
status: One or more of the intent logs could not be read.
        Waiting for adminstrator intervention to fix the faulted pool.
action: Either restore the affected device(s) and run 'zpool online',
        or ignore the intent log records by running 'zpool clear'.
 scrub: none requested
config:

        NAME              STATE     READ WRITE CKSUM
        test              FAULTED      0     0     0  bad intent log
          c3t2d0          ONLINE       0     0     0
        logs              FAULTED      0     0     0  bad intent log
          c5t3d0          UNAVAIL      0     0     0  cannot open

There are two courses of action to resolve this problem. If the validity of the pool from an application perspective requires the pool changes then the log devices must be recovered. Make sure power and cables are connected and that the affected device is online. Then run zpool online and then zpool clear:

# zpool online test c5t3d0
# zpool clear test
# zpool status test
  pool: test
 state: ONLINE
 scrub: none requested
config:

        NAME              STATE     READ WRITE CKSUM
        test              ONLINE       0     0     0
          c3t2d0          ONLINE       0     0     0
        logs              ONLINE       0     0     0
          c5t3d0          ONLINE       0     0     0

errors: No known data errors

The second alternative action is to ignore the most recent pool changes that could not be read. To do this run zpool clear:

# zpool clear test
# zpool status test
  pool: test
 state: DEGRADED
status: One or more devices could not be opened.  Sufficient replicas exist for
        the pool to continue functioning in a degraded state.
action: Attach the missing device and online it using 'zpool online'.
   see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-2Q
 scrub: none requested
config:

        NAME              STATE     READ WRITE CKSUM
        test              DEGRADED     0     0     0
          c3t2d0          ONLINE       0     0     0
        logs              DEGRADED     0     0     0
          c5t3d0          UNAVAIL      0     0     0  cannot open

errors: No known data errors

Future log records will not use a failed log device but will be written to the main pool. You should fix or replace any failed log devices.

Details

The Message ID: ZFS-8000-K4 indicates that a log device is missing or cannot be read.