Replacing A zpool disk (Solaris ZSF)

A quick and dirty guide to replacing a faild rpool disk in a Solaris ZFS pool.
(rpool being a root pool )

This guide is geared towards a X86 root raid 1 mirror zfs pool disk. the process will be different for other setups (eg raidz or raid 0...)

PLEASE NOTE: this is a ruff and ready guide, i have quickly thrown it together, to remind my self. I will clean it up some day.

IF this busts you system its not my fault.

Check the status
Will look somehting liek this: pool: rpool state: ONLINE scrub: resilver completed after 0h3m with 0 errors on Mon Sep 28 16:52:43 2009 config:
 * 1) zpool status

NAME         STATE     READ WRITE CKSUM rpool         DEGRADED       0     0     0 mirror      DEGRADED       0     0     0 c3t0d0s0 ONLINE       0     0     0 c3t1d0s0 FAILED       0     0     0

errors: No known data errors

Detatch the failed disk

 * 1) zpool detach rpool c3t1d0s0  (id of failed disk)

Create a new partision
No fdisk table exists. The default partition for the disk is:
 * 1)  fdisk /dev/rdsk/c3t1d0p0

a 100% "SOLARIS System" partition

Type "y" to accept the default partition, otherwise type "n" to edit the partition table. y

Format the new partision
copy the partisions table (slice table) from the working disk to the new disk


 * 1) prtvtoc /dev/rdsk/c3t0d0s2 |fmthard -s - /dev/rdsk/c3t1d0s2

Attach the new disk

 * 1) zpool attach -f rpool  c3t0d0s0 c3t1d0s0

Check the status of the new disk
pool: rpool 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. scrub: resilver in progress for 0h0m, 0.49% done, 0h40m to go config:
 * 1) zpool status

NAME         STATE     READ WRITE CKSUM rpool        ONLINE       0     0     0 mirror     ONLINE       0     0     0 c3t0d0s0 ONLINE       0     0     0 c3t1d0s0 ONLINE       0     0     0

errors: No known data errors