Run 'zpool status -x' to determine which pool has experienced
errors:
# zpool status
pool: test
state: ONLINE
status: One or more devices has experienced an unrecoverable error. An
attempt was made to correct the error. Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
using 'zpool online' or replace the device with 'zpool replace'.
see: https://zfsonlinux.com/msg/ZFS-8000-9P
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
test ONLINE 0 0 0
mirror ONLINE 0 0 0
c0t0d0 ONLINE 0 0 2
c0t0d1 ONLINE 0 0 0
errors: No known data errors
Find the device with a non-zero error count for READ, WRITE, or CKSUM.
This indicates that the device has experienced a read I/O error, write I/O
error, or checksum validation error. Because the device is part of a mirror or
RAID-Z device, ZFS was able to recover from the error and subsequently repair
the damaged data.
If these errors persist over a period of time, ZFS may determine the
device is faulty and mark it as such. However, these error counts may or may
not indicate that the device is unusable. It depends on how the errors were
caused, which the administrator can determine in advance of any ZFS diagnosis.
For example, the following cases will all produce errors that do not indicate
potential device failure:
- A network attached device lost connectivity but has now
recovered>
- A device suffered from a bit flip, an expected event over long
periods of time>
- An administrator accidentally wrote over a portion of the disk using
another program>
In these cases, the presence of errors does not indicate that the
device is likely to fail in the future, and therefore does not need to be
replaced. If this is the case, then the device errors should be cleared using
'zpool clear':
# zpool clear test c0t0d0
On the other hand, errors may very well indicate that the device has
failed or is about to fail. If there are continual I/O errors to a device that
is otherwise attached and functioning on the system, it most likely needs to be
replaced. The administrator should check the system log for any driver
messages that may indicate hardware failure. If it is determined that the
device needs to be replaced, then the 'zpool replace' command should be
used:
# zpool replace test c0t0d0 c0t0d2
This will attach the new device to the pool and begin resilvering data
to it. Once the resilvering process is complete, the old device will
automatically be removed from the pool, at which point it can safely be removed
from the system. If the device needs to be replaced in-place (because there are
no available spare devices), the original device can be removed and replaced
with a new device, at which point a different form of 'zpool replace' can be
used:
# zpool replace test c0t0d0
This assumes that the original device at 'c0t0d0' has been replaced
with a new device under the same path, and will be replaced
appropriately.
You can monitor the progress of the resilvering operation by using the
'zpool status -x' command:
# zpool status -x
pool: test
state: DEGRADED
status: One or more devices is currently being replaced. The pool may not be
providing the necessary level of replication.
action: Wait for the resilvering operation to complete
scrub: resilver in progress, 0.14% done, 0h0m to go
config:
NAME STATE READ WRITE CKSUM
test ONLINE 0 0 0
mirror ONLINE 0 0 0
replacing ONLINE 0 0 0
c0t0d0 ONLINE 0 0 3
c0t0d2 ONLINE 0 0 0 58.5K resilvered
c0t0d1 ONLINE 0 0 0
errors: No known data errors