Table of Contents
ZFS - Replace a Disk
- Offline the disk, if necessary, with the zpool offline command.
- Remove the disk to be replaced.
- Insert the replacement disk.
- Run the zpool replace command.
- Bring the disk online with the zpool online command.
Check the Pool Status
zpool status Pool1
returns:
pool: Pool1 state: DEGRADED 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 clear' or replace the device with 'zpool replace'. see: http://illumos.org/msg/ZFS-8000-9P scan: scrub repaired 0B in 21:37:28 with 0 errors on Sun Nov 15 21:37:28 2020 config: NAME STATE READ WRITE CKSUM Pool1 ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 gptid/2d35e96c-b611-11ea-be33-00d861fcb7d8 ONLINE 0 0 0 gptid/2d41dcbd-b611-11ea-be33-00d861fcb7d8 DEGRADED 0 0 40 too many errors gptid/2ddb5cb2-b611-11ea-be33-00d861fcb7d8 ONLINE 0 0 0 errors: No known data errors
NOTE: This shows that Pool1 is in a degraded state.
It tells me that the device gptid/2d41dcbd-b611-11ea-be33-00d861fcb7d8 is the culprit.
Determine Drive Identifier
glabel status | grep 2d41
returns:
ptid/2d41dcbd-b611-11ea-be33-00d861fcb7d8 N/A ada3p2
NOTE: This shows the device that is degraded and has too many errors is /dev/ada3.
Determine current Disks
ls -1 /dev/gptid/
returns:
2d35e96c-b611-11ea-be33-00d861fcb7d8 2d41dcbd-b611-11ea-be33-00d861fcb7d8 2dcf9d03-b611-11ea-be33-00d861fcb7d8 2ddb5cb2-b611-11ea-be33-00d861fcb7d8 b649914a-acc6-11ea-8ed5-00d861fcb7d8 b64bffb3-acc6-11ea-8ed5-00d861fcb7d8
Offline the Disk
Take the Broken Disk offline:
zpool offline Pool1 /dev/gptid/2d41dcbd-b611-11ea-be33-00d861fcb7d8
Replace the Physical Disk
Replace the physical disk, and check the status again, it should show the disk as offline now.
zpool status Pool1
returns:
pool: Pool1 state: DEGRADED 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 clear' or replace the device with 'zpool replace'. see: http://illumos.org/msg/ZFS-8000-9P scan: scrub repaired 0B in 21:37:28 with 0 errors on Sun Nov 15 21:37:28 2020 config: NAME STATE READ WRITE CKSUM Pool1 ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 gptid/2d35e96c-b611-11ea-be33-00d861fcb7d8 ONLINE 0 0 0 gptid/2d41dcbd-b611-11ea-be33-00d861fcb7d8 OFFLINE 0 0 40 too many errors gptid/2ddb5cb2-b611-11ea-be33-00d861fcb7d8 ONLINE 0 0 0 errors: No known data errors
Determine current Disks Again
This should not contain details of the newly installed disk.
ls -1 /dev/gptid/
returns:
1d41dcbd-b611-11ea-be33-00d861fcb7d8 2d35e96c-b611-11ea-be33-00d861fcb7d8 2dcf9d03-b611-11ea-be33-00d861fcb7d8 2ddb5cb2-b611-11ea-be33-00d861fcb7d8 b649914a-acc6-11ea-8ed5-00d861fcb7d8 b64bffb3-acc6-11ea-8ed5-00d861fcb7d8
NOTE: Notice that 1d41dcbd-b611-11ea-be33-00d861fcb7d8 is newly there compared to when this was originally checked earlier.
Also, the old disk 2d41dcbd-b611-11ea-be33-00d861fcb7d8 is probably gone too.
Do the Replacement
zpool replace POOLNAME OLDDRIVE NEWDRIVE zpool replace Pool1 /dev/gptid/2d41dcbd-b611-11ea-be33-00d861fcb7d8 /dev/gptid/1d41dcbd-b611-11ea-be33-00d861fcb7d8
Check the Status
It should now be rebuilding / resilvering.
zpool status Pool1
returns:
pool: Pool1 state: ONLINE status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scan: resilver in progress since Wed Aug 10 12:12:12 2016 241.4G scanned out of 8.55T at 432M/s, 6h12m to go 85.21G resilvered, 10.69% done config: NAME STATE READ WRITE CKSUM Pool1 ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 gptid/2d35e96c-b611-11ea-be33-00d861fcb7d8 ONLINE 0 0 0 gptid/1d41dcbd-b611-11ea-be33-00d861fcb7d8 ONLINE 0 0 0 (resilvering) gptid/2ddb5cb2-b611-11ea-be33-00d861fcb7d8 ONLINE 0 0 0 errors: No known data errors
NOTE: Once the resilver is complete the status should be back to normal.